summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
diff options
context:
space:
mode:
authorSricharan <r.sricharan@ti.com>2011-11-15 09:50:03 -0500
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2011-11-15 22:25:50 +0100
commit78f455c055ddf55a1a2dd6ae5e2d060ed2e5bd0e (patch)
treec124c8e56d72e9e46f70516fa9dd3dabdac22d9a /arch/arm/cpu/armv7/omap-common/lowlevel_init.S
parentbb772a594493092adfb18a56889e0bce855eed99 (diff)
downloadu-boot-imx-78f455c055ddf55a1a2dd6ae5e2d060ed2e5bd0e.zip
u-boot-imx-78f455c055ddf55a1a2dd6ae5e2d060ed2e5bd0e.tar.gz
u-boot-imx-78f455c055ddf55a1a2dd6ae5e2d060ed2e5bd0e.tar.bz2
omap4/5: Add support for booting with CH.
Configuration header(CH) is 512 byte header attached to an OMAP boot image that will help ROM code to initialize clocks, SDRAM etc and copy U-Boot directly into SDRAM. CH can help us in by-passing SPL and directly boot U-boot, hence it's an alternative for SPL. However, we intend to support both CH and SPL for OMAP4/5. Initialization done through CH is limited and is not equivalent to that done by SPL. So U-Boot has to distinguish between the two cases and handle them accordingly. This patch takes care of doing this. Signed-off-by: sricharan <r.sricharan@ti.com> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
Diffstat (limited to 'arch/arm/cpu/armv7/omap-common/lowlevel_init.S')
-rw-r--r--arch/arm/cpu/armv7/omap-common/lowlevel_init.S29
1 files changed, 24 insertions, 5 deletions
diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
index 6873298..35f38ac 100644
--- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S
@@ -27,7 +27,7 @@
*/
#include <asm/arch/omap.h>
-#ifdef CONFIG_SPL_BUILD
+
.global save_boot_params
save_boot_params:
/*
@@ -43,21 +43,40 @@ save_boot_params:
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
+ str r0, [r1]
+#ifdef CONFIG_SPL_BUILD
/* Store the boot device in omap_boot_device */
- ldr r2, [r0, #BOOT_DEVICE_OFFSET] @ r1 <- value of boot device
+ ldrb r2, [r0, #BOOT_DEVICE_OFFSET] @ r1 <- value of boot device
and r2, #BOOT_DEVICE_MASK
- ldr r3, =omap_bootdevice
- str r2, [r3] @ omap_boot_device <- r1
+ ldr r3, =boot_params
+ strb r2, [r3, #BOOT_DEVICE_OFFSET] @ omap_boot_device <- r1
+ /* boot mode is passed only for devices that can raw/fat mode */
+ cmp r2, #2
+ blt 2f
+ cmp r2, #7
+ bgt 2f
/* Store the boot mode (raw/FAT) in omap_boot_mode */
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
-#endif
+
.globl lowlevel_init
lowlevel_init: