diff options
| author | Tom Rini <trini@ti.com> | 2013-05-31 12:31:59 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-06-05 08:46:49 -0400 | 
| commit | 4596dcc1d4ea5763e0f92cf5becd9fc7d4c6e674 (patch) | |
| tree | 95efd1376ba2b8e80dd6479fa21f95c9ace56fcd /arch/arm/cpu/armv7/omap-common/boot-common.c | |
| parent | 320d9746d3aa8373b86e8f6331bc7c8c8c87fced (diff) | |
| download | olio-uboot-2014.01-4596dcc1d4ea5763e0f92cf5becd9fc7d4c6e674.tar.xz olio-uboot-2014.01-4596dcc1d4ea5763e0f92cf5becd9fc7d4c6e674.zip | |
am33xx/omap: Move save_omap_boot_params to omap-common/boot-common.c
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.
Reviewed-by: R Sricharan <r.sricharan@ti.com>
Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'arch/arm/cpu/armv7/omap-common/boot-common.c')
| -rw-r--r-- | arch/arm/cpu/armv7/omap-common/boot-common.c | 39 | 
1 files changed, 39 insertions, 0 deletions
| diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c index bff7e9c82..76ae1b675 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 +		{ +			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)  { |