diff mbox

[U-Boot,RFT,1/2] TI ARMv7: Don't use GD before crt0.S has set it

Message ID 1419026005-5549-1-git-send-email-trini@ti.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Tom Rini Dec. 19, 2014, 9:53 p.m. UTC
Prior to this change we set the gd pointer early so that we can store
data in it.  This becomes problematic for DM changes as well as being
odd in general.  Re-work the code paths so that we don't need to set the
gd pointer so early and instead can rely upon the normal setting of it.

In order to do this we do need to move certain calls from s_init into
spl_board_init(), mainly preloader_console_init and
save_omap_boot_params.

Tested on: Beaglebone Black, AM43xx GP EVM, Beagleboard, Beagleboard xM,
OMAP5 uEVM, DRA7xx EVM
Signed-off-by: Tom Rini <trini@ti.com>
---
 arch/arm/cpu/armv7/am33xx/board.c              |   11 -----------
 arch/arm/cpu/armv7/omap-common/boot-common.c   |   10 ++++++++++
 arch/arm/cpu/armv7/omap-common/hwinit-common.c |   11 -----------
 arch/arm/cpu/armv7/omap3/board.c               |    9 +--------
 4 files changed, 11 insertions(+), 30 deletions(-)

Comments

Simon Glass Dec. 21, 2014, 6:52 p.m. UTC | #1
Hi Tom,

On 19 December 2014 at 14:53, Tom Rini <trini@ti.com> wrote:
> Prior to this change we set the gd pointer early so that we can store
> data in it.  This becomes problematic for DM changes as well as being
> odd in general.  Re-work the code paths so that we don't need to set the
> gd pointer so early and instead can rely upon the normal setting of it.
>
> In order to do this we do need to move certain calls from s_init into
> spl_board_init(), mainly preloader_console_init and
> save_omap_boot_params.
>
> Tested on: Beaglebone Black, AM43xx GP EVM, Beagleboard, Beagleboard xM,
> OMAP5 uEVM, DRA7xx EVM
> Signed-off-by: Tom Rini <trini@ti.com>

This seems like it's going in the right direction to me!

Tested on Beaglebone Black.

Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>

