* [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console
@ 2009-04-07 12:31 Daniel Gorsulowski
2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski
2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 2 replies; 8+ messages in thread
From: Daniel Gorsulowski @ 2009-04-07 12:31 UTC (permalink / raw)
To: u-boot
This patch bases on patch of Ulf Samuelsson
([PATCH 1/1] ARM: Add command to control coloured led from the console,
Wed Jan 7 21:09:55 CET 2009)
It allows any board implementing the user LED API
to control the LEDs from the console.
led [ 1 | 2 | 3 | 4 | 5 | all ] [ on | off ]
Adding configuration item CONFIG_CMD_LED enables the command.
The items CONFIG_LED1...5 configure the associated gpio-pins.
Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu>
---
common/Makefile | 1 +
common/cmd_led.c | 105 +++++++++++++++++++++++++++++++++++++++++
cpu/arm926ejs/at91/Makefile | 1 +
cpu/arm926ejs/at91/user_led.c | 102 +++++++++++++++++++++++++++++++++++++++
include/user_led.h | 60 +++++++++++++++++++++++
5 files changed, 269 insertions(+), 0 deletions(-)
create mode 100644 common/cmd_led.c
create mode 100644 cpu/arm926ejs/at91/user_led.c
create mode 100644 include/user_led.h
diff --git a/common/Makefile b/common/Makefile
index b9f4ca7..e0f571c 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -103,6 +103,7 @@ COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o
COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o
COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
+COBJS-$(CONFIG_CMD_LED) += cmd_led.o
COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o
COBJS-y += cmd_load.o
COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o
diff --git a/common/cmd_led.c b/common/cmd_led.c
new file mode 100644
index 0000000..248f3a9
--- /dev/null
+++ b/common/cmd_led.c
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright 2008
+ * Ulf Samuelsson <ulf.samuelsson@atmel.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * This file provides a shell like 'test' function to return
+ * true/false from an integer or string compare of two memory
+ * locations or a location and a scalar/literal.
+ * A few parts were lifted from bash 'test' command
+ */
+
+#include <common.h>
+#include <config.h>
+#include <command.h>
+#include <user_led.h>
+
+int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ int led;
+
+ /* Validate arguments */
+ if ((argc != 3)) {
+ printf("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+ if (strcmp(argv[1], "1") == 0) {
+ led = (1 << 0);
+ } else if (strcmp(argv[1], "2") == 0) {
+ led = (1 << 1);
+ } else if (strcmp(argv[1], "3") == 0) {
+ led = (1 << 2);
+ } else if (strcmp(argv[1], "4") == 0) {
+ led = (1 << 3);
+ } else if (strcmp(argv[1], "5") == 0) {
+ led = (1 << 4);
+ } else if (strcmp(argv[1], "all") == 0) {
+ led = 31;
+ } else {
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+
+ if (strcmp(argv[2], "off") == 0) {
+#ifdef CONFIG_LED1
+ if(led & 1) user_LED1_off();
+#endif
+#ifdef CONFIG_LED2
+ if(led & 2) user_LED2_off();
+#endif
+#ifdef CONFIG_LED3
+ if(led & 4) user_LED3_off();
+#endif
+#ifdef CONFIG_LED4
+ if(led & 8) user_LED4_off();
+#endif
+#ifdef CONFIG_LED5
+ if(led & 16) user_LED5_off();
+#endif
+ } else if (strcmp(argv[2], "on") == 0) {
+#ifdef CONFIG_LED1
+ if(led & 1) user_LED1_on();
+#endif
+#ifdef CONFIG_LED2
+ if(led & 2) user_LED2_on();
+#endif
+#ifdef CONFIG_LED3
+ if(led & 4) user_LED3_on();
+#endif
+#ifdef CONFIG_LED4
+ if(led & 8) user_LED4_on();
+#endif
+#ifdef CONFIG_LED5
+ if(led & 16) user_LED5_on();
+#endif
+ } else {
+ printf ("Usage:\n%s\n", cmdtp->usage);
+ return 1;
+ }
+ return 0;
+}
+
+U_BOOT_CMD(
+ led, 3, 1, do_led,
+ "[1|2|3|4|5|all] [on|off]",
+ "[1|2|3|4|5|all] [on|off] sets/clears led 1,2,3,4,5"
+);
diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile
index 34e7461..f404cf1 100644
--- a/cpu/arm926ejs/at91/Makefile
+++ b/cpu/arm926ejs/at91/Makefile
@@ -55,6 +55,7 @@ COBJS-y += at91sam9rl_serial.o
COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o
endif
COBJS-$(CONFIG_AT91_LED) += led.o
+COBJS-$(CONFIG_USER_LED) += user_led.o
COBJS-y += timer.o
SOBJS = lowlevel_init.o
diff --git a/cpu/arm926ejs/at91/user_led.c b/cpu/arm926ejs/at91/user_led.c
new file mode 100644
index 0000000..a5dc197
--- /dev/null
+++ b/cpu/arm926ejs/at91/user_led.c
@@ -0,0 +1,102 @@
+/*
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/arch/at91sam9263.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/io.h>
+
+void user_LED_init(void)
+{
+ /* Enable clock */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB |
+ 1 << AT91SAM9263_ID_PIOCDE);
+
+ at91_set_gpio_output(CONFIG_LED1, 1);
+ at91_set_gpio_output(CONFIG_LED2, 1);
+
+ at91_set_gpio_value(CONFIG_LED1, 1);
+ at91_set_gpio_value(CONFIG_LED2, 1);
+}
+
+#ifdef CONFIG_LED1
+void user_LED1_on(void)
+{
+ at91_set_gpio_value(CONFIG_LED1, 0);
+}
+
+void user_LED1_off(void)
+{
+ at91_set_gpio_value(CONFIG_LED1, 1);
+}
+#endif
+
+#ifdef CONFIG_LED2
+void user_LED2_on(void)
+{
+ at91_set_gpio_value(CONFIG_LED2, 0);
+}
+
+void user_LED2_off(void)
+{
+ at91_set_gpio_value(CONFIG_LED2, 1);
+}
+#endif
+
+#ifdef CONFIG_LED3
+void user_LED3_on(void)
+{
+ at91_set_gpio_value(CONFIG_LED3, 0);
+}
+
+void user_LED3_off(void)
+{
+ at91_set_gpio_value(CONFIG_LED3, 1);
+}
+#endif
+
+#ifdef CONFIG_LED4
+void user_LED4_on(void)
+{
+ at91_set_gpio_value(CONFIG_LED4, 0);
+}
+
+void user_LED4_off(void)
+{
+ at91_set_gpio_value(CONFIG_LED4, 1);
+}
+#endif
+
+#ifdef CONFIG_LED5
+void user_LED5_on(void)
+{
+ at91_set_gpio_value(CONFIG_LED5, 0);
+}
+
+void user_LED5_off(void)
+{
+ at91_set_gpio_value(CONFIG_LED5, 1);
+}
+#endif
diff --git a/include/user_led.h b/include/user_led.h
new file mode 100644
index 0000000..e0b808f
--- /dev/null
+++ b/include/user_led.h
@@ -0,0 +1,60 @@
+/*
+ * (C) Copyright 2008
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _USER_LED_H_
+#define _USER_LED_H_
+
+#ifdef CONFIG_USER_LED
+
+/*
+ * user LEDs API
+ */
+#ifndef __ASSEMBLY__
+extern void user_LED_init(void);
+extern void user_LED1_on(void);
+extern void user_LED1_off(void);
+extern void user_LED2_on(void);
+extern void user_LED2_off(void);
+extern void user_LED3_on(void);
+extern void user_LED3_off(void);
+extern void user_LED4_on(void);
+extern void user_LED4_off(void);
+extern void user_LED5_on(void);
+extern void user_LED5_off(void);
+#else
+ .extern user_LED_init
+ .extern user_LED1_on
+ .extern user_LED1_off
+ .extern user_LED2_on
+ .extern user_LED2_off
+ .extern user_LED3_on
+ .extern user_LED3_off
+ .extern user_LED4_on
+ .extern user_LED4_off
+ .extern user_LED5_on
+ .extern user_LED5_off
+#endif
+
+#endif /* CONFIG_USER_LED */
+
+#endif /* _USER_LED_H_ */
--
1.6.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh
2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski
@ 2009-04-07 12:31 ` Daniel Gorsulowski
2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 8+ messages in thread
From: Daniel Gorsulowski @ 2009-04-07 12:31 UTC (permalink / raw)
To: u-boot
This patch adds support for MEESC board of esd gmbh.
The MEESC is based on an Atmel AT91SAM9263 SoC.
Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu>
---
MAINTAINERS | 4 +
MAKEALL | 1 +
Makefile | 3 +
board/esd/meesc/Makefile | 54 ++++++++
board/esd/meesc/config.mk | 1 +
board/esd/meesc/meesc.c | 300 +++++++++++++++++++++++++++++++++++++++++++++
board/esd/meesc/meesc.h | 32 +++++
include/configs/meesc.h | 191 ++++++++++++++++++++++++++++
8 files changed, 586 insertions(+), 0 deletions(-)
create mode 100644 board/esd/meesc/Makefile
create mode 100644 board/esd/meesc/config.mk
create mode 100644 board/esd/meesc/meesc.c
create mode 100644 board/esd/meesc/meesc.h
create mode 100644 include/configs/meesc.h
diff --git a/MAINTAINERS b/MAINTAINERS
index 03d59b9..b5ec88b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -525,6 +525,10 @@ Peter Figuli <peposh@etc.sk>
wepep250 xscale
+Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+
+ meesc ARM926EJS (AT91SAM9263 SoC)
+
Marius Gr?ger <mag@sysgo.de>
impa7 ARM720T (EP7211)
diff --git a/MAKEALL b/MAKEALL
index e4eb42b..20bde48 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -580,6 +580,7 @@ LIST_at91=" \
cmc_pu2 \
csb637 \
kb9202 \
+ meesc \
mp2usb \
m501sk \
"
diff --git a/Makefile b/Makefile
index 49b83c0..f78dd25 100644
--- a/Makefile
+++ b/Makefile
@@ -2747,6 +2747,9 @@ at91sam9rlek_config : unconfig
fi;
@$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91
+meesc_config : unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm926ejs meesc esd at91
+
########################################################################
## ARM Integrator boards - see doc/README-integrator for more info.
integratorap_config \
diff --git a/board/esd/meesc/Makefile b/board/esd/meesc/Makefile
new file mode 100644
index 0000000..b7f60fa
--- /dev/null
+++ b/board/esd/meesc/Makefile
@@ -0,0 +1,54 @@
+#
+# (C) Copyright 2003-2008
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# (C) Copyright 2008
+# Stelian Pop <stelian.pop@leadtechdesign.com>
+# Lead Tech Design <www.leadtechdesign.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB = $(obj)lib$(BOARD).a
+
+COBJS-y += $(BOARD).o
+
+SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS := $(addprefix $(obj),$(COBJS-y))
+SOBJS := $(addprefix $(obj),$(SOBJS))
+
+$(LIB): $(obj).depend $(OBJS) $(SOBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+
+clean:
+ rm -f $(SOBJS) $(OBJS)
+
+distclean: clean
+ rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/esd/meesc/config.mk b/board/esd/meesc/config.mk
new file mode 100644
index 0000000..9ce161e
--- /dev/null
+++ b/board/esd/meesc/config.mk
@@ -0,0 +1 @@
+TEXT_BASE = 0x21f00000
diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c
new file mode 100644
index 0000000..390d52f
--- /dev/null
+++ b/board/esd/meesc/meesc.c
@@ -0,0 +1,300 @@
+/*
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * (C) Copyright 2009
+ * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+ * esd electronic system design gmbh <www.esd.eu>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include "meesc.h"
+#include <common.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91sam9263.h>
+#include <asm/arch/at91sam9263_matrix.h>
+#include <asm/arch/at91sam9_smc.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/io.h>
+#include <asm/arch/hardware.h>
+#include <nand.h>
+#include <dataflash.h>
+#include <netdev.h>
+#include <user_led.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+#ifdef CONFIG_CMD_NAND
+static void meesc_nand_hw_init(void)
+{
+ unsigned long csa;
+
+ /* Enable CS3 */
+ csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
+ at91_sys_write(AT91_MATRIX_EBI0CSA,
+ csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA);
+
+ /* Configure SMC CS3 for NAND/SmartMedia */
+ at91_sys_write(AT91_SMC_SETUP(3),
+ AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) |
+ AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0));
+ at91_sys_write(AT91_SMC_PULSE(3),
+ AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
+ AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3));
+ at91_sys_write(AT91_SMC_CYCLE(3),
+ AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5));
+ at91_sys_write(AT91_SMC_MODE(3),
+ AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
+ AT91_SMC_EXNWMODE_DISABLE |
+#ifdef CONFIG_SYS_NAND_DBW_16
+ AT91_SMC_DBW_16 |
+#else /* CONFIG_SYS_NAND_DBW_8 */
+ AT91_SMC_DBW_8 |
+#endif
+ AT91_SMC_TDF_(2));
+
+ /* Peripheral Clock Enable Register */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOA |
+ 1 << AT91SAM9263_ID_PIOCDE);
+
+ /* Configure RDY/BSY */
+ at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+ /* Enable NandFlash */
+ at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+}
+#endif /* CONFIG_CMD_NAND */
+
+#ifdef CONFIG_MACB
+static void meesc_macb_hw_init(void)
+{
+ /* Enable clock */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC);
+ at91_macb_hw_init();
+}
+#endif
+
+static void meesc_ethercat_hw_init(void)
+{
+ /* Configure SMC EBI1_CS0 for EtherCAT */
+ at91_sys_write(AT91_SMC1_SETUP(0),
+ AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) |
+ AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0));
+ at91_sys_write(AT91_SMC1_PULSE(0),
+ AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(9) |
+ AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(9));
+ at91_sys_write(AT91_SMC1_CYCLE(0),
+ AT91_SMC_NWECYCLE_(10) | AT91_SMC_NRDCYCLE_(5));
+ /* Configure behavior@external wait signal, byte-select mode, 16 bit
+ data bus width, none data float wait states and TDF optimization */
+ at91_sys_write(AT91_SMC1_MODE(0),
+ AT91_SMC_READMODE | AT91_SMC_EXNWMODE_READY |
+ AT91_SMC_BAT_SELECT | AT91_SMC_DBW_16 | AT91_SMC_TDF_(0) |
+ AT91_SMC_TDFMODE);
+
+ /* Peripheral Clock Enable Register */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB |
+ 1 << AT91SAM9263_ID_PIOCDE);
+
+ /* Configure RDY/BSY */
+ at91_set_B_periph(AT91_PIN_PE20, 0); /* EBI1_NWAIT */
+}
+
+#ifdef CONFIG_HAS_DATAFLASH
+AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
+
+struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
+ {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */
+};
+
+/*define the area offsets*/
+dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
+ {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"},
+ {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
+ {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"},
+};
+#endif /* CONFIG_HAS_DATAFLASH */
+
+int board_init(void)
+{
+ /* Enable Ctrlc */
+ console_init_f();
+
+ /* arch number of esd MEESC board */
+ gd->bd->bi_arch_number = MACH_TYPE_MEESC;
+
+ /* adress of boot parameters */
+ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+ at91_serial_hw_init();
+#ifdef CONFIG_USER_LED
+ user_LED_init();
+#endif
+#ifdef CONFIG_CMD_NAND
+ meesc_nand_hw_init();
+#endif
+ meesc_ethercat_hw_init();
+#ifdef CONFIG_HAS_DATAFLASH
+ at91_spi0_hw_init(1 << 0);
+#endif
+#ifdef CONFIG_MACB
+ meesc_macb_hw_init();
+#endif
+ return(0);
+}
+
+int dram_init(void)
+{
+ gd->bd->bi_dram[0].start = PHYS_SDRAM;
+ gd->bd->bi_dram[0].size = get_DRAM_size();
+ return(0);
+}
+
+int board_eth_init(bd_t *bis)
+{
+ int rc = 0;
+#ifdef CONFIG_MACB
+ rc = macb_eth_initialize(0, (void *)AT91SAM9263_BASE_EMAC, 0x00);
+#endif
+ return(rc);
+}
+
+int checkboard(void)
+{
+ char serno[32];
+
+ puts("Board: esd CAN-EtherCAT Gateway\n");
+ if (getenv_r("serial#", serno, sizeof(serno)) > 0) {
+ puts(", serial# ");
+ puts(serno);
+ }
+ printf("Hardware-revision: 1.%d\n", get_hw_rev());
+ return(0);
+}
+
+int get_hw_rev(void)
+{
+ int rev = at91_get_gpio_value(AT91_PIN_PB19);
+ rev |= at91_get_gpio_value(AT91_PIN_PB20) << 1;
+ rev |= at91_get_gpio_value(AT91_PIN_PB21) << 2;
+ rev |= at91_get_gpio_value(AT91_PIN_PB22) << 3;
+
+ if (rev == 15)
+ rev = 0;
+
+ return(rev);
+}
+
+int get_DRAM_size(void)
+{
+ int size = (1 << 27); /* assumed max DRAM size = 128 MByte */
+
+ __raw_writew(0x0000, PHYS_SDRAM);
+ __raw_writew(0x0000, PHYS_SDRAM | (1 << 24));
+ __raw_writew(0x0000, PHYS_SDRAM | (1 << 25));
+ __raw_writew(0xffff, PHYS_SDRAM | (1 << 26));
+
+ if (__raw_readw(PHYS_SDRAM | (1 << 25)))
+ size >>= 1;
+ if (__raw_readw(PHYS_SDRAM | (1 << 24)))
+ size >>= 1;
+ if (__raw_readw(PHYS_SDRAM))
+ size >>= 1;
+
+ return(size);
+}
+
+/*
+ * U-Boot commands
+ */
+
+/* ET1100 word switching */
+int do_wswitch(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ int i = 0;
+
+ if (get_hw_rev() == 0) {
+ if (argc > 1) {
+ i = argv[1][0] == '1';
+ printf("Setting Pin PA25 to '%d'\n", i);
+ at91_set_gpio_output(AT91_PIN_PA25, i);
+ } else
+ puts("None value given!\n");
+ } else {
+ puts("Not a prototype, word-switching not provided!\n");
+ }
+ return(0);
+}
+U_BOOT_CMD(
+ wswitch, 2, 1, do_wswitch,
+ "select read word on ET1100 (prototypes only)",
+ "\n"
+);
+
+/*
+ * CAN physical layer test
+ * This command toggles the CANTX pin. As a result, the differential signal on
+ * CAN bus toggles an can be measured by a scope.
+ * The received signal on CANRX must be equal to the send signal on CANTX. If an
+ * error occurs and the signals are different, an error message is being
+ * displayed.
+ * Conditions for using this command:
+ * -CAN transceiver on CANTX/CANRX
+ * -no other devices on CAN bus
+ * -120R bus termination
+ */
+int do_cantst(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ unsigned int error = 0;
+ puts("Toggeling Port PA13 (CANTX)... ");
+ /* defines PA13 as output */
+ at91_set_gpio_output(AT91_PIN_PA13, 0);
+ /* defines PA14 as input, internal pullup */
+ at91_set_gpio_input(AT91_PIN_PA14, 1);
+
+ while (!tstc() && !error) { /* wait for key press or error */
+ at91_set_gpio_value(AT91_PIN_PA13, 1);
+ if (!at91_get_gpio_value(AT91_PIN_PA14))
+ error = 1;
+ at91_set_gpio_value(AT91_PIN_PA13, 0);
+ if (at91_get_gpio_value(AT91_PIN_PA14))
+ error = 1;
+ }
+
+ if (error)
+ puts("CAN error!!\n");
+ else {
+ puts("done\n");
+ getc(); /* consume input */
+ }
+ return(0);
+}
+U_BOOT_CMD(
+ cantst, 2, 1, do_cantst,
+ "toggles CANTX-Pin",
+ "\n"
+);
diff --git a/board/esd/meesc/meesc.h b/board/esd/meesc/meesc.h
new file mode 100644
index 0000000..2ef673b
--- /dev/null
+++ b/board/esd/meesc/meesc.h
@@ -0,0 +1,32 @@
+/*
+ * (C) Copyright 2009
+ * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+ * esd electronic system design gmbh <www.esd-electronics.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _MEESC_H_
+#define _MEESC_H_
+
+#ifdef CONFIG_MACB
+static void meesc_macb_hw_init(void);
+#endif
+static void meesc_ethercat_hw_init(void);
+int get_hw_rev(void);
+int get_DRAM_size(void);
+
+#endif /* _MEESC_H_ */
diff --git a/include/configs/meesc.h b/include/configs/meesc.h
new file mode 100644
index 0000000..97f32a4
--- /dev/null
+++ b/include/configs/meesc.h
@@ -0,0 +1,191 @@
+/*
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * (C) Copyright 2009
+ * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
+ * esd electronic system design gmbh <www.esd.eu>
+ *
+ * Configuation settings for the esd MEESC board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* ARM asynchronous clock */
+#define AT91_CPU_NAME "AT91SAM9263"
+#define AT91_MAIN_CLOCK 16000000 /* 16.0 MHz crystal */
+#define AT91_MASTER_CLOCK 100000000 /* peripheral */
+#define AT91_CPU_CLOCK 200000000 /* cpu */
+#define CONFIG_SYS_AT91_PLLB 0x00023f01 /* PLLB settings for USB */
+#define CONFIG_SYS_HZ 1000 /* decrementer freq */
+
+#define AT91_SLOW_CLOCK 32768 /* slow clock */
+
+#define CONFIG_MEESC 1 /* Board is esd MEESC */
+#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */
+#define CONFIG_AT91SAM9263 1 /* It's an AT91SAM9263 SoC*/
+#undef CONFIG_USE_IRQ /* don't need IRQ/FIQ stuff */
+#define CONFIG_ENV_OVERWRITE 1 /* necessary on prototypes */
+#define CONFIG_DISPLAY_BOARDINFO 1
+#define CONFIG_PREBOOT /* enable preboot variable */
+
+#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG 1
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_SKIP_RELOCATE_UBOOT
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_ATMEL_USART 1
+#undef CONFIG_USART0
+#undef CONFIG_USART1
+#undef CONFIG_USART2
+#define CONFIG_USART3 1 /* USART 3 is DBGU */
+
+#define CONFIG_BOOTDELAY 3
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE 1
+#define CONFIG_BOOTP_BOOTPATH 1
+#define CONFIG_BOOTP_GATEWAY 1
+#define CONFIG_BOOTP_HOSTNAME 1
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_BDI
+#undef CONFIG_CMD_AUTOSCRIPT
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_LOADS
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_USB
+
+#define CONFIG_CMD_PING 1
+#define CONFIG_CMD_DHCP 1
+#define CONFIG_CMD_NAND 1
+#define CONFIG_CMD_LED 1
+
+/* LED */
+#define CONFIG_USER_LED 1
+#define CONFIG_LED1 AT91_PIN_PB8 /* this is LED1A */
+#define CONFIG_LED2 AT91_PIN_PB7 /* this is LED1B */
+
+/* SDRAM */
+#define CONFIG_NR_DRAM_BANKS 1
+#define PHYS_SDRAM 0x20000000
+
+/* DataFlash */
+#define CONFIG_ATMEL_DATAFLASH_SPI
+#define CONFIG_HAS_DATAFLASH 1
+#define CONFIG_SYS_SPI_WRITE_TOUT (5000 * CONFIG_SYS_HZ)
+#define CONFIG_SYS_MAX_DATAFLASH_BANKS 1
+#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 0xC0000000 /* CS0 */
+#define AT91_SPI_CLK 15000000
+#define DATAFLASH_TCSS (0x1a << 16)
+#define DATAFLASH_TCHS (0x1 << 24)
+
+/* NOR flash is not populated, disable it */
+#define CONFIG_SYS_NO_FLASH 1
+
+/* NAND flash */
+#ifdef CONFIG_CMD_NAND
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_MAX_NAND_DEVICE 1
+#define CONFIG_SYS_NAND_BASE 0x40000000
+#define CONFIG_SYS_NAND_DBW_8 1
+/* our ALE is AD21 */
+#define CONFIG_SYS_NAND_MASK_ALE (1 << 21)
+/* our CLE is AD22 */
+#define CONFIG_SYS_NAND_MASK_CLE (1 << 22)
+#define CONFIG_SYS_NAND_ENABLE_PIN AT91_PIN_PD15
+#define CONFIG_SYS_NAND_READY_PIN AT91_PIN_PA22
+#endif
+
+/* Ethernet */
+#define CONFIG_MACB 1
+#define CONFIG_RMII 1
+#define CONFIG_NET_MULTI 1
+#define CONFIG_NET_RETRY_COUNT 20
+#undef CONFIG_RESET_PHY_R
+
+#define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */
+
+#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
+#define CONFIG_SYS_MEMTEST_END 0x21e00000
+
+#define CONFIG_SYS_USE_DATAFLASH 1
+#undef CONFIG_SYS_USE_NANDFLASH
+
+#ifdef CONFIG_SYS_USE_DATAFLASH
+
+/* bootstrap + u-boot + env + linux in dataflash on CS0 */
+#define CONFIG_ENV_IS_IN_DATAFLASH 1
+#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
+ 0x8400)
+#define CONFIG_ENV_OFFSET 0x4200
+#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
+ CONFIG_ENV_OFFSET)
+#define CONFIG_ENV_SIZE 0x4200
+#define CONFIG_BOOTCOMMAND "cp.b C0042000 22000000 210000; bootm"
+
+#else /* CONFIG_SYS_USE_NANDFLASH */
+
+/* bootstrap + u-boot + env + linux in nandflash */
+#define CONFIG_ENV_IS_IN_NAND 1
+#define CONFIG_ENV_OFFSET 0x60000
+#define CONFIG_ENV_OFFSET_REDUND 0x80000
+#define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
+#define CONFIG_BOOTCOMMAND "nand read 22000000 A0000 200000; bootm"
+
+#endif
+
+#define CONFIG_BAUDRATE 115200
+#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 }
+
+#define CONFIG_SYS_PROMPT "=> "
+#define CONFIG_SYS_CBSIZE 256
+#define CONFIG_SYS_MAXARGS 16
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
+ sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP 1
+#define CONFIG_CMDLINE_EDITING 1
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN 0x2D000
+#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */
+
+#define CONFIG_STACKSIZE (32*1024) /* regular stack */
+
+#ifdef CONFIG_USE_IRQ
+#error CONFIG_USE_IRQ not supported
+#endif
+
+#endif
--
1.6.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console
2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski
2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski
@ 2009-04-17 5:51 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 0 replies; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-17 5:51 UTC (permalink / raw)
To: u-boot
On 14:31 Tue 07 Apr , Daniel Gorsulowski wrote:
> This patch bases on patch of Ulf Samuelsson
> ([PATCH 1/1] ARM: Add command to control coloured led from the console,
> Wed Jan 7 21:09:55 CET 2009)
> It allows any board implementing the user LED API
> to control the LEDs from the console.
>
> led [ 1 | 2 | 3 | 4 | 5 | all ] [ on | off ]
>
> Adding configuration item CONFIG_CMD_LED enables the command.
> The items CONFIG_LED1...5 configure the associated gpio-pins.
>
> Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu>
> ---
> common/Makefile | 1 +
> common/cmd_led.c | 105 +++++++++++++++++++++++++++++++++++++++++
> cpu/arm926ejs/at91/Makefile | 1 +
> cpu/arm926ejs/at91/user_led.c | 102 +++++++++++++++++++++++++++++++++++++++
> include/user_led.h | 60 +++++++++++++++++++++++
> 5 files changed, 269 insertions(+), 0 deletions(-)
> create mode 100644 common/cmd_led.c
> create mode 100644 cpu/arm926ejs/at91/user_led.c
> create mode 100644 include/user_led.h
>
> diff --git a/common/Makefile b/common/Makefile
> index b9f4ca7..e0f571c 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -103,6 +103,7 @@ COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o
> COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o
> COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
> COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
> +COBJS-$(CONFIG_CMD_LED) += cmd_led.o
> COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o
> COBJS-y += cmd_load.o
> COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o
> diff --git a/common/cmd_led.c b/common/cmd_led.c
> new file mode 100644
> index 0000000..248f3a9
> --- /dev/null
> +++ b/common/cmd_led.c
> @@ -0,0 +1,105 @@
> +/*
> + * (C) Copyright 2008
> + * Ulf Samuelsson <ulf.samuelsson@atmel.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/*
> + * This file provides a shell like 'test' function to return
> + * true/false from an integer or string compare of two memory
> + * locations or a location and a scalar/literal.
> + * A few parts were lifted from bash 'test' command
> + */
> +
> +#include <common.h>
> +#include <config.h>
> +#include <command.h>
> +#include <user_led.h>
> +
> +int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> + int led;
> +
> + /* Validate arguments */
> + if ((argc != 3)) {
> + printf("Usage:\n%s\n", cmdtp->usage);
> + return 1;
> + }
> + if (strcmp(argv[1], "1") == 0) {
> + led = (1 << 0);
> + } else if (strcmp(argv[1], "2") == 0) {
> + led = (1 << 1);
> + } else if (strcmp(argv[1], "3") == 0) {
> + led = (1 << 2);
> + } else if (strcmp(argv[1], "4") == 0) {
> + led = (1 << 3);
> + } else if (strcmp(argv[1], "5") == 0) {
> + led = (1 << 4);
> + } else if (strcmp(argv[1], "all") == 0) {
> + led = 31;
> + } else {
> + printf ("Usage:\n%s\n", cmdtp->usage);
> + return 1;
> + }
> +
> + if (strcmp(argv[2], "off") == 0) {
> +#ifdef CONFIG_LED1
> + if(led & 1) user_LED1_off();
please no uppercase in the function name
abd please use the collor API or extend it
and do not add 100 of functions
please a parameter
btw please move this to lib_arm/
> +#endif
> +#ifdef CONFIG_LED2
> + if(led & 2) user_LED2_off();
> +#endif
> +#ifdef CONFIG_LED3
> + if(led & 4) user_LED3_off();
> +#endif
> +#ifdef CONFIG_LED4
> + if(led & 8) user_LED4_off();
> +#endif
> +#ifdef CONFIG_LED5
> + if(led & 16) user_LED5_off();
> +#endif
> + } else if (strcmp(argv[2], "on") == 0) {
> +#ifdef CONFIG_LED1
> + if(led & 1) user_LED1_on();
> +#endif
> +#ifdef CONFIG_LED2
> + if(led & 2) user_LED2_on();
> +#endif
> +#ifdef CONFIG_LED3
> + if(led & 4) user_LED3_on();
> +#endif
> +#ifdef CONFIG_LED4
> + if(led & 8) user_LED4_on();
> +#endif
> +#ifdef CONFIG_LED5
> + if(led & 16) user_LED5_on();
> +#endif
> + } else {
> + printf ("Usage:\n%s\n", cmdtp->usage);
> + return 1;
> + }
> + return 0;
> +}
> +
> +U_BOOT_CMD(
> + led, 3, 1, do_led,
> + "[1|2|3|4|5|all] [on|off]",
> + "[1|2|3|4|5|all] [on|off] sets/clears led 1,2,3,4,5"
> +);
> diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile
> index 34e7461..f404cf1 100644
> --- a/cpu/arm926ejs/at91/Makefile
> +++ b/cpu/arm926ejs/at91/Makefile
> @@ -55,6 +55,7 @@ COBJS-y += at91sam9rl_serial.o
> COBJS-$(CONFIG_HAS_DATAFLASH) += at91sam9rl_spi.o
> endif
> COBJS-$(CONFIG_AT91_LED) += led.o
> +COBJS-$(CONFIG_USER_LED) += user_led.o
> COBJS-y += timer.o
> SOBJS = lowlevel_init.o
>
> diff --git a/cpu/arm926ejs/at91/user_led.c b/cpu/arm926ejs/at91/user_led.c
> new file mode 100644
> index 0000000..a5dc197
> --- /dev/null
> +++ b/cpu/arm926ejs/at91/user_led.c
> @@ -0,0 +1,102 @@
> +/*
> + * (C) Copyright 2007-2008
> + * Stelian Pop <stelian.pop@leadtechdesign.com>
> + * Lead Tech Design <www.leadtechdesign.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <asm/arch/at91sam9263.h>
only 9263?
please use asm/arch/hardware.h
> +#include <asm/arch/at91_pmc.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/io.h>
> +
> +void user_LED_init(void)
> +{
> + /* Enable clock */
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB |
> + 1 << AT91SAM9263_ID_PIOCDE);
> +
> + at91_set_gpio_output(CONFIG_LED1, 1);
> + at91_set_gpio_output(CONFIG_LED2, 1);
> +
> + at91_set_gpio_value(CONFIG_LED1, 1);
> + at91_set_gpio_value(CONFIG_LED2, 1);
> +}
> +
> +#ifdef CONFIG_LED1
> +void user_LED1_on(void)
> +{
> + at91_set_gpio_value(CONFIG_LED1, 0);
> +}
> +
> +void user_LED1_off(void)
> +{
> + at91_set_gpio_value(CONFIG_LED1, 1);
> +}
> +#endif
> +
> +#ifdef CONFIG_LED2
> +void user_LED2_on(void)
> +{
> + at91_set_gpio_value(CONFIG_LED2, 0);
> +}
> +
> +void user_LED2_off(void)
> +{
> + at91_set_gpio_value(CONFIG_LED2, 1);
> +}
> +#endif
> +
> +#ifdef CONFIG_LED3
> +void user_LED3_on(void)
> +{
> + at91_set_gpio_value(CONFIG_LED3, 0);
> +}
> +
> +void user_LED3_off(void)
> +{
> + at91_set_gpio_value(CONFIG_LED3, 1);
> +}
> +#endif
> +
> +#ifdef CONFIG_LED4
> +void user_LED4_on(void)
> +{
> + at91_set_gpio_value(CONFIG_LED4, 0);
> +}
> +
> +void user_LED4_off(void)
> +{
> + at91_set_gpio_value(CONFIG_LED4, 1);
> +}
> +#endif
> +
> +#ifdef CONFIG_LED5
> +void user_LED5_on(void)
> +{
> + at91_set_gpio_value(CONFIG_LED5, 0);
> +}
> +
> +void user_LED5_off(void)
> +{
> + at91_set_gpio_value(CONFIG_LED5, 1);
> +}
> +#endif
> diff --git a/include/user_led.h b/include/user_led.h
please move to include/asm-arm/ as it's arm specific
> new file mode 100644
> index 0000000..e0b808f
> --- /dev/null
> +++ b/include/user_led.h
> @@ -0,0 +1,60 @@
> +/*
> + * (C) Copyright 2008
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
wd at denx.de
Best Regards,
J
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh
2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski
@ 2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-22 10:15 ` [U-Boot] Bug in new at91 clock framework? Daniel Gorsulowski
0 siblings, 1 reply; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-17 6:00 UTC (permalink / raw)
To: u-boot
> --- /dev/null
> +++ b/board/esd/meesc/meesc.c
> @@ -0,0 +1,300 @@
> +/*
> + * (C) Copyright 2007-2008
> + * Stelian Pop <stelian.pop@leadtechdesign.com>
> + * Lead Tech Design <www.leadtechdesign.com>
> + *
> + * (C) Copyright 2009
> + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
> + * esd electronic system design gmbh <www.esd.eu>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include "meesc.h"
> +#include <common.h>
> +#include <asm/arch/at91_common.h>
> +#include <asm/arch/at91sam9263.h>
please remove no need
> +#include <asm/arch/at91sam9263_matrix.h>
> +#include <asm/arch/at91sam9_smc.h>
> +#include <asm/arch/at91_pmc.h>
> +#include <asm/arch/at91_rstc.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/io.h>
> +#include <asm/arch/hardware.h>
please move this before <asm/arch/at91_common.h>
> +#include <nand.h>
> +#include <dataflash.h>
> +#include <netdev.h>
> +#include <user_led.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/*
> + * Miscelaneous platform dependent initialisations
> + */
> +
> +#ifdef CONFIG_CMD_NAND
> +static void meesc_nand_hw_init(void)
> +{
> + unsigned long csa;
> +
> + /* Enable CS3 */
> + csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
> + at91_sys_write(AT91_MATRIX_EBI0CSA,
> + csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA);
> +
> + /* Configure SMC CS3 for NAND/SmartMedia */
> + at91_sys_write(AT91_SMC_SETUP(3),
> + AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(0) |
> + AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(0));
> + at91_sys_write(AT91_SMC_PULSE(3),
> + AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
> + AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3));
> + at91_sys_write(AT91_SMC_CYCLE(3),
> + AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5));
> + at91_sys_write(AT91_SMC_MODE(3),
> + AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
> + AT91_SMC_EXNWMODE_DISABLE |
> +#ifdef CONFIG_SYS_NAND_DBW_16
> + AT91_SMC_DBW_16 |
> +#else /* CONFIG_SYS_NAND_DBW_8 */
> + AT91_SMC_DBW_8 |
> +#endif
> + AT91_SMC_TDF_(2));
> +
> + /* Peripheral Clock Enable Register */
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOA |
> + 1 << AT91SAM9263_ID_PIOCDE);
> +
> + /* Configure RDY/BSY */
> + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
> +
> + /* Enable NandFlash */
> + at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
> +}
> +#endif /* CONFIG_CMD_NAND */
> +
> +#ifdef CONFIG_MACB
> +static void meesc_macb_hw_init(void)
> +{
> + /* Enable clock */
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC);
> + at91_macb_hw_init();
> +}
> +#endif
> +
> +static void meesc_ethercat_hw_init(void)
> +{
> + /* Configure SMC EBI1_CS0 for EtherCAT */
> + at91_sys_write(AT91_SMC1_SETUP(0),
> + AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0) |
> + AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0));
> + at91_sys_write(AT91_SMC1_PULSE(0),
> + AT91_SMC_NWEPULSE_(4) | AT91_SMC_NCS_WRPULSE_(9) |
> + AT91_SMC_NRDPULSE_(4) | AT91_SMC_NCS_RDPULSE_(9));
> + at91_sys_write(AT91_SMC1_CYCLE(0),
> + AT91_SMC_NWECYCLE_(10) | AT91_SMC_NRDCYCLE_(5));
> + /* Configure behavior at external wait signal, byte-select mode, 16 bit
> + data bus width, none data float wait states and TDF optimization */
> + at91_sys_write(AT91_SMC1_MODE(0),
> + AT91_SMC_READMODE | AT91_SMC_EXNWMODE_READY |
> + AT91_SMC_BAT_SELECT | AT91_SMC_DBW_16 | AT91_SMC_TDF_(0) |
> + AT91_SMC_TDFMODE);
> +
> + /* Peripheral Clock Enable Register */
> + at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB |
> + 1 << AT91SAM9263_ID_PIOCDE);
> +
> + /* Configure RDY/BSY */
> + at91_set_B_periph(AT91_PIN_PE20, 0); /* EBI1_NWAIT */
> +}
> +
> +#ifdef CONFIG_HAS_DATAFLASH
> +AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
> +
> +struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
> + {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0}, /* Logical adress, CS */
> +};
> +
> +/*define the area offsets*/
> +dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
> + {0x00000000, 0x000041FF, FLAG_PROTECT_SET, 0, "Bootstrap"},
> + {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
> + {0x00008400, 0x00041FFF, FLAG_PROTECT_SET, 0, "U-Boot"},
> +};
> +#endif /* CONFIG_HAS_DATAFLASH */
> +
> +int board_init(void)
> +{
> + /* Enable Ctrlc */
> + console_init_f();
> +
> + /* arch number of esd MEESC board */
> + gd->bd->bi_arch_number = MACH_TYPE_MEESC;
> +
> + /* adress of boot parameters */
> + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
> +
> + at91_serial_hw_init();
> +#ifdef CONFIG_USER_LED
> + user_LED_init();
> +#endif
> +#ifdef CONFIG_CMD_NAND
> + meesc_nand_hw_init();
> +#endif
> + meesc_ethercat_hw_init();
> +#ifdef CONFIG_HAS_DATAFLASH
> + at91_spi0_hw_init(1 << 0);
> +#endif
> +#ifdef CONFIG_MACB
> + meesc_macb_hw_init();
> +#endif
> + return(0);
return is not a function
please use
return 0;
ditto for the rest of the patch
> +}
> +
> +int dram_init(void)
> +{
> + gd->bd->bi_dram[0].start = PHYS_SDRAM;
> + gd->bd->bi_dram[0].size = get_DRAM_size();
> + return(0);
> +}
> +
> +int board_eth_init(bd_t *bis)
> +{
> + int rc = 0;
> +#ifdef CONFIG_MACB
> + rc = macb_eth_initialize(0, (void *)AT91SAM9263_BASE_EMAC, 0x00);
> +#endif
> + return(rc);
> +}
> +
> +int checkboard(void)
> +{
> + char serno[32];
> +
> + puts("Board: esd CAN-EtherCAT Gateway\n");
> + if (getenv_r("serial#", serno, sizeof(serno)) > 0) {
> + puts(", serial# ");
> + puts(serno);
> + }
> + printf("Hardware-revision: 1.%d\n", get_hw_rev());
> + return(0);
> +}
> +
> +int get_hw_rev(void)
> +{
> + int rev = at91_get_gpio_value(AT91_PIN_PB19);
> + rev |= at91_get_gpio_value(AT91_PIN_PB20) << 1;
> + rev |= at91_get_gpio_value(AT91_PIN_PB21) << 2;
> + rev |= at91_get_gpio_value(AT91_PIN_PB22) << 3;
> +
> + if (rev == 15)
> + rev = 0;
> +
> + return(rev);
> +}
> +
> +int get_DRAM_size(void)
please no uppercase in the function naming
> +{
> + int size = (1 << 27); /* assumed max DRAM size = 128 MByte */
> +
> + __raw_writew(0x0000, PHYS_SDRAM);
> + __raw_writew(0x0000, PHYS_SDRAM | (1 << 24));
> + __raw_writew(0x0000, PHYS_SDRAM | (1 << 25));
> + __raw_writew(0xffff, PHYS_SDRAM | (1 << 26));
> +
> + if (__raw_readw(PHYS_SDRAM | (1 << 25)))
> + size >>= 1;
> + if (__raw_readw(PHYS_SDRAM | (1 << 24)))
> + size >>= 1;
> + if (__raw_readw(PHYS_SDRAM))
> + size >>= 1;
> +
> + return(size);
> +}
> +
> +/*
> + * U-Boot commands
> + */
> +
> +/* ET1100 word switching */
> +int do_wswitch(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> + int i = 0;
> +
> + if (get_hw_rev() == 0) {
> + if (argc > 1) {
> + i = argv[1][0] == '1';
> + printf("Setting Pin PA25 to '%d'\n", i);
> + at91_set_gpio_output(AT91_PIN_PA25, i);
> + } else
> + puts("None value given!\n");
> + } else {
> + puts("Not a prototype, word-switching not provided!\n");
> + }
> + return(0);
> +}
> +U_BOOT_CMD(
> + wswitch, 2, 1, do_wswitch,
> + "select read word on ET1100 (prototypes only)",
> + "\n"
> +);
> +
> +/*
> + * CAN physical layer test
> + * This command toggles the CANTX pin. As a result, the differential signal on
> + * CAN bus toggles an can be measured by a scope.
> + * The received signal on CANRX must be equal to the send signal on CANTX. If an
> + * error occurs and the signals are different, an error message is being
> + * displayed.
> + * Conditions for using this command:
> + * -CAN transceiver on CANTX/CANRX
> + * -no other devices on CAN bus
> + * -120R bus termination
> + */
> +int do_cantst(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> + unsigned int error = 0;
> + puts("Toggeling Port PA13 (CANTX)... ");
> + /* defines PA13 as output */
> + at91_set_gpio_output(AT91_PIN_PA13, 0);
> + /* defines PA14 as input, internal pullup */
> + at91_set_gpio_input(AT91_PIN_PA14, 1);
> +
> + while (!tstc() && !error) { /* wait for key press or error */
> + at91_set_gpio_value(AT91_PIN_PA13, 1);
> + if (!at91_get_gpio_value(AT91_PIN_PA14))
> + error = 1;
> + at91_set_gpio_value(AT91_PIN_PA13, 0);
> + if (at91_get_gpio_value(AT91_PIN_PA14))
> + error = 1;
> + }
> +
> + if (error)
> + puts("CAN error!!\n");
> + else {
> + puts("done\n");
> + getc(); /* consume input */
> + }
> + return(0);
> +}
> +U_BOOT_CMD(
> + cantst, 2, 1, do_cantst,
> + "toggles CANTX-Pin",
> + "\n"
> +);
please add a README
> diff --git a/board/esd/meesc/meesc.h b/board/esd/meesc/meesc.h
> new file mode 100644
> index 0000000..2ef673b
> --- /dev/null
> +++ b/board/esd/meesc/meesc.h
just move the board_init at the end of the file so no need of this header
> @@ -0,0 +1,32 @@
> +/*
> + * (C) Copyright 2009
> + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
> + * esd electronic system design gmbh <www.esd-electronics.com>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef _MEESC_H_
> +#define _MEESC_H_
> +
> +#ifdef CONFIG_MACB
> +static void meesc_macb_hw_init(void);
> +#endif
> +static void meesc_ethercat_hw_init(void);
> +int get_hw_rev(void);
> +int get_DRAM_size(void);
> +
> +#endif /* _MEESC_H_ */
> diff --git a/include/configs/meesc.h b/include/configs/meesc.h
> new file mode 100644
> index 0000000..97f32a4
> --- /dev/null
> +++ b/include/configs/meesc.h
> @@ -0,0 +1,191 @@
> +/*
> + * (C) Copyright 2007-2008
> + * Stelian Pop <stelian.pop@leadtechdesign.com>
> + * Lead Tech Design <www.leadtechdesign.com>
> + *
> + * (C) Copyright 2009
> + * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
> + * esd electronic system design gmbh <www.esd.eu>
> + *
> + * Configuation settings for the esd MEESC board.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +/* ARM asynchronous clock */
> +#define AT91_CPU_NAME "AT91SAM9263"
> +#define AT91_MAIN_CLOCK 16000000 /* 16.0 MHz crystal */
> +#define AT91_MASTER_CLOCK 100000000 /* peripheral */
> +#define AT91_CPU_CLOCK 200000000 /* cpu */
> +#define CONFIG_SYS_AT91_PLLB 0x00023f01 /* PLLB settings for USB */
> +#define CONFIG_SYS_HZ 1000 /* decrementer freq */
please move to the new clock framework
> +
> +#define AT91_SLOW_CLOCK 32768 /* slow clock */
> +
> +#define CONFIG_MEESC 1 /* Board is esd MEESC */
> +#define CONFIG_ARM926EJS 1 /* This is an ARM926EJS Core */
> +#define CONFIG_AT91SAM9263 1 /* It's an AT91SAM9263 SoC*/
> +#undef CONFIG_USE_IRQ /* don't need IRQ/FIQ stuff */
> +#define CONFIG_ENV_OVERWRITE 1 /* necessary on prototypes */
> +#define CONFIG_DISPLAY_BOARDINFO 1
> +#define CONFIG_PREBOOT /* enable preboot variable */
> +
> +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
> +#define CONFIG_SETUP_MEMORY_TAGS 1
> +#define CONFIG_INITRD_TAG 1
> +
> +#define CONFIG_SKIP_LOWLEVEL_INIT
> +#define CONFIG_SKIP_RELOCATE_UBOOT
> +
> +/*
> + * Hardware drivers
> + */
> +#define CONFIG_ATMEL_USART 1
> +#undef CONFIG_USART0
> +#undef CONFIG_USART1
> +#undef CONFIG_USART2
> +#define CONFIG_USART3 1 /* USART 3 is DBGU */
> +
> +#define CONFIG_BOOTDELAY 3
> +
> +/*
> + * BOOTP options
> + */
> +#define CONFIG_BOOTP_BOOTFILESIZE 1
> +#define CONFIG_BOOTP_BOOTPATH 1
> +#define CONFIG_BOOTP_GATEWAY 1
> +#define CONFIG_BOOTP_HOSTNAME 1
> +
> +/*
> + * Command line configuration.
> + */
> +#include <config_cmd_default.h>
> +#undef CONFIG_CMD_BDI
> +#undef CONFIG_CMD_AUTOSCRIPT
> +#undef CONFIG_CMD_FPGA
> +#undef CONFIG_CMD_LOADS
> +#undef CONFIG_CMD_IMLS
> +#undef CONFIG_CMD_USB
you will not use the USB?
> +
> +#define CONFIG_CMD_PING 1
> +#define CONFIG_CMD_DHCP 1
> +#define CONFIG_CMD_NAND 1
> +#define CONFIG_CMD_LED 1
> +
> +/* LED */
> +#define CONFIG_USER_LED 1
> +#define CONFIG_LED1 AT91_PIN_PB8 /* this is LED1A */
> +#define CONFIG_LED2 AT91_PIN_PB7 /* this is LED1B */
> +
> +/* SDRAM */
> +#define CONFIG_NR_DRAM_BANKS 1
> +#define PHYS_SDRAM 0x20000000
> +
> +/* DataFlash */
> +#define CONFIG_ATMEL_DATAFLASH_SPI
> +#define CONFIG_HAS_DATAFLASH 1
> +#ifdef CONFIG_SYS_USE_DATAFLASH
> +
> +/* bootstrap + u-boot + env + linux in dataflash on CS0 */
> +#define CONFIG_ENV_IS_IN_DATAFLASH 1
> +#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
> + 0x8400)
> +#define CONFIG_ENV_OFFSET 0x4200
> +#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
> + CONFIG_ENV_OFFSET)
> +#define CONFIG_ENV_SIZE 0x4200
> +#define CONFIG_BOOTCOMMAND "cp.b C0042000 22000000 210000; bootm"
> +
> +#else /* CONFIG_SYS_USE_NANDFLASH */
> +
> +/* bootstrap + u-boot + env + linux in nandflash */
> +#define CONFIG_ENV_IS_IN_NAND 1
> +#define CONFIG_ENV_OFFSET 0x60000
> +#define CONFIG_ENV_OFFSET_REDUND 0x80000
> +#define CONFIG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
> +#define CONFIG_BOOTCOMMAND "nand read 22000000 A0000 200000; bootm"
> +
> +#endif
> +
> +#define CONFIG_BAUDRATE 115200
> +#define CONFIG_SYS_BAUDRATE_TABLE {115200 , 19200, 38400, 57600, 9600 }
> +
> +#define CONFIG_SYS_PROMPT "=> "
> +#define CONFIG_SYS_CBSIZE 256
> +#define CONFIG_SYS_MAXARGS 16
> +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
> + sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_LONGHELP 1
> +#define CONFIG_CMDLINE_EDITING 1
> +
> +/*
> + * Size of malloc() pool
> + */
> +#define CONFIG_SYS_MALLOC_LEN 0x2D000
> +#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */
> +
> +#define CONFIG_STACKSIZE (32*1024) /* regular stack */
please add a space before and after the '*'
Best Regards,
J.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework?
2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-04-22 10:15 ` Daniel Gorsulowski
[not found] ` <20090422131402.GA29252@game.jcrosoft.org>
0 siblings, 1 reply; 8+ messages in thread
From: Daniel Gorsulowski @ 2009-04-22 10:15 UTC (permalink / raw)
To: u-boot
Hello Jean-Christophe,
I'm not sure, but I think there is a bug in your new at91 clock framework.
My board does only boot, if CONFIG_USB_ATMEL is defined. But the board does
not have any usb-ports, so there is no need to define CONFIG_USB_ATMEL.
The board is based on an Atmel AT91SAM9263 SoC.
Is that possible, or do i have to fix my lowlevel_init?
Best Regards,
Daniel Gorsulowski
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework?
[not found] ` <20090422131402.GA29252@game.jcrosoft.org>
@ 2009-04-23 10:38 ` Daniel Gorsulowski
2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 1 reply; 8+ messages in thread
From: Daniel Gorsulowski @ 2009-04-23 10:38 UTC (permalink / raw)
To: u-boot
Jean-Christophe PLAGNIOL-VILLARD schrieb:
> On 12:15 Wed 22 Apr , Daniel Gorsulowski wrote:
>> Hello Jean-Christophe,
>>
>> I'm not sure, but I think there is a bug in your new at91 clock framework.
>> My board does only boot, if CONFIG_USB_ATMEL is defined. But the board does
>> not have any usb-ports, so there is no need to define CONFIG_USB_ATMEL.
>> The board is based on an Atmel AT91SAM9263 SoC.
> I've seen in with the one on my clock branch
> but if you use the one for the pull request normaly not
>
> I've test it on my 9263EK
>
> Best Regards,
> J.
>
I'm working on git://git.denx.de/u-boot-at91.git branch clock
I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator.
Everything is fine, as long as no changes were made. But if I undef
CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only
some cryptical characters appear after the "RomBOOT" term. It's the
same behavior as on my own board.
If i do the same on git://git.denx.de/u-boot.git branch master,
everything works fine. (as well AT91SAM9263-EK as my board)
Do you have any advice for debugging that problem?
Best regards,
Daniel Gorsulowski
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework?
2009-04-23 10:38 ` Daniel Gorsulowski
@ 2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-23 13:44 ` Daniel Gorsulowski
0 siblings, 1 reply; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-23 12:59 UTC (permalink / raw)
To: u-boot
>
> I'm working on git://git.denx.de/u-boot-at91.git branch clock
> I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator.
> Everything is fine, as long as no changes were made. But if I undef
> CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only
> some cryptical characters appear after the "RomBOOT" term. It's the
> same behavior as on my own board.
use git://git.denx.de/u-boot-at91.git branch master
Best Regards,
J.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] Bug in new at91 clock framework?
2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-04-23 13:44 ` Daniel Gorsulowski
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Gorsulowski @ 2009-04-23 13:44 UTC (permalink / raw)
To: u-boot
Jean-Christophe PLAGNIOL-VILLARD schrieb:
>> I'm working on git://git.denx.de/u-boot-at91.git branch clock
>> I also have an AT91SAM9263-EK, but with a 16.0 MHz main oscillator.
>> Everything is fine, as long as no changes were made. But if I undef
>> CONFIG_USB_ATMEL and CONFIG_CMD_USB, the board does not boot. Only
>> some cryptical characters appear after the "RomBOOT" term. It's the
>> same behavior as on my own board.
> use git://git.denx.de/u-boot-at91.git branch master
>
> Best Regards,
> J.
>
Thank you, it works now. But I have to apply the attached patch.
Otherwise, I get a compiler error
cpu/arm926ejs/at91/libat91.a(clock.o): In function `at91_clock_init':
/data/home/danielg/git/u-boot-at91_new/cpu/arm926ejs/at91/clock.c:167: undefined reference to `at91_pll_rate'
---
From 730db691fabf958d1b3d74e678f7f47a0776df16 Mon Sep 17 00:00:00 2001
From: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu>
Date: Thu, 23 Apr 2009 15:37:16 +0200
Subject: [PATCH] at91: fixed cpu/arm926ejs/at91/clock.c
Signed-off-by: Daniel Gorsulowski <Daniel.Gorsulowski@esd.eu>
---
cpu/arm926ejs/at91/clock.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cpu/arm926ejs/at91/clock.c b/cpu/arm926ejs/at91/clock.c
index 31e53b3..f776f70 100644
--- a/cpu/arm926ejs/at91/clock.c
+++ b/cpu/arm926ejs/at91/clock.c
@@ -126,6 +126,7 @@ static unsigned at91_pll_calc(unsigned main_freq, unsigned out_freq)
fail:
return 0;
}
+#endif
static u32 at91_pll_rate(u32 freq, u32 reg)
{
@@ -141,7 +142,6 @@ static u32 at91_pll_rate(u32 freq, u32 reg)
return freq;
}
-#endif
int at91_clock_init(unsigned long main_clock)
{
--
1.6.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-04-23 13:44 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-07 12:31 [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Daniel Gorsulowski
2009-04-07 12:31 ` [U-Boot] [PATCH 2/2] at91: Add support for MEESC board of esd gmbh Daniel Gorsulowski
2009-04-17 6:00 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-22 10:15 ` [U-Boot] Bug in new at91 clock framework? Daniel Gorsulowski
[not found] ` <20090422131402.GA29252@game.jcrosoft.org>
2009-04-23 10:38 ` Daniel Gorsulowski
2009-04-23 12:59 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-23 13:44 ` Daniel Gorsulowski
2009-04-17 5:51 ` [U-Boot] [PATCH 1/2] at91: Add command to control up to 5 user-leds from the console Jean-Christophe PLAGNIOL-VILLARD
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox