Patchwork [U-Boot,4/5] ARM: OMAP: Cleanup boot parameters usage

login
register
mail settings
Submitter SRICHARAN R
Date April 15, 2013, 3:08 p.m.
Message ID <1366038520-7492-5-git-send-email-r.sricharan@ti.com>
Download mbox | patch
Permalink /patch/236630/
State Changes Requested
Delegated to: Tom Rini
Headers show

Comments

SRICHARAN R - April 15, 2013, 3:08 p.m.
The boot parameters are read from individual variables
assigned for each of them. This been corrected and now
they are stored as a part of the global data 'gd'
structure. So read them from 'gd' instead.

Signed-off-by: Sricharan R <r.sricharan@ti.com>
---
 arch/arm/cpu/armv7/lowlevel_init.S             |    8 ++++-
 arch/arm/cpu/armv7/omap-common/boot-common.c   |   20 ++---------
 arch/arm/cpu/armv7/omap-common/lowlevel_init.S |   46 ++----------------------
 arch/arm/include/asm/arch-omap4/sys_proto.h    |   11 ++----
 arch/arm/include/asm/arch-omap5/sys_proto.h    |   12 ++-----
 arch/arm/include/asm/omap_common.h             |    3 ++
 common/spl/spl.c                               |   12 ++++---
 include/configs/am335x_evm.h                   |    1 +
 include/configs/pcm051.h                       |    1 +
 include/configs/ti814x_evm.h                   |    1 +
 include/spl.h                                  |    1 -
 11 files changed, 32 insertions(+), 84 deletions(-)
Tom Rini - April 15, 2013, 3:35 p.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/15/2013 11:08 AM, Sricharan R wrote:
> The boot parameters are read from individual variables assigned
> for each of them. This been corrected and now they are stored as a
> part of the global data 'gd' structure. So read them from 'gd'
> instead.
> 
> Signed-off-by: Sricharan R <r.sricharan@ti.com> --- 
> arch/arm/cpu/armv7/lowlevel_init.S             |    8 ++++- 
> arch/arm/cpu/armv7/omap-common/boot-common.c   |   20 ++--------- 
> arch/arm/cpu/armv7/omap-common/lowlevel_init.S |   46 
> ++---------------------- 
> arch/arm/include/asm/arch-omap4/sys_proto.h    |   11 ++---- 
> arch/arm/include/asm/arch-omap5/sys_proto.h    |   12 ++----- 
> arch/arm/include/asm/omap_common.h             |    3 ++ 
> common/spl/spl.c                               |   12 ++++--- 
> include/configs/am335x_evm.h                   |    1 + 
> include/configs/pcm051.h                       |    1 + 
> include/configs/ti814x_evm.h                   |    1 + 
> include/spl.h                                  |    1 - 11 files 
> changed, 32 insertions(+), 84 deletions(-)

I can live with adding CONFIG_OMAP to the am335/ti81* parts.

[snip]
> diff --git a/common/spl/spl.c b/common/spl/spl.c index 
> 6715e0d..4a7ce42 100644 --- a/common/spl/spl.c +++ 
> b/common/spl/spl.c @@ -125,17 +125,21 @@ void 
> spl_parse_image_header(const struct image_header *header)
> 
> __weak void __noreturn jump_to_image_no_args(struct spl_image_info 
> *spl_image) { +#ifdef CONFIG_OMAP typedef void __noreturn 
> (*image_entry_noargs_t)(u32 *); +#else +	typedef void __noreturn 
> (*image_entry_noargs_t)(void); +#endif image_entry_noargs_t 
> image_entry = (image_entry_noargs_t) spl_image->entry_point;
> 
> debug("image entry point: 0x%X\n", spl_image->entry_point); /*
> Pass the saved boot_params from rom code */ -#if
> defined(CONFIG_VIRTIO) || defined(CONFIG_ZEBU) -	image_entry = 
> (image_entry_noargs_t)0x80100000; +#ifdef CONFIG_OMAP + 
> image_entry((u32 *)&gd->arch.omap_boot_params); +#else + 
> image_entry(); #endif -	u32 boot_params_ptr_addr = 
> (u32)&boot_params_ptr; -	image_entry((u32 *)boot_params_ptr_addr);
>  }

