public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash
@ 2011-11-15 10:37 Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree Christian Riesch
                   ` (7 more replies)
  0 siblings, 8 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot

Hi all,
Heiko Schocher added patches for the low level configuration
of the DA850 SoCs and I would like to use this code on my board. At the
same time I would like to add support for this low level configuration
for the da850evm board. This makes it possible to test/use the
lowlevel functions also for developers who don't have access neither to
Heiko's board nor to mine.

The patchset aims at implementing SPL support for the da850evm
configuration to allow booting this board from SPI flash without
using the UBL (see doc/README.davinci).

This patchset is not a complete implementation, it is missing the
code that is actually used to load u-boot from SPI flash to the
DDR memory. The code just hangs after the initialization is done. But
I submit it nevertheless as RFC and I am looking forward to your comments.

The patches apply on top of git://git.denx.de/u-boot-ti.git and Heiko's
patches 

arm, arm926ejs: always do cpu critical inits
http://patchwork.ozlabs.org/patch/124787/

arm, davinci: da850/dm365 lowlevel cleanup
http://patchwork.ozlabs.org/patch/124788/

To build run

make da850evm_config
make tools
make u-boot.ais

Then program u-boot.ais to SPI flash. The board responds with an
error message since we do hang() after the configuration.

Regards, Christian

Cc: Heiko Schocher <hs@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Cc: Nagabhushana Netagunte <nagabhushana.netagunte@ti.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>

Christian Riesch (8):
  arm, davinci: Move pinmux functions from board to arch tree
  arm, davinci: Fix clear_bss for zero length bss
  arm, davinci: Add SPL support for DA850 SoCs
  arm: printf() is not available in the SPL
  arm, davinci: Replace pinmuxing in da850_lowlevel.c
  da850evm: Add a basic SPL for SPI boot
  mkimage: Fix variable length header support
  arm, davinci: Add support for generating AIS images to the Makefile

 .gitignore                                         |    1 +
 Makefile                                           |    7 ++
 arch/arm/cpu/arm926ejs/davinci/Makefile            |    5 +-
 arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c    |   34 +++----
 .../arm/cpu/arm926ejs/davinci/pinmux.c             |    0
 arch/arm/cpu/arm926ejs/davinci/spl.c               |   11 ++-
 arch/arm/cpu/arm926ejs/start.S                     |    8 +-
 arch/arm/include/asm/arch-davinci/hardware.h       |    2 +
 arch/arm/lib/eabi_compat.c                         |    3 +
 board/davinci/common/Makefile                      |    2 +-
 board/davinci/da8xxevm/da830evm.c                  |    2 -
 board/davinci/da8xxevm/da850evm.c                  |    2 -
 board/davinci/da8xxevm/hawkboard_nand_spl.c        |    2 -
 board/davinci/da8xxevm/u-boot-spl.lds              |   73 +++++++++++++++
 board/davinci/ea20/ea20.c                          |    2 -
 include/configs/da850evm.h                         |   70 ++++++++++++++-
 nand_spl/board/davinci/da8xxevm/Makefile           |    6 +-
 tools/mkimage.c                                    |   97 ++++++++++----------
 18 files changed, 239 insertions(+), 88 deletions(-)
 rename board/davinci/common/davinci_pinmux.c => arch/arm/cpu/arm926ejs/davinci/pinmux.c (100%)
 create mode 100644 board/davinci/da8xxevm/u-boot-spl.lds

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-16  6:38   ` Heiko Schocher
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 2/8] arm, davinci: Fix clear_bss for zero length bss Christian Riesch
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot


Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
---
 arch/arm/cpu/arm926ejs/davinci/Makefile            |    2 +-
 .../arm/cpu/arm926ejs/davinci/pinmux.c             |    0
 arch/arm/include/asm/arch-davinci/hardware.h       |    2 ++
 board/davinci/common/Makefile                      |    2 +-
 board/davinci/da8xxevm/da830evm.c                  |    2 --
 board/davinci/da8xxevm/da850evm.c                  |    2 --
 board/davinci/da8xxevm/hawkboard_nand_spl.c        |    2 --
 board/davinci/ea20/ea20.c                          |    2 --
 nand_spl/board/davinci/da8xxevm/Makefile           |    6 +++---
 9 files changed, 7 insertions(+), 13 deletions(-)
 rename board/davinci/common/davinci_pinmux.c => arch/arm/cpu/arm926ejs/davinci/pinmux.c (100%)

diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile
index aeb058a..2105ec5 100644
--- a/arch/arm/cpu/arm926ejs/davinci/Makefile
+++ b/arch/arm/cpu/arm926ejs/davinci/Makefile
@@ -27,7 +27,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-COBJS-y				+= cpu.o timer.o psc.o
+COBJS-y				+= cpu.o timer.o psc.o pinmux.o
 COBJS-$(CONFIG_DA850_LOWLEVEL)	+= da850_lowlevel.o
 COBJS-$(CONFIG_SOC_DM355)	+= dm355.o
 COBJS-$(CONFIG_SOC_DM365)	+= dm365.o
