[U-Boot] [PATCH 2/2 V2] Changes to move hawkboard to the new spl infrastructure.

Heiko Schocher hs at denx.de
Wed Jan 11 07:52:02 CET 2012


Hello Sughosh,

Sughosh Ganu wrote:
> This patch moves hawkboard to the new spl infrastructure from the
> older nand_spl one.
> 
> Removed the hawkboard_nand_config build option -- The spl code now
> gets compiled with hawkboard_config, after building the main u-boot
> image, using the CONFIG_SPL_TEXT_BASE. Modified the README.hawkboard
> to reflect the same.
> 
> Signed-off-by: Sughosh Ganu <urwithsughosh at gmail.com>
> Cc: Heiko Schocher <hs at denx.de>
> Cc: Christian Riesch <christian.riesch at omicron.at>
> Cc: Sudhakar Rajashekhara <sudhakar.raj at ti.com>
> Cc: Tom Rini <trini at ti.com>
> ---
> 
[...]
> diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> index a532f8a..a4778b8 100644
> --- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> +++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
> @@ -32,6 +32,7 @@
>  #include <asm/arch/emif_defs.h>
>  #include <asm/arch/pll_defs.h>
>  
> +#if !defined(CONFIG_MACH_DAVINCI_HAWK)

Please no board specific defines.

>  void da850_waitloop(unsigned long loopcnt)
>  {
>  	unsigned long	i;
> @@ -235,6 +236,7 @@ int da850_ddr_setup(void)
>  
>  	return 0;
>  }
> +#endif /* CONFIG_MACH_DAVINCI_HAWK */
>  
>  __attribute__((weak))
>  void board_gpio_init(void)
> @@ -242,10 +244,6 @@ void board_gpio_init(void)
>  	return;
>  }
>  
> -/* pinmux_resource[] vector is defined in the board specific file */
> -extern const struct pinmux_resource pinmuxes[];
> -extern const int pinmuxes_size;
> -
>  int arch_cpu_init(void)
>  {
>  	/* Unlock kick registers */
> @@ -259,6 +257,7 @@ int arch_cpu_init(void)
>  	if (davinci_configure_pin_mux_items(pinmuxes, pinmuxes_size))
>  		return 1;
>  
> +#if defined(CONFIG_MACH_DAVINCI_DA850_EVM)

here too. I propose here a CONFIG_SYS_DA850_PLL_INIT ...

>  	/* PLL setup */
>  	da850_pll_init(davinci_pllc0_regs, CONFIG_SYS_DA850_PLL0_PLLM);
>  	da850_pll_init(davinci_pllc1_regs, CONFIG_SYS_DA850_PLL1_PLLM);
> @@ -275,6 +274,12 @@ int arch_cpu_init(void)
>  #endif
>  
>  	lpsc_on(CONFIG_SYS_DA850_LPSC_UART);
> +
> +	da850_ddr_setup();

and around the ddr_setup a CONFIG_SYS_DA850_DDR_INIT ...

> +#elif defined(CONFIG_MACH_DAVINCI_HAWK)
> +	da8xx_configure_lpsc_items(lpsc, lpsc_size);
> +#endif

and we should use da8xx_configure_lpsc_items() for all da850 boards.

This patch breaks current enbw_cmc board compile

[hs at pollux u-boot]$ ./MAKEALL enbw_cmc
Configuring for enbw_cmc board...
enbw_cmc.c:52:35: error: static declaration of 'lpsc' follows non-static declaration
/work/hs/u-boot/include/asm/arch/da850_lowlevel.h:33:35: note: previous declaration of 'lpsc' was here
make[1]: *** [enbw_cmc.o] Fehler 1
make: *** [board/enbw/enbw_cmc/libenbw_cmc.o] Fehler 2
arm-linux-gnueabi-size: './u-boot': No such file

please remove the da8xx_configure_lpsc_items() in board_gpio_init()
in the ./board/enbw/enbw_cmc/enbw_cmc.c() file, and also move ...
before I write here a lot of text, here the patch, based on yours,
please add it to your patch, and add my

Signed-off-by: Heiko Schocher <hs at denx.de>

and tested on the enbw_cmc board, so:
Tested-by: Heiko Schocher <hs at denx.de>

to your patch, here the patch:

diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
index a4778b8..a404916 100644
--- a/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
+++ b/arch/arm/cpu/arm926ejs/davinci/da850_lowlevel.c
@@ -32,7 +32,7 @@
 #include <asm/arch/emif_defs.h>
 #include <asm/arch/pll_defs.h>

-#if !defined(CONFIG_MACH_DAVINCI_HAWK)
+#if defined(CONFIG_SYS_DA850_DDR_INIT)
 void da850_waitloop(unsigned long loopcnt)
 {
 	unsigned long	i;
@@ -236,7 +236,7 @@ int da850_ddr_setup(void)

 	return 0;
 }
-#endif /* CONFIG_MACH_DAVINCI_HAWK */
+#endif /* CONFIG_SYS_DA850_DDR_INIT */

 __attribute__((weak))
 void board_gpio_init(void)
@@ -257,14 +257,11 @@ int arch_cpu_init(void)
 	if (davinci_configure_pin_mux_items(pinmuxes, pinmuxes_size))
 		return 1;

-#if defined(CONFIG_MACH_DAVINCI_DA850_EVM)
+#if defined(CONFIG_SYS_DA850_PLL_INIT)
 	/* PLL setup */
 	da850_pll_init(davinci_pllc0_regs, CONFIG_SYS_DA850_PLL0_PLLM);
 	da850_pll_init(davinci_pllc1_regs, CONFIG_SYS_DA850_PLL1_PLLM);
-
-	/* GPIO setup */
-	board_gpio_init();
-
+#endif
 	/* setup CSn config */
 #if defined(CONFIG_SYS_DA850_CS2CFG)
 	writel(CONFIG_SYS_DA850_CS2CFG, &davinci_emif_regs->ab1cr);
@@ -273,13 +270,15 @@ int arch_cpu_init(void)
 	writel(CONFIG_SYS_DA850_CS3CFG, &davinci_emif_regs->ab2cr);
 #endif

-	lpsc_on(CONFIG_SYS_DA850_LPSC_UART);
-
-	da850_ddr_setup();
-#elif defined(CONFIG_MACH_DAVINCI_HAWK)
 	da8xx_configure_lpsc_items(lpsc, lpsc_size);
+#if defined(CONFIG_SYS_DA850_DDR_INIT)
+	da850_ddr_setup();
 #endif

+	/* GPIO setup */
+	board_gpio_init();
+
+
 	NS16550_init((NS16550_t)(CONFIG_SYS_NS16550_COM1),
 			CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);

diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index 9bd3e71..34ef53d 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -137,7 +137,7 @@ const struct pinmux_resource pinmuxes[] = {

 const int pinmuxes_size = ARRAY_SIZE(pinmuxes);

-static const struct lpsc_resource lpsc[] = {
+const struct lpsc_resource lpsc[] = {
 	{ DAVINCI_LPSC_AEMIF },	/* NAND, NOR */
 	{ DAVINCI_LPSC_SPI1 },	/* Serial Flash */
 	{ DAVINCI_LPSC_EMAC },	/* image download */
@@ -145,6 +145,8 @@ static const struct lpsc_resource lpsc[] = {
 	{ DAVINCI_LPSC_GPIO },
 };

+const int lpsc_size = ARRAY_SIZE(lpsc);
+
 #ifndef CONFIG_DA850_EVM_MAX_CPU_CLK
 #define CONFIG_DA850_EVM_MAX_CPU_CLK	300000000
 #endif
diff --git a/board/enbw/enbw_cmc/enbw_cmc.c b/board/enbw/enbw_cmc/enbw_cmc.c
index 5cd5357..f6c3dd9 100644
--- a/board/enbw/enbw_cmc/enbw_cmc.c
+++ b/board/enbw/enbw_cmc/enbw_cmc.c
@@ -49,7 +49,7 @@

 DECLARE_GLOBAL_DATA_PTR;

-static const struct lpsc_resource lpsc[] = {
+const struct lpsc_resource lpsc[] = {
 	{ DAVINCI_LPSC_AEMIF },
 	{ DAVINCI_LPSC_SPI1 },
 	{ DAVINCI_LPSC_ARM_RAM_ROM },
@@ -65,6 +65,8 @@ static const struct lpsc_resource lpsc[] = {
 	{ DAVINCI_LPSC_USB11 },
 };

+const int lpsc_size = ARRAY_SIZE(lpsc);
+
 static const struct pinmux_config enbw_pins[] = {
 	{ pinmux(0), 8, 0 },
 	{ pinmux(0), 8, 1 },
@@ -549,15 +551,6 @@ void board_gpio_init(void)
 	struct davinci_gpio *gpio = davinci_gpio_bank01;

 	/*
-	 * Power on required peripherals
-	 * ARM does not have access by default to PSC0 and PSC1
-	 * assuming here that the DSP bootloader has set the IOPU
-	 * such that PSC access is available to ARM
-	 */
-	if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc)))
-		return;
-
-	/*
 	 * set LED (gpio Interface not usable here)
 	 * set LED pins to output and state 0
 	 */
diff --git a/include/configs/enbw_cmc.h b/include/configs/enbw_cmc.h
index c427dc7..804846d 100644
--- a/include/configs/enbw_cmc.h
+++ b/include/configs/enbw_cmc.h
@@ -48,6 +48,8 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #define CONFIG_DA850_LOWLEVEL
 #define CONFIG_ARCH_CPU_INIT
+#define CONFIG_SYS_DA850_PLL_INIT
+#define CONFIG_SYS_DA850_DDR_INIT
 #define CONFIG_DA8XX_GPIO
 #define CONFIG_HOSTNAME		enbw_cmc
 #define CONFIG_DISPLAY_CPUINFO
-- 
1.7.7.4

[...]
> diff --git a/include/configs/cam_enc_4xx.h b/include/configs/cam_enc_4xx.h
> index a21d448..8e3a4d2 100644
> --- a/include/configs/cam_enc_4xx.h
> +++ b/include/configs/cam_enc_4xx.h
> @@ -205,6 +205,7 @@
>  
>  /* Defines for SPL */
>  #define CONFIG_SPL
> +#define CONFIG_DM365_SPL

Why we need this define?

[hs at pollux u-boot]$ grep -lr CONFIG_DM365_SPL .
./include/configs/cam_enc_4xx.h
[hs at pollux u-boot]$

>  #define CONFIG_SPL_NAND_SUPPORT
>  #define CONFIG_SPL_NAND_SIMPLE
>  #define CONFIG_SPL_NAND_LOAD
> diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h
> index fcbbace..a44d825 100644
> --- a/include/configs/da850evm.h
> +++ b/include/configs/da850evm.h
> @@ -311,6 +311,7 @@
>  
>  /* defines for SPL */
>  #define CONFIG_SPL
> +#define CONFIG_DA850EVM_SPL

here too, why you add this define?

[hs at pollux u-boot]$ grep -lr CONFIG_DA850EVM_SPL .
./include/configs/da850evm.h
[hs at pollux u-boot]$

[...]
> diff --git a/include/configs/hawkboard.h b/include/configs/hawkboard.h
> index 12acb27..57b1932 100644
> --- a/include/configs/hawkboard.h
> +++ b/include/configs/hawkboard.h
> @@ -43,12 +43,30 @@
>  #define CONFIG_SKIP_LOWLEVEL_INIT
>  #define CONFIG_BOARD_EARLY_INIT_F
>  
> -#if defined(CONFIG_NAND_U_BOOT) || defined(CONFIG_UART_U_BOOT)
> +#define CONFIG_SYS_DA850_SYSCFG_SUSPSRC (	\
> +	DAVINCI_SYSCFG_SUSPSRC_EMAC |		\
> +	DAVINCI_SYSCFG_SUSPSRC_I2C  |		\
> +	DAVINCI_SYSCFG_SUSPSRC_SPI1 |		\
> +	DAVINCI_SYSCFG_SUSPSRC_TIMER0 |		\
> +	DAVINCI_SYSCFG_SUSPSRC_UART2)
> +
> +#if defined(CONFIG_UART_U_BOOT)
>  #define CONFIG_SYS_TEXT_BASE		0xc1080000
> -#else
> +#elif !defined(CONFIG_SPL_BUILD)
>  #define CONFIG_SYS_TEXT_BASE		0xc1180000
>  #endif
>  
> +/* Spl */
> +#define CONFIG_SPL
> +#define CONFIG_HAWKBOARD_SPL

Here too, why this?

[hs at pollux u-boot]$ grep -lr CONFIG_HAWKBOARD_SPL .
./include/configs/hawkboard.h
[hs at pollux u-boot]$

> +#define CONFIG_SPL_NAND_SUPPORT
> +#define CONFIG_SPL_NAND_SIMPLE
> +#define CONFIG_SPL_NAND_LOAD
> +#define CONFIG_SPL_SERIAL_SUPPORT
> +#define CONFIG_SPL_LDSCRIPT		"board/$(BOARDDIR)/u-boot-spl-hawk.lds"
> +#define CONFIG_SPL_TEXT_BASE		0xc1080000
> +#define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR
> +
>  /*
>   * Memory Info
>   */
> @@ -84,9 +102,7 @@
>  /*
>   * Network & Ethernet Configuration
>   */
> -#if !defined(CONFIG_NAND_SPL)
>  #define CONFIG_DRIVER_TI_EMAC
> -#endif
>  #define CONFIG_MII
>  #define CONFIG_BOOTP_DEFAULT
>  #define CONFIG_BOOTP_DNS

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


More information about the U-Boot mailing list