[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