diff --git a/board/davinci/common/davinci_pinmux.c b/arch/arm/cpu/arm926ejs/davinci/pinmux.c
similarity index 100%
rename from board/davinci/common/davinci_pinmux.c
rename to arch/arm/cpu/arm926ejs/davinci/pinmux.c
diff --git a/arch/arm/include/asm/arch-davinci/hardware.h b/arch/arm/include/asm/arch-davinci/hardware.h
index f80f312..927aee4 100644
--- a/arch/arm/include/asm/arch-davinci/hardware.h
+++ b/arch/arm/include/asm/arch-davinci/hardware.h
@@ -479,6 +479,8 @@ struct davinci_syscfg_regs {
 #define davinci_syscfg_regs \
 	((struct davinci_syscfg_regs *)DAVINCI_BOOTCFG_BASE)
 
+#define pinmux(x)	(&davinci_syscfg_regs->pinmux[x])
+
 /* Emulation suspend bits */
 #define DAVINCI_SYSCFG_SUSPSRC_EMAC		(1 << 5)
 #define DAVINCI_SYSCFG_SUSPSRC_I2C		(1 << 16)
diff --git a/board/davinci/common/Makefile b/board/davinci/common/Makefile
index 9d7b164..bc99da3 100644
--- a/board/davinci/common/Makefile
+++ b/board/davinci/common/Makefile
@@ -29,7 +29,7 @@ endif
 
 LIB	= $(obj)lib$(VENDOR).o
 
-COBJS	:= misc.o davinci_pinmux.o
+COBJS	:= misc.o
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
diff --git a/board/davinci/da8xxevm/da830evm.c b/board/davinci/da8xxevm/da830evm.c
index 2021e73..c45c94b 100644
--- a/board/davinci/da8xxevm/da830evm.c
+++ b/board/davinci/da8xxevm/da830evm.c
@@ -46,8 +46,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define pinmux(x)	(&davinci_syscfg_regs->pinmux[x])
-
 /* SPI0 pin muxer settings */
 static const struct pinmux_config spi0_pins[] = {
 	{ pinmux(7), 1, 3 },
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index e0a3bbe..844e585 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -34,8 +34,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define pinmux(x)	(&davinci_syscfg_regs->pinmux[x])
-
 /* SPI0 pin muxer settings */
 static const struct pinmux_config spi1_pins[] = {
 	{ pinmux(5), 1, 1 },
diff --git a/board/davinci/da8xxevm/hawkboard_nand_spl.c b/board/davinci/da8xxevm/hawkboard_nand_spl.c
index e5e65e5..2285e7c 100644
--- a/board/davinci/da8xxevm/hawkboard_nand_spl.c
+++ b/board/davinci/da8xxevm/hawkboard_nand_spl.c
@@ -32,8 +32,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define pinmux(x)			(&davinci_syscfg_regs->pinmux[x])
-
 static const struct pinmux_config mii_pins[] = {
 	{ pinmux(2), 8, 1 },
 	{ pinmux(2), 8, 2 },
diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c
index 720a360..9b6c4c0 100644
--- a/board/davinci/ea20/ea20.c
+++ b/board/davinci/ea20/ea20.c
@@ -40,8 +40,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define pinmux(x)	(&davinci_syscfg_regs->pinmux[x])
-
 static const struct da8xx_panel lcd_panel = {
 	/* Casio COM57H531x */
 	.name = "Casio_COM57H531x",
diff --git a/nand_spl/board/davinci/da8xxevm/Makefile b/nand_spl/board/davinci/da8xxevm/Makefile
index accf716..7b06cd2 100644
--- a/nand_spl/board/davinci/da8xxevm/Makefile
+++ b/nand_spl/board/davinci/da8xxevm/Makefile
@@ -42,7 +42,7 @@ SOBJS	= _divsi3.o \
 
 COBJS	= cpu.o \
 	davinci_nand.o \
-	davinci_pinmux.o \
+	pinmux.o \
 	div0.o \
 	hawkboard_nand_spl.o \
 	memsize.o \
@@ -78,9 +78,9 @@ $(nandobj)u-boot.lds: $(LDSCRIPT)
 # create symbolic links for common files
 
 # from board directory
-$(obj)davinci_pinmux.c:
+$(obj)pinmux.c:
 	@rm -f $@
-	@ln -s $(TOPDIR)/board/davinci/common/davinci_pinmux.c $@
+	@ln -s $(TOPDIR)/arch/arm/cpu/arm926ejs/davinci/pinmux.c $@
 
 # from drivers/mtd/nand directory
 $(obj)davinci_nand.c:
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 2/8] arm, davinci: Fix clear_bss for zero length bss
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs Christian Riesch
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot

This patch fixes the clear_bss loop for bss sections that have
zero length, i.e., where __bss_start == __bss_end__.

Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
---
 arch/arm/cpu/arm926ejs/start.S |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 8b5355b..772793c 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -299,10 +299,12 @@ clear_bss:
 #endif
 	mov	r2, #0x00000000		/* clear			    */
 
-clbss_l:str	r2, [r0]		/* clear loop...		    */
+clbss_l:cmp	r0, r1			/* clear loop...		    */
+	beq	clbss_e
+	str	r2, [r0]
 	add	r0, r0, #4
-	cmp	r0, r1
-	bne	clbss_l
+	b	clbss_l
+clbss_e:
 
 #ifndef CONFIG_SPL_BUILD
 	bl coloured_LED_init
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 2/8] arm, davinci: Fix clear_bss for zero length bss Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-16  6:35   ` Heiko Schocher
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL Christian Riesch
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot


Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Heiko Schocher <hs@denx.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
---
 arch/arm/cpu/arm926ejs/davinci/Makefile |    3 ++-
 arch/arm/cpu/arm926ejs/davinci/spl.c    |   11 ++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile
index 2105ec5..99df0df 100644
--- a/arch/arm/cpu/arm926ejs/davinci/Makefile
+++ b/arch/arm/cpu/arm926ejs/davinci/Makefile
@@ -37,7 +37,8 @@ COBJS-$(CONFIG_DRIVER_TI_EMAC)	+= lxt972.o dp83848.o et1011c.o ksz8873.o
 
 ifdef CONFIG_SPL_BUILD
 COBJS-y	+= spl.o
-COBJS-y	+= dm365_lowlevel.o
+COBJS-$(CONFIG_SOC_DM365)	+= dm365_lowlevel.o
+COBJS-$(CONFIG_SOC_DA8XX)	+= da850_lowlevel.o
 endif
 
 SOBJS	= reset.o
diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
index d9b9398..bb4ee13 100644
--- a/arch/arm/cpu/arm926ejs/davinci/spl.c
+++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
@@ -50,14 +50,23 @@ inline void hang(void)
 
 void board_init_f(ulong dummy)
 {
+#ifdef CONFIG_SOC_DM365
 	dm36x_lowlevel_init(0);
+#endif
+#ifdef CONFIG_SOC_DA8XX
+	arch_cpu_init();
+#endif
 	relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
 }
 
 void board_init_r(gd_t *id, ulong dummy)
 {
-
+#ifdef CONFIG_SOC_DM365
 	nand_init();
 	puts("Nand boot...\n");
 	nand_boot();
+#endif
+#ifdef CONFIG_SOC_DA8XX
+	hang();
+#endif
 }
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
                   ` (2 preceding siblings ...)
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-15 17:50   ` Tom Rini
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c Christian Riesch
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot


Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Wolfgang Denk <wd@denx.de>
---
 arch/arm/lib/eabi_compat.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
index eb3e26d..2d49a28 100644
--- a/arch/arm/lib/eabi_compat.c
+++ b/arch/arm/lib/eabi_compat.c
@@ -13,10 +13,13 @@
 
 int raise (int signum)
 {
+#ifndef CONFIG_SPL_BUILD
 	printf("raise: Signal # %d caught\n", signum);
+#endif
 	return 0;
 }
 
+
 /* Dummy function to avoid linker complaints */
 void __aeabi_unwind_cpp_pr0(void)
 {
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
                   ` (3 preceding siblings ...)
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-16  6:49   ` Heiko Schocher
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 6/8] da850evm: Add a basic SPL for SPI boot Christian Riesch
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot

This patch replaces the pinmuxing functions from
arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c by those of
arch/arm/cpu/arm926ejs/davinci/pinmux.c

Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Heiko Schocher <hs@denx.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
---
 arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c |   34 +++++++++--------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
index c7ec70f..8dd897b 100644
--- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
+++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
@@ -30,6 +30,7 @@
 #include <asm/arch/ddr2_defs.h>
 #include <asm/arch/emif_defs.h>
 #include <asm/arch/pll_defs.h>
+#include <asm/arch/davinci_misc.h>
 
 void da850_waitloop(unsigned long loopcnt)
 {
@@ -248,6 +249,16 @@ void board_gpio_init(void)
 	return;
 }
 
+/* UART pin muxer settings */
+static const struct pinmux_config uart_pins[] = {
+#if CONFIG_SYS_NS16550_COM1 == DAVINCI_UART2_BASE
+	{ pinmux(0), 4, 6 },
+	{ pinmux(0), 4, 7 },
+	{ pinmux(4), 2, 4 },
+	{ pinmux(4), 2, 5 }
+#endif
+};
+
 int arch_cpu_init(void)
 {
 	/* Unlock kick registers */
@@ -257,27 +268,8 @@ int arch_cpu_init(void)
 	dv_maskbits(&davinci_syscfg_regs->suspsrc,
 		CONFIG_SYS_DA850_SYSCFG_SUSPSRC);
 
-	/* Setup Pinmux */
-	da850_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX0);
-	da850_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX1);
-	da850_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX2);
-	da850_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX3);
-	da850_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX4);
-	da850_pinmux_ctl(5, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX5);
-	da850_pinmux_ctl(6, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX6);
-	da850_pinmux_ctl(7, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX7);
-	da850_pinmux_ctl(8, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX8);
-	da850_pinmux_ctl(9, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX9);
-	da850_pinmux_ctl(10, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX10);
-	da850_pinmux_ctl(11, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX11);
-	da850_pinmux_ctl(12, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX12);
-	da850_pinmux_ctl(13, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX13);
-	da850_pinmux_ctl(14, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX14);
-	da850_pinmux_ctl(15, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX15);
-	da850_pinmux_ctl(16, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX16);
-	da850_pinmux_ctl(17, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX17);
-	da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
-	da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
+	/* setup serial port */
+	davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));
 
 	/* PLL setup */
 	da850_pll_init(davinci_pllc0_regs, CONFIG_SYS_DA850_PLL0_PLLM);
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 6/8] da850evm: Add a basic SPL for SPI boot
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
                   ` (4 preceding siblings ...)
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 7/8] mkimage: Fix variable length header support Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 8/8] arm, davinci: Add support for generating AIS images to the Makefile Christian Riesch
  7 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot

The code does not actually load u-boot from the SPI flash but
rather illustrates how SPL support for this board could look like.
This patch is for discussion only.

Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Heiko Schocher <hs@denx.de>
Cc: Sandeep Paulraj <s-paulraj@ti.com>
Cc: Nagabhushana Netagunte <nagabhushana.netagunte@ti.com>
---
 board/davinci/da8xxevm/u-boot-spl.lds |   73 +++++++++++++++++++++++++++++++++
 include/configs/da850evm.h            |   70 +++++++++++++++++++++++++++++++-
 2 files changed, 142 insertions(+), 1 deletions(-)
 create mode 100644 board/davinci/da8xxevm/u-boot-spl.lds

diff --git a/board/davinci/da8xxevm/u-boot-spl.lds b/board/davinci/da8xxevm/u-boot-spl.lds
new file mode 100644
index 0000000..6f6e065
--- /dev/null
+++ b/board/davinci/da8xxevm/u-boot-spl.lds
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
+ *
+ * (C) Copyright 2008
+ * Guennadi Liakhovetki, DENX Software Engineering, <lg@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
+ */
+
+MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
+		LENGTH = CONFIG_SPL_MAX_SIZE }
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+	. = 0x00000000;
+
+	. = ALIGN(4);
+	.text      :
+	{
+	__start = .;
+	  arch/arm/cpu/arm926ejs/start.o	(.text)
+	  *(.text*)
+	} >.sram
+
+	. = ALIGN(4);
+	.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
+
+	. = ALIGN(4);
+	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+	. = ALIGN(4);
+	.rel.dyn : {
+		__rel_dyn_start = .;
+		*(.rel*)
+		__rel_dyn_end = .;
+	} >.sram
+
+	.dynsym : {
+		__dynsym_start = .;
+		*(.dynsym)
+	} >.sram
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start = .;
+		*(.bss*)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} >.sram
+
+	__image_copy_end = .;
+	_end = .;
+}
diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h
index 4c14370..3a03822 100644
--- a/include/configs/da850evm.h
+++ b/include/configs/da850evm.h
@@ -29,7 +29,6 @@
 #define CONFIG_DRIVER_TI_EMAC
 #define CONFIG_USE_SPIFLASH
 