We must correct jump_to_image_no_args to really be, in the default
case here just image_entry() and have omap-common override the weak
function with one that passes along our params, and comment what's
going on.

- -- 
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJRbB4/AAoJENk4IS6UOR1WeWgP/3YpBeHa7RCjfc1ZfHjHSX4T
RlULN42HhNG/pka7S/bTo83whcVLDYz3WXYLWDYO6YVCnpaU1dfV2SuXeKjJIA9M
rfB/q2pIc6Wnjcfzrazdh7LS1A/0iV3qe4AUBgkaVJdQX+q5WwJoHVjzp1WH7aOH
/iXUR9pnhPnv8Uc+DJwtoT9fnDH5TkeMeSkVKe2mJEYPbSiKhmPHfKDvwbX7VfPl
IAD6ifda7rApH4QTWFyFj+9MsfW/XkdILmg4JaGQU5Gp6DwVC2cmNS47br5d9WeV
dsY+vA8Fezw+/HT5Jq7HBAmhy+gu7x7gpnYs5IzOSlWS+32W6HWoPzo/CHcnCaGt
1ltB44KevYu5FCrBA4KlJsoMx9JR1yJukOv3ezEFe2G9PBPyylLwTJ0tkVJb0b2H
fJO2fPCWbOHzvIy5nIFFY0sE9YsnKu8PAxqPFYaJGeUWQL87kRo9E0ep72HUv/Ia
rrOD6KWgp6cHi1qrFqbnVctWbDKBjBCyd3kc1nhGSmZTSTUkd/9Z6ie3i+wOyYsO
yBtG9S6riJDcECcE8nOxXRfW973aqxkH7ybNn5ekbYdP8iHq+UgFx8rfhf73gaen
c07fmIZJxz7i0KXNTsjHGycDMq7UqsihrdX47C9kcrcFqxEWAcZc8kXBlM1Kura2
EX40u9fhgitYG8EG4GGo
=5qv1
-----END PGP SIGNATURE-----
SRICHARAN R - April 15, 2013, 3:39 p.m.
On Monday 15 April 2013 09:05 PM, Tom Rini wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 04/15/2013 11:08 AM, Sricharan R wrote:
>> The boot parameters are read from individual variables assigned
>> for each of them. This been corrected and now they are stored as a
>> part of the global data 'gd' structure. So read them from 'gd'
>> instead.
>>
>> Signed-off-by: Sricharan R <r.sricharan@ti.com> --- 
>> arch/arm/cpu/armv7/lowlevel_init.S             |    8 ++++- 
>> arch/arm/cpu/armv7/omap-common/boot-common.c   |   20 ++--------- 
>> arch/arm/cpu/armv7/omap-common/lowlevel_init.S |   46 
>> ++---------------------- 
>> arch/arm/include/asm/arch-omap4/sys_proto.h    |   11 ++---- 
>> arch/arm/include/asm/arch-omap5/sys_proto.h    |   12 ++----- 
>> arch/arm/include/asm/omap_common.h             |    3 ++ 
>> common/spl/spl.c                               |   12 ++++--- 
>> include/configs/am335x_evm.h                   |    1 + 
>> include/configs/pcm051.h                       |    1 + 
>> include/configs/ti814x_evm.h                   |    1 + 
>> include/spl.h                                  |    1 - 11 files 
>> changed, 32 insertions(+), 84 deletions(-)
> 
> I can live with adding CONFIG_OMAP to the am335/ti81* parts.
Thanks. I was suspicious about this.

BTW, does am335/ti81 devices get the bootparams from romcode
in the same as OMAP ?

