On Friday 31 May 2013 11:48 PM, Tom Rini wrote:
> We need to call the save_omap_boot_params function on am33xx/ti81xx and
> other newer TI SoCs, so move the function to boot-common.  Only OMAP4+
> has the omap_hw_init_context function so add ifdefs to not call it on
> am33xx/ti81xx.  Call save_omap_boot_params from s_init on am33xx/ti81xx
> boards.
>
> Signed-off-by: Tom Rini <tr...@ti.com>
> ---
>  arch/arm/cpu/armv7/omap-common/boot-common.c   |   39 
> ++++++++++++++++++++++++
>  arch/arm/cpu/armv7/omap-common/hwinit-common.c |   36 ----------------------
>  arch/arm/include/asm/arch-am33xx/sys_proto.h   |    1 +
>  arch/arm/include/asm/arch-omap4/sys_proto.h    |    1 +
>  arch/arm/include/asm/arch-omap5/sys_proto.h    |    1 +
>  board/isee/igep0033/board.c                    |    9 ++++++
>  board/phytec/pcm051/board.c                    |    9 ++++++
>  board/ti/am335x/board.c                        |    9 ++++++
>  board/ti/ti814x/evm.c                          |    9 ++++++
>  9 files changed, 78 insertions(+), 36 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c 
> b/arch/arm/cpu/armv7/omap-common/boot-common.c
> index bff7e9c..76ae1b6 100644
> --- a/arch/arm/cpu/armv7/omap-common/boot-common.c
> +++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
> @@ -25,6 +25,45 @@
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +void save_omap_boot_params(void)
> +{
> +     u32 rom_params = *((u32 *)OMAP_SRAM_SCRATCH_BOOT_PARAMS);
> +     u8 boot_device;
> +     u32 dev_desc, dev_data;
> +
> +     if ((rom_params <  NON_SECURE_SRAM_START) ||
> +         (rom_params > NON_SECURE_SRAM_END))
> +             return;
> +
> +     /*
> +      * rom_params can be type casted to omap_boot_parameters and
> +      * used. But it not correct to assume that romcode structure
> +      * encoding would be same as u-boot. So use the defined offsets.
> +      */
> +     gd->arch.omap_boot_params.omap_bootdevice = boot_device =
> +                                *((u8 *)(rom_params + BOOT_DEVICE_OFFSET));
> +
> +     gd->arch.omap_boot_params.ch_flags =
> +                             *((u8 *)(rom_params + CH_FLAGS_OFFSET));
> +
> +     if ((boot_device >= MMC_BOOT_DEVICES_START) &&
> +         (boot_device <= MMC_BOOT_DEVICES_END)) {
> +#if !defined(CONFIG_AM33XX) && !defined(CONFIG_TI81XX)
> +             if ((omap_hw_init_context() ==
> +                                   OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL)) {
> +                     gd->arch.omap_boot_params.omap_bootmode =
> +                     *((u8 *)(rom_params + BOOT_MODE_OFFSET));
> +             } else
> +#endif
  This is fine, as long as omap_bootmode is not required in u-boot,
  which i think is the case now.

> +             {
> +                     dev_desc = *((u32 *)(rom_params + DEV_DESC_PTR_OFFSET));
> +                     dev_data = *((u32 *)(dev_desc + DEV_DATA_PTR_OFFSET));
> +                     gd->arch.omap_boot_params.omap_bootmode =
> +                                     *((u32 *)(dev_data + BOOT_MODE_OFFSET));
> +             }
> +     }
> +}
> +
>  #ifdef CONFIG_SPL_BUILD
>  u32 spl_boot_device(void)
>  {
> diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c 
> b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> index e614641..0776d5c 100644
> --- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> +++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c
> @@ -111,42 +111,6 @@ void __weak srcomp_enable(void)
>  {
>  }
>  
> -static void save_omap_boot_params(void)
> -{
> -     u32 rom_params = *((u32 *)OMAP_SRAM_SCRATCH_BOOT_PARAMS);
> -     u8 boot_device;
> -     u32 dev_desc, dev_data;
> -
> -     if ((rom_params <  NON_SECURE_SRAM_START) ||
> -         (rom_params > NON_SECURE_SRAM_END))
> -             return;
> -
> -     /*
> -      * rom_params can be type casted to omap_boot_parameters and
> -      * used. But it not correct to assume that romcode structure
> -      * encoding would be same as u-boot. So use the defined offsets.
> -      */
> -     gd->arch.omap_boot_params.omap_bootdevice = boot_device =
> -                                *((u8 *)(rom_params + BOOT_DEVICE_OFFSET));
> -
> -     gd->arch.omap_boot_params.ch_flags =
> -                             *((u8 *)(rom_params + CH_FLAGS_OFFSET));
> -
> -     if ((boot_device >= MMC_BOOT_DEVICES_START) &&
> -         (boot_device <= MMC_BOOT_DEVICES_END)) {
> -             if ((omap_hw_init_context() ==
> -                                   OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL)) {
> -                     gd->arch.omap_boot_params.omap_bootmode =
> -                     *((u8 *)(rom_params + BOOT_MODE_OFFSET));
> -             } else {
> -                     dev_desc = *((u32 *)(rom_params + DEV_DESC_PTR_OFFSET));
> -                     dev_data = *((u32 *)(dev_desc + DEV_DATA_PTR_OFFSET));
> -                     gd->arch.omap_boot_params.omap_bootmode =
> -                                     *((u32 *)(dev_data + BOOT_MODE_OFFSET));
> -             }
> -     }
> -}
> -
>  #ifdef CONFIG_ARCH_CPU_INIT
>  /*
>   * SOC specific cpu init
> diff --git a/arch/arm/include/asm/arch-am33xx/sys_proto.h 
> b/arch/arm/include/asm/arch-am33xx/sys_proto.h
> index c913b5f..fedc674 100644
> --- a/arch/arm/include/asm/arch-am33xx/sys_proto.h
> +++ b/arch/arm/include/asm/arch-am33xx/sys_proto.h
> @@ -30,6 +30,7 @@ int print_cpuinfo(void);
>  
>  extern struct ctrl_stat *cstat;
>  u32 get_device_type(void);
> +void save_omap_boot_params(void);
>  void setup_clocks_for_console(void);
>  void ddr_pll_config(unsigned int ddrpll_M);
>  
> diff --git a/arch/arm/include/asm/arch-omap4/sys_proto.h 
> b/arch/arm/include/asm/arch-omap4/sys_proto.h
> index 039a1f2..ef85594 100644
> --- a/arch/arm/include/asm/arch-omap4/sys_proto.h
> +++ b/arch/arm/include/asm/arch-omap4/sys_proto.h
> @@ -54,6 +54,7 @@ void cancel_out(u32 *num, u32 *den, u32 den_limit);
>  void sdram_init(void);
>  u32 omap_sdram_size(void);
>  u32 cortex_rev(void);
> +void save_omap_boot_params(void);
>  void init_omap_revision(void);
>  void do_io_settings(void);
>  void omap_vc_init(u16 speed_khz);
> diff --git a/arch/arm/include/asm/arch-omap5/sys_proto.h 
> b/arch/arm/include/asm/arch-omap5/sys_proto.h
> index b79161d..4d99db9 100644
> --- a/arch/arm/include/asm/arch-omap5/sys_proto.h
> +++ b/arch/arm/include/asm/arch-omap5/sys_proto.h
> @@ -58,6 +58,7 @@ void cancel_out(u32 *num, u32 *den, u32 den_limit);
>  void sdram_init(void);
>  u32 omap_sdram_size(void);
>  u32 cortex_rev(void);
> +void save_omap_boot_params(void);
>  void init_omap_revision(void);
>  void do_io_settings(void);
>  void omap_vc_init(u16 speed_khz);
> diff --git a/board/isee/igep0033/board.c b/board/isee/igep0033/board.c
> index d315516..826cead 100644
> --- a/board/isee/igep0033/board.c
> +++ b/board/isee/igep0033/board.c
> @@ -105,6 +105,15 @@ static struct emif_regs ddr3_emif_reg_data = {
>   */
>  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
> +
>       /* WDT1 is already running when the bootloader gets control
>        * Disable it to avoid "random" resets
>        */
> diff --git a/board/phytec/pcm051/board.c b/board/phytec/pcm051/board.c
> index 43d7b6e..93c611d 100644
> --- a/board/phytec/pcm051/board.c
> +++ b/board/phytec/pcm051/board.c
> @@ -115,6 +115,15 @@ static struct emif_regs ddr3_emif_reg_data = {
>  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
> +
> +     /*
>        * WDT1 is already running when the bootloader gets control
>        * Disable it to avoid "random" resets
>        */
> diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
> index b371376..ebddf0c 100644
> --- a/board/ti/am335x/board.c
> +++ b/board/ti/am335x/board.c
> @@ -304,6 +304,15 @@ static struct emif_regs ddr3_evm_emif_reg_data = {
>   */
>  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
> +
>       /* WDT1 is already running when the bootloader gets control
>        * Disable it to avoid "random" resets
>        */
> diff --git a/board/ti/ti814x/evm.c b/board/ti/ti814x/evm.c
> index 7adb524..4759b16 100644
> --- a/board/ti/ti814x/evm.c
> +++ b/board/ti/ti814x/evm.c
> @@ -149,6 +149,15 @@ static const struct ddr_data evm_ddr2_data = {
>  void s_init(void)
>  {
>  #ifdef CONFIG_SPL_BUILD
> +     /*
> +      * 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
> +
>       /* WDT1 is already running when the bootloader gets control
>        * Disable it to avoid "random" resets
>        */
  Reviewed-by: R Sricharan <r.sricha...@ti.com>

Regards,
 Sricharan
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to