> ---
>  arch/arm/cpu/armv7/am33xx/board.c              |   11 -----------
>  arch/arm/cpu/armv7/omap-common/boot-common.c   |   10 ++++++++++
>  arch/arm/cpu/armv7/omap-common/hwinit-common.c |   11 -----------
>  arch/arm/cpu/armv7/omap3/board.c               |    9 +--------
>  4 files changed, 11 insertions(+), 30 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
> index eaf09d1..81477aa 100644
> --- a/arch/arm/cpu/armv7/am33xx/board.c
> +++ b/arch/arm/cpu/armv7/am33xx/board.c
> @@ -285,14 +285,6 @@ void s_init(void)
>  #ifdef CONFIG_NOR_BOOT
>         enable_norboot_pin_mux();
>  #endif
> -       /*
> -        * Save the boot parameters passed from romcode.
> -        * We cannot delay the saving further than this,
> -        * to prevent overwrites.
> -        */
> -#ifdef CONFIG_SPL_BUILD
> -       save_omap_boot_params();
> -#endif
>         watchdog_disable();
>         set_uart_mux_conf();
>         setup_clocks_for_console();
> @@ -301,9 +293,6 @@ void s_init(void)
>         gd->baudrate = CONFIG_BAUDRATE;
>         serial_init();
>         gd->have_console = 1;
> -#elif defined(CONFIG_SPL_BUILD)
> -       gd = &gdata;
> -       preloader_console_init();
>  #endif
>  #if defined(CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC)
>         /* Enable RTC32K clock */
> diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c
> index cb18908..3ba62db 100644
> --- a/arch/arm/cpu/armv7/omap-common/boot-common.c
> +++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
> @@ -104,6 +104,16 @@ u32 spl_boot_mode(void)
>
>  void spl_board_init(void)
>  {
> +       /*
> +        * Save the boot parameters passed from romcode.
> +        * We cannot delay the saving further than this,
> +        * to prevent overwrites.
> +        */
> +       save_omap_boot_params();
> +
> +       /* Prepare console output */
> +       preloader_console_init();
> +
>  #ifdef CONFIG_SPL_NAND_SUPPORT
>         gpmc_init();
>  #endif
> diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> index dd52e93..cb35c19 100644
> --- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> +++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> @@ -111,14 +111,6 @@ int arch_cpu_init(void)
>   */
>  void s_init(void)
>  {
> -       /*
> -        * Save the boot parameters passed from romcode.
> -        * We cannot delay the saving further than this,
> -        * to prevent overwrites.
> -        */
> -#ifdef CONFIG_SPL_BUILD
> -       save_omap_boot_params();
> -#endif
>         init_omap_revision();
>         hw_data_init();
>
> @@ -133,9 +125,6 @@ void s_init(void)
>         srcomp_enable();
>         setup_clocks_for_console();
>
> -       gd = &gdata;
> -
> -       preloader_console_init();
>         do_io_settings();
>  #endif
>         prcm_init();
> diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
> index 53a9e5d..90d6ae7 100644
> --- a/arch/arm/cpu/armv7/omap3/board.c
> +++ b/arch/arm/cpu/armv7/omap3/board.c
> @@ -119,6 +119,7 @@ int board_mmc_init(bd_t *bis)
>
>  void spl_board_init(void)
>  {
> +       preloader_console_init();
>  #if defined(CONFIG_SPL_NAND_SUPPORT) || defined(CONFIG_SPL_ONENAND_SUPPORT)
>         gpmc_init();
>  #endif
> @@ -264,14 +265,6 @@ void s_init(void)
>         ehci_clocks_enable();
>  #endif
>
> -#ifdef CONFIG_SPL_BUILD
> -       gd = &gdata;
> -
> -       preloader_console_init();
> -
> -       timer_init();
> -#endif
> -
>         if (!in_sdram)
>                 mem_init();
>  }
> --
> 1.7.9.5
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Tom Rini Jan. 20, 2015, 9:40 p.m. UTC | #2
On Fri, Dec 19, 2014 at 04:53:24PM -0500, Tom Rini wrote:

> Prior to this change we set the gd pointer early so that we can store
> data in it.  This becomes problematic for DM changes as well as being
> odd in general.  Re-work the code paths so that we don't need to set the
> gd pointer so early and instead can rely upon the normal setting of it.
> 
> In order to do this we do need to move certain calls from s_init into
> spl_board_init(), mainly preloader_console_init and
> save_omap_boot_params.
> 
> Tested on: Beaglebone Black, AM43xx GP EVM, Beagleboard, Beagleboard xM,
> OMAP5 uEVM, DRA7xx EVM
> Signed-off-by: Tom Rini <trini@ti.com>
> Tested-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c
index eaf09d1..81477aa 100644
--- a/arch/arm/cpu/armv7/am33xx/board.c
+++ b/arch/arm/cpu/armv7/am33xx/board.c
@@ -285,14 +285,6 @@  void s_init(void)
 #ifdef CONFIG_NOR_BOOT
 	enable_norboot_pin_mux();
 #endif
-	/*
-	 * Save the boot parameters passed from romcode.
-	 * We cannot delay the saving further than this,
-	 * to prevent overwrites.
-	 */
-#ifdef CONFIG_SPL_BUILD
-	save_omap_boot_params();
-#endif
 	watchdog_disable();
 	set_uart_mux_conf();
 	setup_clocks_for_console();
@@ -301,9 +293,6 @@  void s_init(void)
 	gd->baudrate = CONFIG_BAUDRATE;
 	serial_init();
 	gd->have_console = 1;
-#elif defined(CONFIG_SPL_BUILD)
-	gd = &gdata;
-	preloader_console_init();
 #endif
 #if defined(CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC)
 	/* Enable RTC32K clock */
diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c
index cb18908..3ba62db 100644
--- a/arch/arm/cpu/armv7/omap-common/boot-common.c
+++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
@@ -104,6 +104,16 @@  u32 spl_boot_mode(void)
 
 void spl_board_init(void)
 {
+	/*
+	 * Save the boot parameters passed from romcode.
+	 * We cannot delay the saving further than this,
+	 * to prevent overwrites.
+	 */
+	save_omap_boot_params();
+
+	/* Prepare console output */
+	preloader_console_init();
+
 #ifdef CONFIG_SPL_NAND_SUPPORT
 	gpmc_init();
 #endif
diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
index dd52e93..cb35c19 100644
--- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c
+++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
@@ -111,14 +111,6 @@  int arch_cpu_init(void)
  */
 void s_init(void)
 {
-	/*
-	 * Save the boot parameters passed from romcode.
-	 * We cannot delay the saving further than this,
-	 * to prevent overwrites.
-	 */
-#ifdef CONFIG_SPL_BUILD
-	save_omap_boot_params();
-#endif
 	init_omap_revision();
 	hw_data_init();
 
@@ -133,9 +125,6 @@  void s_init(void)
 	srcomp_enable();
 	setup_clocks_for_console();
 
-	gd = &gdata;
-
-	preloader_console_init();
 	do_io_settings();
 #endif
 	prcm_init();
diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
index 53a9e5d..90d6ae7 100644
--- a/arch/arm/cpu/armv7/omap3/board.c
+++ b/arch/arm/cpu/armv7/omap3/board.c
@@ -119,6 +119,7 @@  int board_mmc_init(bd_t *bis)
 
 void spl_board_init(void)
 {
+	preloader_console_init();
 #if defined(CONFIG_SPL_NAND_SUPPORT) || defined(CONFIG_SPL_ONENAND_SUPPORT)
 	gpmc_init();
 #endif
@@ -264,14 +265,6 @@  void s_init(void)
 	ehci_clocks_enable();
 #endif
 
-#ifdef CONFIG_SPL_BUILD
-	gd = &gdata;
-
-	preloader_console_init();
-
-	timer_init();
-#endif
-
 	if (!in_sdram)
 		mem_init();
 }