Also are there any am335 boards with XIP where i can test this ?
> 
> [snip]
>> diff --git a/common/spl/spl.c b/common/spl/spl.c index 
>> 6715e0d..4a7ce42 100644 --- a/common/spl/spl.c +++ 
>> b/common/spl/spl.c @@ -125,17 +125,21 @@ void 
>> spl_parse_image_header(const struct image_header *header)
>>
>> __weak void __noreturn jump_to_image_no_args(struct spl_image_info 
>> *spl_image) { +#ifdef CONFIG_OMAP typedef void __noreturn 
>> (*image_entry_noargs_t)(u32 *); +#else +	typedef void __noreturn 
>> (*image_entry_noargs_t)(void); +#endif image_entry_noargs_t 
>> image_entry = (image_entry_noargs_t) spl_image->entry_point;
>>
>> debug("image entry point: 0x%X\n", spl_image->entry_point); /*
>> Pass the saved boot_params from rom code */ -#if
>> defined(CONFIG_VIRTIO) || defined(CONFIG_ZEBU) -	image_entry = 
>> (image_entry_noargs_t)0x80100000; +#ifdef CONFIG_OMAP + 
>> image_entry((u32 *)&gd->arch.omap_boot_params); +#else + 
>> image_entry(); #endif -	u32 boot_params_ptr_addr = 
>> (u32)&boot_params_ptr; -	image_entry((u32 *)boot_params_ptr_addr);
>>  }
> 
> We must correct jump_to_image_no_args to really be, in the default
> case here just image_entry() and have omap-common override the weak
> function with one that passes along our params, and comment what's
> going on.
> 
 ok, that looks cleaner. This change in V2.

Regards,
 Sricharan
Tom Rini - April 15, 2013, 3:43 p.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/15/2013 11:39 AM, Sricharan R wrote:
> On Monday 15 April 2013 09:05 PM, Tom Rini wrote:
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>> 
>> On 04/15/2013 11:08 AM, Sricharan R wrote:
>>> The boot parameters are read from individual variables
>>> assigned for each of them. This been corrected and now they are
>>> stored as a part of the global data 'gd' structure. So read
>>> them from 'gd' instead.
>>> 
>>> Signed-off-by: Sricharan R <r.sricharan@ti.com> --- 
>>> arch/arm/cpu/armv7/lowlevel_init.S             |    8 ++++- 
>>> arch/arm/cpu/armv7/omap-common/boot-common.c   |   20
>>> ++--------- arch/arm/cpu/armv7/omap-common/lowlevel_init.S |
>>> 46 ++---------------------- 
>>> arch/arm/include/asm/arch-omap4/sys_proto.h    |   11 ++---- 
>>> arch/arm/include/asm/arch-omap5/sys_proto.h    |   12 ++----- 
>>> arch/arm/include/asm/omap_common.h             |    3 ++ 
>>> common/spl/spl.c                               |   12 ++++--- 
>>> include/configs/am335x_evm.h                   |    1 + 
>>> include/configs/pcm051.h                       |    1 + 
>>> include/configs/ti814x_evm.h                   |    1 + 
>>> include/spl.h                                  |    1 - 11
>>> files changed, 32 insertions(+), 84 deletions(-)
>> 
>> I can live with adding CONFIG_OMAP to the am335/ti81* parts.
> Thanks. I was suspicious about this.
> 
> BTW, does am335/ti81 devices get the bootparams from romcode in the
> same as OMAP ?

Yes, that's some common code we all share now.

> Also are there any am335 boards with XIP where i can test this ?

am335x can have NOR, and there is a NOR cape for beaglebone, but we
don't have everything for that in mainline just yet.  Once that gets
closer I will check it out.

