[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