-
 /*
  * SoC Configuration
  */
@@ -64,6 +63,40 @@
 #define CONFIG_NR_DRAM_BANKS	1 /* we have 1 bank of DRAM */
 #define CONFIG_STACKSIZE	(256*1024) /* regular stack */
 
+#define CONFIG_SYS_DA850_SYSCFG_SUSPSRC ((1 << 27) | (1 << 22) | (1 << 20) | (1 << 5) | (1 << 16))
+
+/*
+ * PLL configuration
+ */
+#define CONFIG_SYS_DV_CLKMODE          0
+#define CONFIG_SYS_DA850_PLL0_POSTDIV  1
+#define CONFIG_SYS_DA850_PLL0_PLLDIV1  0x8000
+#define CONFIG_SYS_DA850_PLL0_PLLDIV2  0x8001
+#define CONFIG_SYS_DA850_PLL0_PLLDIV3  0x8002
+#define CONFIG_SYS_DA850_PLL0_PLLDIV4  0x8003
+#define CONFIG_SYS_DA850_PLL0_PLLDIV5  0x8002
+#define CONFIG_SYS_DA850_PLL0_PLLDIV6  CONFIG_SYS_DA850_PLL0_PLLDIV1
+#define CONFIG_SYS_DA850_PLL0_PLLDIV7  0x8005
+
+#define CONFIG_SYS_DA850_PLL1_POSTDIV  1
+#define CONFIG_SYS_DA850_PLL1_PLLDIV1  0x8000
+#define CONFIG_SYS_DA850_PLL1_PLLDIV2  0x8001
+#define CONFIG_SYS_DA850_PLL1_PLLDIV3  0x8002
+
+#define CONFIG_SYS_DA850_PLL0_PLLM     24
+#define CONFIG_SYS_DA850_PLL1_PLLM     21
+
+/*
+ * DDR2 memory configuration
+ */
+#define CONFIG_SYS_DA850_DDR2_DDRPHYCR 0x000000C4
+#define CONFIG_SYS_DA850_DDR2_SDBCR    0x0A034622
+#define CONFIG_SYS_DA850_DDR2_SDBCR2   0x00000000
+#define CONFIG_SYS_DA850_DDR2_SDTIMR   0x184929C8
+#define CONFIG_SYS_DA850_DDR2_SDTIMR2  0xB80FC700
+#define CONFIG_SYS_DA850_DDR2_SDRCR    0x00000406
+#define CONFIG_SYS_DA850_DDR2_PBBPR    0x30
+
 /*
  * Serial Driver info
  */
@@ -75,6 +108,7 @@
 #define CONFIG_CONS_INDEX	1		/* use UART0 for console */
 #define CONFIG_BAUDRATE		115200		/* Default baud rate */
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
+#define CONFIG_SYS_DA850_LPSC_UART DAVINCI_LPSC_UART2
 
 #define CONFIG_SPI
 #define CONFIG_SPI_FLASH
@@ -241,8 +275,42 @@
 #undef CONFIG_CMD_ENV
 #endif
 
+/* defines for SPL */
+#define CONFIG_SPL
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_LDSCRIPT	"$(BOARDDIR)/u-boot-spl.lds"
+#define CONFIG_SPL_STACK	0x8001ff00
+#define CONFIG_SPL_TEXT_BASE	0x80000000
+#define CONFIG_SPL_MAX_SIZE	(20<<10)
+
 /* additions for new relocation code, must added to all boards */
 #define CONFIG_SYS_SDRAM_BASE		0xc0000000
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_SDRAM_BASE + 0x1000 - /* Fix this */ \
 					GENERATED_GBL_DATA_SIZE)