- -- 
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJRbCAxAAoJENk4IS6UOR1WYV8P/11BbdwmzsnP7kp1vfuBtPeW
cU4A0unTnX6WiIOtEUsOW7i0Mk8QFDsm6KknkCvkOw51Vs+cYTiYeB0hjEmKH129
DEEGGWkhoaupmRtPmmNGzZaCDGbBsWOMexwzCS6L5ozsYWov+FIJtsLVMNR7EV83
8f1O5TA6EtTjmJ31AjvkFTOyTej0p+I167+edLsCzeMCQyuVj/aKWoH2HCHWhkhb
fq/CYExXiW9uhxWKinvECuOk9Yjw9scQWfM21GQQL1GK9zMNv/hZ+SoLptX67twZ
SiQboUdVAz/VhvHC/CvsNjW3lGOVrV1YwAFlhYHrjboA7aAm7H8zQRNbF55r95bc
bjA6bBe8xIWqmeu6tWQRP9zej8V7NWKaGMhFHSqSIE9svCG/x7gUnFal2z3+0hCa
xaxUiJgAAFGmEQNaw9HJ3sLogc18pOLABUSCVmtNlpRh7qTpK7a4qs2bx8gT+FIS
H3GIQRya952wXFipjxnzdKzr4zPmTGtIwzR9PSYSiY0V5w5jsnZ2BBb0YAZNWy4E
SmdwmYb27g3sVNTZzE5UIwv2NM/EY1IpJAca2vCR2n52ibJqraOTqPHMAdya4BX1
I5UD5HiCsX4jokfF+eBl3JllYgj/JoqSQCLS/zpFu+qll1tZHEMIYkhKNU4nDPjg
Su8NIwR0hmJvuOEqtEsz
=U9OR
-----END PGP SIGNATURE-----
SRICHARAN R - April 16, 2013, 4 a.m.
On Monday 15 April 2013 09:13 PM, Tom Rini wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 04/15/2013 11:39 AM, Sricharan R wrote:
>> On Monday 15 April 2013 09:05 PM, Tom Rini wrote:
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>
>>> On 04/15/2013 11:08 AM, Sricharan R wrote:
>>>> The boot parameters are read from individual variables
>>>> assigned for each of them. This been corrected and now they are
>>>> stored as a part of the global data 'gd' structure. So read
>>>> them from 'gd' instead.
>>>>
>>>> Signed-off-by: Sricharan R <r.sricharan@ti.com> --- 
>>>> arch/arm/cpu/armv7/lowlevel_init.S             |    8 ++++- 
>>>> arch/arm/cpu/armv7/omap-common/boot-common.c   |   20
>>>> ++--------- arch/arm/cpu/armv7/omap-common/lowlevel_init.S |
>>>> 46 ++---------------------- 
>>>> arch/arm/include/asm/arch-omap4/sys_proto.h    |   11 ++---- 
>>>> arch/arm/include/asm/arch-omap5/sys_proto.h    |   12 ++----- 
>>>> arch/arm/include/asm/omap_common.h             |    3 ++ 
>>>> common/spl/spl.c                               |   12 ++++--- 
>>>> include/configs/am335x_evm.h                   |    1 + 
>>>> include/configs/pcm051.h                       |    1 + 
>>>> include/configs/ti814x_evm.h                   |    1 + 
>>>> include/spl.h                                  |    1 - 11
>>>> files changed, 32 insertions(+), 84 deletions(-)
>>>
>>> I can live with adding CONFIG_OMAP to the am335/ti81* parts.
>> Thanks. I was suspicious about this.
>>
>> BTW, does am335/ti81 devices get the bootparams from romcode in the
>> same as OMAP ?
> 
> Yes, that's some common code we all share now.
> 
>> Also are there any am335 boards with XIP where i can test this ?
> 
> am335x can have NOR, and there is a NOR cape for beaglebone, but we
> don't have everything for that in mainline just yet.  Once that gets
> closer I will check it out.
> 
 Ok, thanks for that.

Regards,
 Sricharan

Patch

diff --git a/arch/arm/cpu/armv7/lowlevel_init.S b/arch/arm/cpu/armv7/lowlevel_init.S
index 0d45528..0a15aa4 100644
--- a/arch/arm/cpu/armv7/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/lowlevel_init.S
@@ -37,7 +37,13 @@  ENTRY(lowlevel_init)
 	 */
 	ldr	sp, =CONFIG_SYS_INIT_SP_ADDR
 	bic	sp, sp, #7 /* 8-byte alignment for ABI compliance */
-
+#ifdef CONFIG_SPL_BUILD
+	ldr	r8, =gdata
+#else
+	sub	sp, #GD_SIZE
+	bic	sp, sp, #7
+	mov	r8, sp
+#endif
 	/*
 	 * Save the old lr(passed in ip) and the current lr to stack
 	 */
diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c
index 24cbe2d..6561957 100644
--- a/arch/arm/cpu/armv7/omap-common/boot-common.c
+++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
@@ -23,31 +23,17 @@ 
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/sys_proto.h>
 
