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