+
+
+/* dummy defines to allow build of code that is never used */
+#define CONFIG_SYS_DA850_PINMUX0 0
+#define CONFIG_SYS_DA850_PINMUX1 0
+#define CONFIG_SYS_DA850_PINMUX2 0
+#define CONFIG_SYS_DA850_PINMUX3 0
+#define CONFIG_SYS_DA850_PINMUX4 0
+#define CONFIG_SYS_DA850_PINMUX5 0
+#define CONFIG_SYS_DA850_PINMUX6 0
+#define CONFIG_SYS_DA850_PINMUX7 0
+#define CONFIG_SYS_DA850_PINMUX8 0
+#define CONFIG_SYS_DA850_PINMUX9 0
+#define CONFIG_SYS_DA850_PINMUX10 0
+#define CONFIG_SYS_DA850_PINMUX11 0
+#define CONFIG_SYS_DA850_PINMUX12 0
+#define CONFIG_SYS_DA850_PINMUX13 0
+#define CONFIG_SYS_DA850_PINMUX14 0
+#define CONFIG_SYS_DA850_PINMUX15 0
+#define CONFIG_SYS_DA850_PINMUX16 0
+#define CONFIG_SYS_DA850_PINMUX17 0
+#define CONFIG_SYS_DA850_PINMUX18 0
+#define CONFIG_SYS_DA850_PINMUX19 0
+
 #endif /* __CONFIG_H */
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 7/8] mkimage: Fix variable length header support
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
                   ` (5 preceding siblings ...)
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 6/8] da850evm: Add a basic SPL for SPI boot Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 8/8] arm, davinci: Add support for generating AIS images to the Makefile Christian Riesch
  7 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot

Support for variable length images like AIS image was introduced
in commit f0662105b674a3874227316abf8536bebc9b5995. A parameter
"-s" was also introduced to prohibit copying of the image file
automatically in the main program. However, this parameter
was implemented incorrectly and the image file was copied
nevertheless.

Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Heiko Schocher <hs@denx.de>
---
 tools/mkimage.c |   97 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 49 insertions(+), 48 deletions(-)

diff --git a/tools/mkimage.c b/tools/mkimage.c
index 36e28ec..eeb1b10 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -383,65 +383,66 @@ NXTARG:		;
 		exit (EXIT_FAILURE);
 	}
 
-	if (!params.skipcpy &&
-		(params.type == IH_TYPE_MULTI ||
-			params.type == IH_TYPE_SCRIPT)) {
-		char *file = params.datafile;
-		uint32_t size;
-
-		for (;;) {
-			char *sep = NULL;
-
-			if (file) {
-				if ((sep = strchr(file, ':')) != NULL) {
-					*sep = '\0';
+	if (!params.skipcpy) {
+		if (params.type == IH_TYPE_MULTI ||
+		    params.type == IH_TYPE_SCRIPT) {
+			char *file = params.datafile;
+			uint32_t size;
+
+			for (;;) {
+				char *sep = NULL;
+
+				if (file) {
+					if ((sep = strchr(file, ':')) != NULL) {
+						*sep = '\0';
+					}
+
+					if (stat (file, &sbuf) < 0) {
+						fprintf (stderr, "%s: Can't stat %s: %s\n",
+							 params.cmdname, file, strerror(errno));
+						exit (EXIT_FAILURE);
+					}
+					size = cpu_to_uimage (sbuf.st_size);
+				} else {
+					size = 0;
 				}
 
-				if (stat (file, &sbuf) < 0) {
-					fprintf (stderr, "%s: Can't stat %s: %s\n",
-						params.cmdname, file, strerror(errno));
+				if (write(ifd, (char *)&size, sizeof(size)) != sizeof(size)) {
+					fprintf (stderr, "%s: Write error on %s: %s\n",
+						 params.cmdname, params.imagefile,
+						 strerror(errno));
 					exit (EXIT_FAILURE);
 				}
-				size = cpu_to_uimage (sbuf.st_size);
-			} else {
-				size = 0;
-			}
 
-			if (write(ifd, (char *)&size, sizeof(size)) != sizeof(size)) {
-				fprintf (stderr, "%s: Write error on %s: %s\n",
-					params.cmdname, params.imagefile,
-					strerror(errno));
-				exit (EXIT_FAILURE);
-			}
+				if (!file) {
+					break;
+				}
 
-			if (!file) {
-				break;
+				if (sep) {
+					*sep = ':';
+					file = sep + 1;
+				} else {
+					file = NULL;
+				}
 			}
 
-			if (sep) {
-				*sep = ':';
-				file = sep + 1;
-			} else {
-				file = NULL;
-			}
-		}
+			file = params.datafile;
 
-		file = params.datafile;
-
-		for (;;) {
-			char *sep = strchr(file, ':');
-			if (sep) {
-				*sep = '\0';
-				copy_file (ifd, file, 1);
-				*sep++ = ':';
-				file = sep;
-			} else {
-				copy_file (ifd, file, 0);
-				break;
+			for (;;) {
+				char *sep = strchr(file, ':');
+				if (sep) {
+					*sep = '\0';
+					copy_file (ifd, file, 1);
+					*sep++ = ':';
+					file = sep;
+				} else {
+					copy_file (ifd, file, 0);
+					break;
+				}
 			}
+		} else {
+			copy_file (ifd, params.datafile, 0);
 		}
-	} else {
-		copy_file (ifd, params.datafile, 0);
 	}
 
 	/* We're a bit of paranoid */
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 8/8] arm, davinci: Add support for generating AIS images to the Makefile
  2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
                   ` (6 preceding siblings ...)
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 7/8] mkimage: Fix variable length header support Christian Riesch
@ 2011-11-15 10:37 ` Christian Riesch
  7 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-15 10:37 UTC (permalink / raw)
  To: u-boot


Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Heiko Schocher <hs@denx.de>
---
 .gitignore |    1 +
 Makefile   |    7 +++++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index 70a11f7..1c5defd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,7 @@
 /u-boot.dis
 /u-boot.lds
 /u-boot.ubl
+/u-boot.ais
 /u-boot.dtb
 
 #
diff --git a/Makefile b/Makefile
index 294c762..2fbc032 100644
--- a/Makefile
+++ b/Makefile
@@ -424,6 +424,13 @@ $(obj)u-boot.ubl:       $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
 		rm $(obj)u-boot-ubl.bin
 		rm $(obj)spl/u-boot-spl-pad.bin
 
+$(obj)u-boot.ais:       $(obj)spl/u-boot-spl.bin
+		$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
+		$(obj)tools/mkimage -s -n /dev/null -T aisimage \
+		-e $(CONFIG_SPL_TEXT_BASE) -d $(obj)spl/u-boot-spl-pad.bin \
+		$(obj)u-boot.ais
+		rm $(obj)spl/u-boot-spl-pad.bin
+
 ifeq ($(CONFIG_SANDBOX),y)
 GEN_UBOOT = \
 		cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL Christian Riesch
@ 2011-11-15 17:50   ` Tom Rini
  2011-11-16  7:37     ` Christian Riesch
  0 siblings, 1 reply; 21+ messages in thread
From: Tom Rini @ 2011-11-15 17:50 UTC (permalink / raw)
  To: u-boot

On Tue, Nov 15, 2011 at 3:37 AM, Christian Riesch
<christian.riesch@omicron.at> wrote:
>
> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
> Cc: Wolfgang Denk <wd@denx.de>
> ---
> ?arch/arm/lib/eabi_compat.c | ? ?3 +++
> ?1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
> index eb3e26d..2d49a28 100644
> --- a/arch/arm/lib/eabi_compat.c
> +++ b/arch/arm/lib/eabi_compat.c
> @@ -13,10 +13,13 @@
>
> ?int raise (int signum)
> ?{
> +#ifndef CONFIG_SPL_BUILD
> ? ? ? ?printf("raise: Signal # %d caught\n", signum);
> +#endif
> ? ? ? ?return 0;
> ?}
>
> +
> ?/* Dummy function to avoid linker complaints */
> ?void __aeabi_unwind_cpp_pr0(void)
> ?{

printf exists for omap3 SPL.  But perhaps the question is, why isn't
this code being gc'd away in your SPL?

-- 
Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs Christian Riesch
@ 2011-11-16  6:35   ` Heiko Schocher
  2011-11-16  7:13     ` Christian Riesch
  0 siblings, 1 reply; 21+ messages in thread
From: Heiko Schocher @ 2011-11-16  6:35 UTC (permalink / raw)
  To: u-boot

Hello Christian,

Christian Riesch wrote:
> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Sandeep Paulraj <s-paulraj@ti.com>
> ---
>  arch/arm/cpu/arm926ejs/davinci/Makefile |    3 ++-
>  arch/arm/cpu/arm926ejs/davinci/spl.c    |   11 ++++++++++-
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile
> index 2105ec5..99df0df 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/Makefile
> +++ b/arch/arm/cpu/arm926ejs/davinci/Makefile
> @@ -37,7 +37,8 @@ COBJS-$(CONFIG_DRIVER_TI_EMAC)	+= lxt972.o dp83848.o et1011c.o ksz8873.o
>  
>  ifdef CONFIG_SPL_BUILD
>  COBJS-y	+= spl.o
> -COBJS-y	+= dm365_lowlevel.o
> +COBJS-$(CONFIG_SOC_DM365)	+= dm365_lowlevel.o
> +COBJS-$(CONFIG_SOC_DA8XX)	+= da850_lowlevel.o
>  endif
>  
>  SOBJS	= reset.o
> diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
> index d9b9398..bb4ee13 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/spl.c
> +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
> @@ -50,14 +50,23 @@ inline void hang(void)
>  
>  void board_init_f(ulong dummy)
>  {
> +#ifdef CONFIG_SOC_DM365
>  	dm36x_lowlevel_init(0);
> +#endif
> +#ifdef CONFIG_SOC_DA8XX
> +	arch_cpu_init();
> +#endif
>  	relocate_code(CONFIG_SPL_STACK, NULL, CONFIG_SPL_TEXT_BASE);
>  }
>  
>  void board_init_r(gd_t *id, ulong dummy)
>  {
> -
> +#ifdef CONFIG_SOC_DM365
>  	nand_init();
>  	puts("Nand boot...\n");
>  	nand_boot();
> +#endif
> +#ifdef CONFIG_SOC_DA8XX
> +	hang();
> +#endif

Maybe a comment why you call hang() here (I think because SPL code
is not yet tried out on da8xx) would help here. Beside of that:

Acked-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree Christian Riesch
@ 2011-11-16  6:38   ` Heiko Schocher
  0 siblings, 0 replies; 21+ messages in thread
From: Heiko Schocher @ 2011-11-16  6:38 UTC (permalink / raw)
  To: u-boot

Hello Christian,

Christian Riesch wrote:
> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
> Cc: Sandeep Paulraj <s-paulraj@ti.com>
> ---
>  arch/arm/cpu/arm926ejs/davinci/Makefile            |    2 +-
>  .../arm/cpu/arm926ejs/davinci/pinmux.c             |    0
>  arch/arm/include/asm/arch-davinci/hardware.h       |    2 ++
>  board/davinci/common/Makefile                      |    2 +-
>  board/davinci/da8xxevm/da830evm.c                  |    2 --
>  board/davinci/da8xxevm/da850evm.c                  |    2 --
>  board/davinci/da8xxevm/hawkboard_nand_spl.c        |    2 --
>  board/davinci/ea20/ea20.c                          |    2 --
>  nand_spl/board/davinci/da8xxevm/Makefile           |    6 +++---
>  9 files changed, 7 insertions(+), 13 deletions(-)
>  rename board/davinci/common/davinci_pinmux.c => arch/arm/cpu/arm926ejs/davinci/pinmux.c (100%)

I have similiar patch in my queue, thanks!