-/*
- * This is used to verify if the configuration header
- * was executed by rom code prior to control of transfer
- * to the bootloader. SPL is responsible for saving and
- * passing the boot_params pointer to the u-boot.
- */
-struct omap_boot_parameters boot_params __attribute__ ((section(".data")));
+DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_SPL_BUILD
-/*
- * We use static variables because global data is not ready yet.
- * Initialized data is available in SPL right from the beginning.
- * We would not typically need to save these parameters in regular
- * U-Boot. This is needed only in SPL at the moment.
- */
-u32 omap_bootmode = MMCSD_MODE_FAT;
-
 u32 spl_boot_device(void)
 {
-	return (u32) (boot_params.omap_bootdevice);
+	return (u32) (gd->arch.omap_boot_params.omap_bootdevice);
 }
 
 u32 spl_boot_mode(void)
 {
-	return omap_bootmode;
+	return gd->arch.omap_boot_params.omap_bootmode;
 }
 
 void spl_board_init(void)
diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
index b933fe8..c489536 100644
--- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
@@ -28,55 +28,13 @@ 
 
 #include <config.h>
 #include <asm/arch/omap.h>
+#include <asm/omap_common.h>
 #include <asm/arch/spl.h>
 #include <linux/linkage.h>
 
 ENTRY(save_boot_params)
-	/*
-	 * See if the rom code passed pointer is valid:
-	 * It is not valid if it is not in non-secure SRAM
-	 * This may happen if you are booting with the help of
-	 * debugger
-	 */
-	ldr     r2, =NON_SECURE_SRAM_START
-	cmp	r2, r0
-	bgt	1f
-	ldr	r2, =NON_SECURE_SRAM_END
-	cmp	r2, r0
-	blt	1f
-
-	/*
-	 * store the boot params passed from rom code or saved
-	 * and passed by SPL
-	 */
-	cmp	r0, #0
-	beq	1f
-	ldr	r1, =boot_params
+	ldr	r1, =OMAP_SRAM_SCRATCH_BOOT_PARAMS
 	str	r0, [r1]
