[U-Boot] [PATCH 3/3] am33xx/omap: Move save_omap_boot_params to omap-common/boot-common.c

Sricharan R r.sricharan at ti.com
Mon Jun 3 08:51:29 CEST 2013


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 <trini at 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.sricharan at ti.com>

Regards,
 Sricharan


More information about the U-Boot mailing list