Acked-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-15 10:37 ` [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c Christian Riesch
@ 2011-11-16  6:49   ` Heiko Schocher
  2011-11-18  8:22     ` Christian Riesch
                       ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Heiko Schocher @ 2011-11-16  6:49 UTC (permalink / raw)
  To: u-boot

Hello Christian,

Christian Riesch wrote:
> This patch replaces the pinmuxing functions from
> arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c by those of
> arch/arm/cpu/arm926ejs/davinci/pinmux.c
> 
> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Sandeep Paulraj <s-paulraj@ti.com>
> ---
>  arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c |   34 +++++++++--------------
>  1 files changed, 13 insertions(+), 21 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> index c7ec70f..8dd897b 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> @@ -30,6 +30,7 @@
>  #include <asm/arch/ddr2_defs.h>
>  #include <asm/arch/emif_defs.h>
>  #include <asm/arch/pll_defs.h>
> +#include <asm/arch/davinci_misc.h>
>  
>  void da850_waitloop(unsigned long loopcnt)
>  {
> @@ -248,6 +249,16 @@ void board_gpio_init(void)
>  	return;
>  }
>  
> +/* UART pin muxer settings */
> +static const struct pinmux_config uart_pins[] = {
> +#if CONFIG_SYS_NS16550_COM1 == DAVINCI_UART2_BASE
> +	{ pinmux(0), 4, 6 },
> +	{ pinmux(0), 4, 7 },
> +	{ pinmux(4), 2, 4 },
> +	{ pinmux(4), 2, 5 }
> +#endif
> +};
> +
>  int arch_cpu_init(void)
>  {
>  	/* Unlock kick registers */
> @@ -257,27 +268,8 @@ int arch_cpu_init(void)
>  	dv_maskbits(&davinci_syscfg_regs->suspsrc,
>  		CONFIG_SYS_DA850_SYSCFG_SUSPSRC);
>  
> -	/* Setup Pinmux */
> -	da850_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX0);
> -	da850_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX1);
> -	da850_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX2);
> -	da850_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX3);
> -	da850_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX4);
> -	da850_pinmux_ctl(5, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX5);
> -	da850_pinmux_ctl(6, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX6);
> -	da850_pinmux_ctl(7, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX7);
> -	da850_pinmux_ctl(8, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX8);
> -	da850_pinmux_ctl(9, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX9);
> -	da850_pinmux_ctl(10, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX10);
> -	da850_pinmux_ctl(11, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX11);
> -	da850_pinmux_ctl(12, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX12);
> -	da850_pinmux_ctl(13, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX13);
> -	da850_pinmux_ctl(14, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX14);
> -	da850_pinmux_ctl(15, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX15);
> -	da850_pinmux_ctl(16, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX16);
> -	da850_pinmux_ctl(17, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX17);
> -	da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
> -	da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
> +	/* setup serial port */
> +	davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));

Why only the uart pins? We could use here something like "board_pins"
and initialize here all pins for the board?

I reworked this for the enbw_cmc board too, and removed also the
CONFIG_SYS_DA850_PINMUX* defines complete ... but I am not really
happy with it. Why?

We have for example on the am1808 19 * 8 = 152 pins to setup up

If using the CONFIG_SYS_DA850_PINMUX* defines we have 19 register-
writes and have setup them all (And you must think about all
your pins, if we use such a struct, not defined pins are in
default state ... which is good or bad ...)

With using davinci_configure_pin_mux() we have 152 * (read, write
and some logic operations) ... and I have to code a "static const
struct pinmux_config board_pins" with 152 lines in the code ...

What do others think?

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs
  2011-11-16  6:35   ` Heiko Schocher
@ 2011-11-16  7:13     ` Christian Riesch
  2011-11-16  7:35       ` Heiko Schocher
  0 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-16  7:13 UTC (permalink / raw)
  To: u-boot

Hello Heiko,
thanks for your comments!