-#ifdef CONFIG_SPL_BUILD
-	/* Store the boot device in spl_boot_device */
-	ldrb	r2, [r0, #BOOT_DEVICE_OFFSET]	@ r1 <- value of boot device
-	and	r2, #BOOT_DEVICE_MASK
-	ldr	r3, =boot_params
-	strb	r2, [r3, #BOOT_DEVICE_OFFSET]	@ spl_boot_device <- r1
-
-	/* boot mode is passed only for devices that can raw/fat mode */
-	cmp	r2, #BOOT_DEVICE_XIP
-	blt	2f
-	cmp	r2, #BOOT_DEVICE_MMC2
-	bgt	2f
-	/* Store the boot mode (raw/FAT) in omap_bootmode */
-	ldr	r2, [r0, #DEV_DESC_PTR_OFFSET]	@ get the device descriptor ptr
-	ldr	r2, [r2, #DEV_DATA_PTR_OFFSET]	@ get the pDeviceData ptr
-	ldr	r2, [r2, #BOOT_MODE_OFFSET]	@ get the boot mode
-	ldr	r3, =omap_bootmode
-	str	r2, [r3]
-#endif
-2:
-	ldrb	r2, [r0, #CH_FLAGS_OFFSET]
-	ldr	r3, =boot_params
-	strb	r2, [r3, #CH_FLAGS_OFFSET]
-1:
 	bx	lr
 ENDPROC(save_boot_params)
 
diff --git a/arch/arm/include/asm/arch-omap4/sys_proto.h b/arch/arm/include/asm/arch-omap4/sys_proto.h
index d5f1868..841388a 100644
--- a/arch/arm/include/asm/arch-omap4/sys_proto.h
+++ b/arch/arm/include/asm/arch-omap4/sys_proto.h
@@ -27,6 +27,8 @@ 
 #include <asm/omap_common.h>
 #include <asm/arch/mux_omap4.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 struct omap_sysinfo {
 	char *board_string;
 };
@@ -58,13 +60,6 @@  void omap_vc_init(u16 speed_khz);
 int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data);
 u32 warm_reset(void);
 void force_emif_self_refresh(void);
-/*
- * This is used to verify if the configuration header
- * was executed by Romcode prior to control of transfer
- * to the bootloader. SPL is responsible for saving and
- * passing this to the u-boot.
- */
-extern struct omap_boot_parameters boot_params;
 
 static inline u32 running_from_sdram(void)
 {
@@ -84,7 +79,7 @@  static inline u8 uboot_loaded_by_spl(void)
 	 * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
 	 * mandatory section if CH is present.
 	 */
-	if ((boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
+	if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
 		return 0;
 	else
 		return running_from_sdram();
diff --git a/arch/arm/include/asm/arch-omap5/sys_proto.h b/arch/arm/include/asm/arch-omap5/sys_proto.h
index e66ab44..1099ec3 100644
--- a/arch/arm/include/asm/arch-omap5/sys_proto.h
+++ b/arch/arm/include/asm/arch-omap5/sys_proto.h
@@ -27,6 +27,8 @@ 
 #include <asm/omap_common.h>
 #include <asm/arch/clocks.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 struct pad_conf_entry {
 	u32 offset;
 	u32 val;
@@ -65,14 +67,6 @@  void force_emif_self_refresh(void);
 void get_ioregs(const struct ctrl_ioregs **regs);
 void srcomp_enable(void);
 
-/*
- * This is used to verify if the configuration header
- * was executed by Romcode prior to control of transfer
- * to the bootloader. SPL is responsible for saving and
- * passing this to the u-boot.
- */
-extern struct omap_boot_parameters boot_params;
-
 static inline u32 running_from_sdram(void)
 {
 	u32 pc;
@@ -91,7 +85,7 @@  static inline u8 uboot_loaded_by_spl(void)
 	 * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a
 	 * mandatory section if CH is present.
 	 */
-	if ((boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
+	if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS))
 		return 0;
 	else
 		return running_from_sdram();
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 6b73d86..9db4b1b 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -25,6 +25,8 @@ 
 #ifndef	_OMAP_COMMON_H_
 #define	_OMAP_COMMON_H_
 
+#ifndef __ASSEMBLY__
+
 #include <common.h>
 
 #define NUM_SYS_CLKS	8
@@ -557,6 +559,7 @@  static inline u32 omap_revision(void)
 	extern u32 *const omap_si_rev;
 	return *omap_si_rev;
 }
+#endif
 
 /*
  * silicon revisions.
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 6715e0d..4a7ce42 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -125,17 +125,21 @@  void spl_parse_image_header(const struct image_header *header)
 
 __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
 {
+#ifdef CONFIG_OMAP
 	typedef void __noreturn (*image_entry_noargs_t)(u32 *);
+#else
+	typedef void __noreturn (*image_entry_noargs_t)(void);
+#endif
 	image_entry_noargs_t image_entry =
 			(image_entry_noargs_t) spl_image->entry_point;
 
 	debug("image entry point: 0x%X\n", spl_image->entry_point);
 	/* Pass the saved boot_params from rom code */
-#if defined(CONFIG_VIRTIO) || defined(CONFIG_ZEBU)
-	image_entry = (image_entry_noargs_t)0x80100000;
+#ifdef CONFIG_OMAP
+	image_entry((u32 *)&gd->arch.omap_boot_params);
+#else
+	image_entry();
 #endif
-	u32 boot_params_ptr_addr = (u32)&boot_params_ptr;
-	image_entry((u32 *)boot_params_ptr_addr);
 }
 
 #ifdef CONFIG_SPL_RAM_DEVICE
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index b7c443c..976f4d1 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -17,6 +17,7 @@ 
 #define __CONFIG_AM335X_EVM_H
 
 #define CONFIG_AM33XX
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
diff --git a/include/configs/pcm051.h b/include/configs/pcm051.h
index d0ea74e..5e5fab1 100644
--- a/include/configs/pcm051.h
+++ b/include/configs/pcm051.h
@@ -20,6 +20,7 @@ 
 #define __CONFIG_PCM051_H
 
 #define CONFIG_AM33XX
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
diff --git a/include/configs/ti814x_evm.h b/include/configs/ti814x_evm.h
index 16547e3..68a7307 100644
--- a/include/configs/ti814x_evm.h
+++ b/include/configs/ti814x_evm.h
@@ -19,6 +19,7 @@ 
 #define CONFIG_TI81XX
 #define CONFIG_TI814X
 #define CONFIG_SYS_NO_FLASH
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
diff --git a/include/spl.h b/include/spl.h
index b40be80..4bc1dd1 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -44,7 +44,6 @@  struct spl_image_info {
 #define SPL_COPY_PAYLOAD_ONLY	1
 
 extern struct spl_image_info spl_image;
-extern u32 *boot_params_ptr;
 
 /* SPL common functions */
 void preloader_console_init(void);