On Wed, Nov 16, 2011 at 7:35 AM, Heiko Schocher <hs@denx.de> wrote:
> Christian Riesch wrote:
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> Cc: Heiko Schocher <hs@denx.de>
>> Cc: Sandeep Paulraj <s-paulraj@ti.com>
>> ---
>> ?arch/arm/cpu/arm926ejs/davinci/Makefile | ? ?3 ++-
>> ?arch/arm/cpu/arm926ejs/davinci/spl.c ? ?| ? 11 ++++++++++-
>> ?2 files changed, 12 insertions(+), 2 deletions(-)
>>
[...]
>> diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
>> index d9b9398..bb4ee13 100644
>> --- a/arch/arm/cpu/arm926ejs/davinci/spl.c
>> +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
[...]
>> ?void board_init_r(gd_t *id, ulong dummy)
>> ?{
>> -
>> +#ifdef CONFIG_SOC_DM365
>> ? ? ? nand_init();
>> ? ? ? puts("Nand boot...\n");
>> ? ? ? nand_boot();
>> +#endif
>> +#ifdef CONFIG_SOC_DA8XX
>> + ? ? hang();
>> +#endif
>
> Maybe a comment why you call hang() here (I think because SPL code
> is not yet tried out on da8xx) would help here.

The code is tested on da8xx (the AM1808 I tested it on is part of the
da8xx family) but as I didn't yet look into loading an u-boot image
from SPI flash (which I should do here for the da850evm) I just call
hang() here. I commented on this in the cover message:

---snip---
This patchset is not a complete implementation, it is missing the
code that is actually used to load u-boot from SPI flash to the
DDR memory. The code just hangs after the initialization is done. But
I submit it nevertheless as RFC and I am looking forward to your comments.
---snip---

Regards, Christian

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs
  2011-11-16  7:13     ` Christian Riesch
@ 2011-11-16  7:35       ` Heiko Schocher
  0 siblings, 0 replies; 21+ messages in thread
From: Heiko Schocher @ 2011-11-16  7:35 UTC (permalink / raw)
  To: u-boot

Hello Christian,

Christian Riesch wrote:
> Hello Heiko,
> thanks for your comments!
> 
> On Wed, Nov 16, 2011 at 7:35 AM, Heiko Schocher <hs@denx.de> wrote:
>> Christian Riesch wrote:
>>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>>> Cc: Heiko Schocher <hs@denx.de>
>>> Cc: Sandeep Paulraj <s-paulraj@ti.com>
>>> ---
>>>  arch/arm/cpu/arm926ejs/davinci/Makefile |    3 ++-
>>>  arch/arm/cpu/arm926ejs/davinci/spl.c    |   11 ++++++++++-
>>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>>
> [...]
>>> diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
>>> index d9b9398..bb4ee13 100644
>>> --- a/arch/arm/cpu/arm926ejs/davinci/spl.c
>>> +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
> [...]
>>>  void board_init_r(gd_t *id, ulong dummy)
>>>  {
>>> -
>>> +#ifdef CONFIG_SOC_DM365
>>>       nand_init();
>>>       puts("Nand boot...\n");
>>>       nand_boot();
>>> +#endif
>>> +#ifdef CONFIG_SOC_DA8XX
>>> +     hang();
>>> +#endif
>> Maybe a comment why you call hang() here (I think because SPL code
>> is not yet tried out on da8xx) would help here.
> 
> The code is tested on da8xx (the AM1808 I tested it on is part of the
> da8xx family) but as I didn't yet look into loading an u-boot image
> from SPI flash (which I should do here for the da850evm) I just call
> hang() here. I commented on this in the cover message:
> 
> ---snip---
> This patchset is not a complete implementation, it is missing the
> code that is actually used to load u-boot from SPI flash to the
> DDR memory. The code just hangs after the initialization is done. But
> I submit it nevertheless as RFC and I am looking forward to your comments.
> ---snip---

Ups .. sorry ... missed it. Hmm... have you no u-boot image on this
board (for example in nand)? Then you could load as an example this
code ...

Hmm.. as it is a RFC ... maybe we should go the following way:
(just a fast idea):

create new file u-boot:spl/boot.c:

/* could be board specific */
static int __weak get_boot_method(void)
{
#if defined SPL_BOOTMETHOD_NAND
	return SPL_BOOTMETHOD_NAND
#endif
#if defined SPL_BOOTMETHOD_SPI
	return SPL_BOOTMETHOD_SPI
#endif
[...]

/*
 * if more options are defined for one board
 * board specific code has to be written, to decide
 * which boot method is used (gpio pin?)
 * So it is possible to boot from different
 * devices...
 */
}

void board_init_r(gd_t *id, ulong dummy)
{
	int boot_method;

	boot_method = get_boot_method();
	switch (boot_ethod) {
#if defined SPL_BOOTMETHOD_NAND
	case SPL_BOOTMETHOD_NAND:
		nand_init();
		puts("Nand boot...\n");
		nand_boot();
		break;
#endif
#if defined SPL_BOOTMETHOD_SPI
	case SPL_BOOTMETHOD_NAND:
		puts("SPI boot...\n");
		break;
#endif
	default:
		/* error */
		puts("no valid boot method\n");
		hang();
		break;
	}
}

That should be usable from other architectures too ...

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL
  2011-11-15 17:50   ` Tom Rini
@ 2011-11-16  7:37     ` Christian Riesch
  2011-11-16 14:18       ` Tom Rini
  0 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-16  7:37 UTC (permalink / raw)
  To: u-boot

Hi Tom,
thanks for your comments!

On Tue, Nov 15, 2011 at 6:50 PM, Tom Rini <tom.rini@gmail.com> wrote:
> On Tue, Nov 15, 2011 at 3:37 AM, Christian Riesch
> <christian.riesch@omicron.at> wrote:
>>
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> Cc: Wolfgang Denk <wd@denx.de>
>> ---
>> ?arch/arm/lib/eabi_compat.c | ? ?3 +++
>> ?1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
>> index eb3e26d..2d49a28 100644
>> --- a/arch/arm/lib/eabi_compat.c
>> +++ b/arch/arm/lib/eabi_compat.c
>> @@ -13,10 +13,13 @@
>>
>> ?int raise (int signum)
>> ?{
>> +#ifndef CONFIG_SPL_BUILD
>> ? ? ? ?printf("raise: Signal # %d caught\n", signum);
>> +#endif
>> ? ? ? ?return 0;
>> ?}
>>
>> +
>> ?/* Dummy function to avoid linker complaints */
>> ?void __aeabi_unwind_cpp_pr0(void)
>> ?{
>
> printf exists for omap3 SPL.

Ok, I guess I should make this something like #if
!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT).

> But perhaps the question is, why isn't
> this code being gc'd away in your SPL?

I must admit that I have absolutely no idea what this function is used
for. I only see a linker error due to the missing printf.
Any ideas?

Christian

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL
  2011-11-16  7:37     ` Christian Riesch
@ 2011-11-16 14:18       ` Tom Rini
  0 siblings, 0 replies; 21+ messages in thread
From: Tom Rini @ 2011-11-16 14:18 UTC (permalink / raw)
  To: u-boot

On Wed, Nov 16, 2011 at 12:37 AM, Christian Riesch
<christian.riesch@omicron.at> wrote:
> Hi Tom,
> thanks for your comments!
>
> On Tue, Nov 15, 2011 at 6:50 PM, Tom Rini <tom.rini@gmail.com> wrote:
>> On Tue, Nov 15, 2011 at 3:37 AM, Christian Riesch
>> <christian.riesch@omicron.at> wrote:
>>>
>>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>>> Cc: Wolfgang Denk <wd@denx.de>
>>> ---
>>> ?arch/arm/lib/eabi_compat.c | ? ?3 +++
>>> ?1 files changed, 3 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
>>> index eb3e26d..2d49a28 100644
>>> --- a/arch/arm/lib/eabi_compat.c
>>> +++ b/arch/arm/lib/eabi_compat.c
>>> @@ -13,10 +13,13 @@
>>>
>>> ?int raise (int signum)
>>> ?{
>>> +#ifndef CONFIG_SPL_BUILD
>>> ? ? ? ?printf("raise: Signal # %d caught\n", signum);
>>> +#endif
>>> ? ? ? ?return 0;
>>> ?}
>>>
>>> +
>>> ?/* Dummy function to avoid linker complaints */
>>> ?void __aeabi_unwind_cpp_pr0(void)
>>> ?{
>>
>> printf exists for omap3 SPL.
>
> Ok, I guess I should make this something like #if
> !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT).

If that fixes the link error, yes :)

>> But perhaps the question is, why isn't
>> this code being gc'd away in your SPL?
>
> I must admit that I have absolutely no idea what this function is used
> for. I only see a linker error due to the missing printf.
> Any ideas?

Not off-hand, but you can always run a for o in `find objdir -name
*.o`;do echo $o ; arm-linux-gnueabi-nm $o | grep raise;done or so and
see where it's coming from :)

-- 
Tom

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-16  6:49   ` Heiko Schocher
@ 2011-11-18  8:22     ` Christian Riesch
  2011-11-18  8:24     ` Christian Riesch
  2011-11-18  8:35     ` Christian Riesch
  2 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-18  8:22 UTC (permalink / raw)
  To: u-boot

Hello Heiko,

On Wed, Nov 16, 2011 at 7:49 AM, Heiko Schocher <hs@denx.de> wrote:
> Hello Christian,
>
> Christian Riesch wrote:
>> This patch replaces the pinmuxing functions from
>> arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c by those of
>> arch/arm/cpu/arm926ejs/davinci/pinmux.c
>>
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> Cc: Heiko Schocher <hs@denx.de>
>> Cc: Sandeep Paulraj <s-paulraj@ti.com>
>> ---
>> ?arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c | ? 34 +++++++++--------------
>> ?1 files changed, 13 insertions(+), 21 deletions(-)
>>
>> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> index c7ec70f..8dd897b 100644
>> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> @@ -30,6 +30,7 @@
>> ?#include <asm/arch/ddr2_defs.h>
>> ?#include <asm/arch/emif_defs.h>
>> ?#include <asm/arch/pll_defs.h>
>> +#include <asm/arch/davinci_misc.h>
>>
>> ?void da850_waitloop(unsigned long loopcnt)
>> ?{
>> @@ -248,6 +249,16 @@ void board_gpio_init(void)
>> ? ? ? return;
>> ?}
>>
>> +/* UART pin muxer settings */
>> +static const struct pinmux_config uart_pins[] = {
>> +#if CONFIG_SYS_NS16550_COM1 == DAVINCI_UART2_BASE
>> + ? ? { pinmux(0), 4, 6 },
>> + ? ? { pinmux(0), 4, 7 },
>> + ? ? { pinmux(4), 2, 4 },
>> + ? ? { pinmux(4), 2, 5 }
>> +#endif
>> +};
>> +
>> ?int arch_cpu_init(void)
>> ?{
>> ? ? ? /* Unlock kick registers */
>> @@ -257,27 +268,8 @@ int arch_cpu_init(void)
>> ? ? ? dv_maskbits(&davinci_syscfg_regs->suspsrc,
>> ? ? ? ? ? ? ? CONFIG_SYS_DA850_SYSCFG_SUSPSRC);
>>
>> - ? ? /* Setup Pinmux */
>> - ? ? da850_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX0);
>> - ? ? da850_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX1);
>> - ? ? da850_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX2);
>> - ? ? da850_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX3);
>> - ? ? da850_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX4);
>> - ? ? da850_pinmux_ctl(5, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX5);
>> - ? ? da850_pinmux_ctl(6, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX6);
>> - ? ? da850_pinmux_ctl(7, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX7);
>> - ? ? da850_pinmux_ctl(8, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX8);
>> - ? ? da850_pinmux_ctl(9, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX9);
>> - ? ? da850_pinmux_ctl(10, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX10);
>> - ? ? da850_pinmux_ctl(11, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX11);
>> - ? ? da850_pinmux_ctl(12, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX12);
>> - ? ? da850_pinmux_ctl(13, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX13);
>> - ? ? da850_pinmux_ctl(14, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX14);
>> - ? ? da850_pinmux_ctl(15, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX15);
>> - ? ? da850_pinmux_ctl(16, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX16);
>> - ? ? da850_pinmux_ctl(17, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX17);
>> - ? ? da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
>> - ? ? da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
>> + ? ? /* setup serial port */
>> + ? ? davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));
>
> Why only the uart pins? We could use here something like "board_pins"
> and initialize here all pins for the board?

Because only the UART pins are required here. Since the CPU has
already loaded the SPL from SPI flash or is executing the SPL from NOR
flash or whatever, the pins for memory access are already configured.
Later the board specific file can do all the configuration that it
actually needs, see board/davinci/da8xxevm/da850evm.c.

> I reworked this for the enbw_cmc board too, and removed also the
> CONFIG_SYS_DA850_PINMUX* defines complete ... but I am not really
> happy with it. Why?
>
> We have for example on the am1808 19 * 8 = 152 pins to setup up
>
> If using the CONFIG_SYS_DA850_PINMUX* defines we have 19 register-
> writes and have setup them all (And you must think about all
> your pins, if we use such a struct, not defined pins are in
> default state ... which is good or bad ...)
>
> With using davinci_configure_pin_mux() we have 152 * (read, write
> and some logic operations)

Actually the number of read, writes, logic operations will depend on
the number of GPIO pins you use on your board. I guess you will not
change the pinmux settings of pins you didn't connect on your board.
But yes, these are a lot of operations that need to be done.

... and I have to code a "static const
> struct pinmux_config board_pins" with 152 lines in the code ...

How about using an approach like in board/davinci/da8xxevm/da850evm.c.
There we have several structs like

static const struct pinmux config_spi1_pins[] = {
...
}

that defines pinmux for groups of pins that are usually used together.

Later, these groups are put together in

static const struct pinmux_resource pinmuxes[] = {

}


>
> What do others think?
>
> bye,
> Heiko
> --
> DENX Software Engineering GmbH, ? ? MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-16  6:49   ` Heiko Schocher
  2011-11-18  8:22     ` Christian Riesch
@ 2011-11-18  8:24     ` Christian Riesch
  2011-11-18  8:35     ` Christian Riesch
  2 siblings, 0 replies; 21+ messages in thread
From: Christian Riesch @ 2011-11-18  8:24 UTC (permalink / raw)
  To: u-boot

Hello Heiko,
sorry for my last (incomplete) mail.

On Wed, Nov 16, 2011 at 7:49 AM, Heiko Schocher <hs@denx.de> wrote:
> Hello Christian,
>
> Christian Riesch wrote:
>> This patch replaces the pinmuxing functions from
>> arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c by those of
>> arch/arm/cpu/arm926ejs/davinci/pinmux.c
>>
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> Cc: Heiko Schocher <hs@denx.de>
>> Cc: Sandeep Paulraj <s-paulraj@ti.com>
>> ---
>> ?arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c | ? 34 +++++++++--------------
>> ?1 files changed, 13 insertions(+), 21 deletions(-)
>>
>> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> index c7ec70f..8dd897b 100644
>> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> @@ -30,6 +30,7 @@
>> ?#include <asm/arch/ddr2_defs.h>
>> ?#include <asm/arch/emif_defs.h>
>> ?#include <asm/arch/pll_defs.h>
>> +#include <asm/arch/davinci_misc.h>
>>
>> ?void da850_waitloop(unsigned long loopcnt)
>> ?{
>> @@ -248,6 +249,16 @@ void board_gpio_init(void)
>> ? ? ? return;
>> ?}
>>
>> +/* UART pin muxer settings */
>> +static const struct pinmux_config uart_pins[] = {
>> +#if CONFIG_SYS_NS16550_COM1 == DAVINCI_UART2_BASE
>> + ? ? { pinmux(0), 4, 6 },
>> + ? ? { pinmux(0), 4, 7 },
>> + ? ? { pinmux(4), 2, 4 },
>> + ? ? { pinmux(4), 2, 5 }
>> +#endif
>> +};
>> +
>> ?int arch_cpu_init(void)
>> ?{
>> ? ? ? /* Unlock kick registers */
>> @@ -257,27 +268,8 @@ int arch_cpu_init(void)
>> ? ? ? dv_maskbits(&davinci_syscfg_regs->suspsrc,
>> ? ? ? ? ? ? ? CONFIG_SYS_DA850_SYSCFG_SUSPSRC);
>>
>> - ? ? /* Setup Pinmux */
>> - ? ? da850_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX0);
>> - ? ? da850_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX1);
>> - ? ? da850_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX2);
>> - ? ? da850_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX3);
>> - ? ? da850_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX4);
>> - ? ? da850_pinmux_ctl(5, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX5);
>> - ? ? da850_pinmux_ctl(6, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX6);
>> - ? ? da850_pinmux_ctl(7, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX7);
>> - ? ? da850_pinmux_ctl(8, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX8);
>> - ? ? da850_pinmux_ctl(9, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX9);
>> - ? ? da850_pinmux_ctl(10, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX10);
>> - ? ? da850_pinmux_ctl(11, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX11);
>> - ? ? da850_pinmux_ctl(12, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX12);
>> - ? ? da850_pinmux_ctl(13, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX13);
>> - ? ? da850_pinmux_ctl(14, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX14);
>> - ? ? da850_pinmux_ctl(15, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX15);
>> - ? ? da850_pinmux_ctl(16, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX16);
>> - ? ? da850_pinmux_ctl(17, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX17);
>> - ? ? da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
>> - ? ? da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
>> + ? ? /* setup serial port */
>> + ? ? davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));
>
> Why only the uart pins? We could use here something like "board_pins"
> and initialize here all pins for the board?
Because only the UART pins are required here. Since the CPU has
already loaded the SPL from SPI flash or is executing the SPL from NOR
flash or whatever, the pins for memory access are already configured.
Later the board specific file can do all the configuration that it
actually needs, see board/davinci/da8xxevm/da850evm.c.

>
> I reworked this for the enbw_cmc board too, and removed also the
> CONFIG_SYS_DA850_PINMUX* defines complete ... but I am not really
> happy with it. Why?
>
> We have for example on the am1808 19 * 8 = 152 pins to setup up
>
> If using the CONFIG_SYS_DA850_PINMUX* defines we have 19 register-
> writes and have setup them all (And you must think about all
> your pins, if we use such a struct, not defined pins are in
> default state ... which is good or bad ...)
>
> With using davinci_configure_pin_mux() we have 152 * (read, write
> and some logic operations) ...

Actually the number of read, writes, logic operations will depend on
the number of GPIO pins you use on your board. I guess you will not
change the pinmux settings of pins you didn't connect on your board.
But yes, these are a lot of operations that need to be done.

>and I have to code a "static const
> struct pinmux_config board_pins" with 152 lines in the code ...

How about using an approach like in board/davinci/da8xxevm/da850evm.c.
There we have several structs like

static const struct pinmux config_spi1_pins[] = {
...
}

that defines pinmux for groups of pins that are usually used together.

Later, these groups are put together in

static const struct pinmux_resource pinmuxes[] = {


>
> What do others think?
>
> bye,
> Heiko
> --
> DENX Software Engineering GmbH, ? ? MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-16  6:49   ` Heiko Schocher
  2011-11-18  8:22     ` Christian Riesch
  2011-11-18  8:24     ` Christian Riesch
@ 2011-11-18  8:35     ` Christian Riesch
  2011-11-18 10:09       ` Heiko Schocher
  2 siblings, 1 reply; 21+ messages in thread
From: Christian Riesch @ 2011-11-18  8:35 UTC (permalink / raw)
  To: u-boot

Hello Heiko,
I hope this is the complete mail now :-/

On Wed, Nov 16, 2011 at 7:49 AM, Heiko Schocher <hs@denx.de> wrote:
> Hello Christian,
>
> Christian Riesch wrote:
>> This patch replaces the pinmuxing functions from
>> arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c by those of
>> arch/arm/cpu/arm926ejs/davinci/pinmux.c
>>
>> Signed-off-by: Christian Riesch <christian.riesch@omicron.at>
>> Cc: Heiko Schocher <hs@denx.de>
>> Cc: Sandeep Paulraj <s-paulraj@ti.com>
>> ---
>>  arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c |   34 +++++++++--------------
>>  1 files changed, 13 insertions(+), 21 deletions(-)
>>
>> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> index c7ec70f..8dd897b 100644
>> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
>> @@ -30,6 +30,7 @@
>>  #include <asm/arch/ddr2_defs.h>
>>  #include <asm/arch/emif_defs.h>
>>  #include <asm/arch/pll_defs.h>
>> +#include <asm/arch/davinci_misc.h>
>>
>>  void da850_waitloop(unsigned long loopcnt)
>>  {
>> @@ -248,6 +249,16 @@ void board_gpio_init(void)
>>       return;
>>  }
>>
>> +/* UART pin muxer settings */
>> +static const struct pinmux_config uart_pins[] = {
>> +#if CONFIG_SYS_NS16550_COM1 == DAVINCI_UART2_BASE
>> +     { pinmux(0), 4, 6 },
>> +     { pinmux(0), 4, 7 },
>> +     { pinmux(4), 2, 4 },
>> +     { pinmux(4), 2, 5 }
>> +#endif
>> +};
>> +
>>  int arch_cpu_init(void)
>>  {
>>       /* Unlock kick registers */
>> @@ -257,27 +268,8 @@ int arch_cpu_init(void)
>>       dv_maskbits(&davinci_syscfg_regs->suspsrc,
>>               CONFIG_SYS_DA850_SYSCFG_SUSPSRC);
>>
>> -     /* Setup Pinmux */
>> -     da850_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX0);
>> -     da850_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX1);
>> -     da850_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX2);
>> -     da850_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX3);
>> -     da850_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX4);
>> -     da850_pinmux_ctl(5, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX5);
>> -     da850_pinmux_ctl(6, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX6);
>> -     da850_pinmux_ctl(7, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX7);
>> -     da850_pinmux_ctl(8, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX8);
>> -     da850_pinmux_ctl(9, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX9);
>> -     da850_pinmux_ctl(10, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX10);
>> -     da850_pinmux_ctl(11, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX11);
>> -     da850_pinmux_ctl(12, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX12);
>> -     da850_pinmux_ctl(13, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX13);
>> -     da850_pinmux_ctl(14, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX14);
>> -     da850_pinmux_ctl(15, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX15);
>> -     da850_pinmux_ctl(16, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX16);
>> -     da850_pinmux_ctl(17, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX17);
>> -     da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
>> -     da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
>> +     /* setup serial port */
>> +     davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));
>
> Why only the uart pins? We could use here something like "board_pins"
> and initialize here all pins for the board?

Because only the UART pins are required here. Since the CPU has
already loaded the SPL from SPI flash or is executing the SPL from NOR
flash or whatever, the pins for memory access are already configured.
Later the board specific file can do all the configuration that it
actually needs, see board/davinci/da8xxevm/da850evm.c.

>
> I reworked this for the enbw_cmc board too, and removed also the
> CONFIG_SYS_DA850_PINMUX* defines complete ... but I am not really
> happy with it. Why?
>
> We have for example on the am1808 19 * 8 = 152 pins to setup up
>
> If using the CONFIG_SYS_DA850_PINMUX* defines we have 19 register-
> writes and have setup them all (And you must think about all
> your pins, if we use such a struct, not defined pins are in
> default state ... which is good or bad ...)
>
> With using davinci_configure_pin_mux() we have 152 * (read, write
> and some logic operations) ...

Actually the number of read, writes, logic operations will depend on
the number of GPIO pins you use on your board. I guess you will not
change the pinmux settings of pins you didn't connect on your board.
But yes, these are a lot of operations that need to be done.

>and I have to code a "static const
> struct pinmux_config board_pins" with 152 lines in the code ...

How about using an approach like in board/davinci/da8xxevm/da850evm.c.
There we have several structs like

static const struct pinmux_config spi1_pins[] = {
...
}

that defines pinmux for groups of pins that are usually used together.

Later, these groups are put together in

static const struct pinmux_resource pinmuxes[] = {
        { DAVINCI_LPSC_AEMIF }, /* NAND, NOR */
        { DAVINCI_LPSC_SPI1 },  /* Serial Flash */
        { DAVINCI_LPSC_EMAC },  /* image download */
        { DAVINCI_LPSC_UART2 }, /* console */
        { DAVINCI_LPSC_GPIO },
};

We could move the pinmux_config structs to a header file which would reduce
the code in your board config file to a few lines, you only would need
a pinmux_resource struct.

Still we need to do pinmuxing for UART (and maybe also for other pins) in
the SPL. How do you like the approach in static void set_mux_conf_regs(void)
in arch/arm/cpu/armv7/omap-common/hwinit-common.c? Depending on the
context either the pins that are essential for the SPL or
all other pins are configured.

This would at least reduce the number of code lines that you need for a
new board. And this code would be much easier to understand than this
list of magic numbers.

> What do others think?
>
> bye,
> Heiko

Regards, Christian

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c
  2011-11-18  8:35     ` Christian Riesch
@ 2011-11-18 10:09       ` Heiko Schocher
  0 siblings, 0 replies; 21+ messages in thread
From: Heiko Schocher @ 2011-11-18 10:09 UTC (permalink / raw)
  To: u-boot

Hello Christian,

Christian Riesch wrote:
> Hello Heiko,
> I hope this is the complete mail now :-/

seems so ...

> On Wed, Nov 16, 2011 at 7:49 AM, Heiko Schocher <hs@denx.de> wrote:
>> Hello Christian,
>>
>> Christian Riesch wrote:
[...]
>>> -     da850_pinmux_ctl(18, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX18);
>>> -     da850_pinmux_ctl(19, 0xFFFFFFFF, CONFIG_SYS_DA850_PINMUX19);
>>> +     /* setup serial port */
>>> +     davinci_configure_pin_mux(uart_pins, ARRAY_SIZE(uart_pins));
>> Why only the uart pins? We could use here something like "board_pins"
>> and initialize here all pins for the board?
> 
> Because only the UART pins are required here. Since the CPU has

And if you need some other pins, for example gpio?

> already loaded the SPL from SPI flash or is executing the SPL from NOR
> flash or whatever, the pins for memory access are already configured.
> Later the board specific file can do all the configuration that it
> actually needs, see board/davinci/da8xxevm/da850evm.c.

Yes, but, why not setup all pinmux settings immediately in the
spl code?

>> I reworked this for the enbw_cmc board too, and removed also the
>> CONFIG_SYS_DA850_PINMUX* defines complete ... but I am not really
>> happy with it. Why?
>>
>> We have for example on the am1808 19 * 8 = 152 pins to setup up
>>
>> If using the CONFIG_SYS_DA850_PINMUX* defines we have 19 register-
>> writes and have setup them all (And you must think about all
>> your pins, if we use such a struct, not defined pins are in
>> default state ... which is good or bad ...)
>>
>> With using davinci_configure_pin_mux() we have 152 * (read, write
>> and some logic operations) ...
> 
> Actually the number of read, writes, logic operations will depend on
> the number of GPIO pins you use on your board. I guess you will not
> change the pinmux settings of pins you didn't connect on your board.
> But yes, these are a lot of operations that need to be done.

Not with the define approach! ... There we have only 19 register
writes.

>> and I have to code a "static const
>> struct pinmux_config board_pins" with 152 lines in the code ...
> 
> How about using an approach like in board/davinci/da8xxevm/da850evm.c.
> There we have several structs like
> 
> static const struct pinmux_config spi1_pins[] = {
> ...
> }
> 
> that defines pinmux for groups of pins that are usually used together.
> 
> Later, these groups are put together in
> 
> static const struct pinmux_resource pinmuxes[] = {
>         { DAVINCI_LPSC_AEMIF }, /* NAND, NOR */
>         { DAVINCI_LPSC_SPI1 },  /* Serial Flash */
>         { DAVINCI_LPSC_EMAC },  /* image download */
>         { DAVINCI_LPSC_UART2 }, /* console */
>         { DAVINCI_LPSC_GPIO },
> };

You mean here:

static const struct pinmux_resource pinmuxes[] = {
#ifdef CONFIG_SPI_FLASH
        PINMUX_ITEM(spi1_pins),
#endif
        PINMUX_ITEM(uart_pins),
        PINMUX_ITEM(i2c_pins),
#ifdef CONFIG_NAND_DAVINCI
        PINMUX_ITEM(nand_pins),
#elif defined(CONFIG_USE_NOR)
        PINMUX_ITEM(nor_pins),
#endif
};

right?

> We could move the pinmux_config structs to a header file which would reduce
> the code in your board config file to a few lines, you only would need
> a pinmux_resource struct.

Yep, if we go this way, we should move them to a include
file, so we can use them for all da8xx boards.

> Still we need to do pinmuxing for UART (and maybe also for other pins) in
> the SPL. How do you like the approach in static void set_mux_conf_regs(void)
> in arch/arm/cpu/armv7/omap-common/hwinit-common.c? Depending on the
> context either the pins that are essential for the SPL or
> all other pins are configured.

Yes, looks good to me.

> This would at least reduce the number of code lines that you need for a
> new board. And this code would be much easier to understand than this
> list of magic numbers.

Yes. Don't understand me wrong against the "struct pinmux_resource"
approach, it looks  good to me also, and I agree this is (maybe) better
to read (maybe, because if something is setup wrong, you need in both
approaches the help from the doc ...), but I didn't get the disadvantages
of "my" define approach setting up the pinmux in one place ...

Advantages of it I think:
- if settings are wrong i find it fast (because in one place)
- setup with a minimum nr of instructions.
- smaller code size
- if using the pinmux setup tool from TI
  (URL: http://www-s.ti.com/sc/techlit/spraba2.zip)
  you can easy setup all pins and gets a check for pinmux conflicts
  for free ... and it exports a header file, from where you easy can
  get the values for the CONFIG_SYS_DA850_PINMUX* defines ... if you
  want to use this tool, it is more work to convert this to the
  "struct pinmux_resource" approach ...

So let us now decide which way to go ... (BTW: If we decide to go the
"struct pinmux_resource" approach, can you provide a patch, which
moves the pinmux settings from the existing da8xx boards to an include
file (whats with arch/arm/include/asm/arch-davinci/da8xx_pinmux.h)?

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2011-11-18 10:09 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-15 10:37 [U-Boot] [RFC PATCH 0/8] da850evm: Add SPL support for booting from SPI flash Christian Riesch
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 1/8] arm, davinci: Move pinmux functions from board to arch tree Christian Riesch
2011-11-16  6:38   ` Heiko Schocher
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 2/8] arm, davinci: Fix clear_bss for zero length bss Christian Riesch
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs Christian Riesch
2011-11-16  6:35   ` Heiko Schocher
2011-11-16  7:13     ` Christian Riesch
2011-11-16  7:35       ` Heiko Schocher
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 4/8] arm: printf() is not available in the SPL Christian Riesch
2011-11-15 17:50   ` Tom Rini
2011-11-16  7:37     ` Christian Riesch
2011-11-16 14:18       ` Tom Rini
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 5/8] arm, davinci: Replace pinmuxing in da850_lowlevel.c Christian Riesch
2011-11-16  6:49   ` Heiko Schocher
2011-11-18  8:22     ` Christian Riesch
2011-11-18  8:24     ` Christian Riesch
2011-11-18  8:35     ` Christian Riesch
2011-11-18 10:09       ` Heiko Schocher
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 6/8] da850evm: Add a basic SPL for SPI boot Christian Riesch
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 7/8] mkimage: Fix variable length header support Christian Riesch
2011-11-15 10:37 ` [U-Boot] [RFC PATCH 8/8] arm, davinci: Add support for generating AIS images to the Makefile Christian Riesch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox