ARM: OMAP: Cleanup boot parameters usage
authorSRICHARAN R <r.sricharan@ti.com>
Wed, 24 Apr 2013 00:41:24 +0000 (00:41 +0000)
committerTom Rini <trini@ti.com>
Fri, 10 May 2013 12:25:56 +0000 (08:25 -0400)
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>
[trini: Add igep0033 hunk]
Signed-off-by: Tom Rini <trini@ti.com>
12 files changed:
arch/arm/cpu/armv7/lowlevel_init.S
arch/arm/cpu/armv7/omap-common/boot-common.c
arch/arm/cpu/armv7/omap-common/lowlevel_init.S
arch/arm/include/asm/arch-omap4/sys_proto.h
arch/arm/include/asm/arch-omap5/sys_proto.h
arch/arm/include/asm/omap_common.h
common/spl/spl.c
include/configs/am335x_evm.h
include/configs/igep0033.h
include/configs/pcm051.h
include/configs/ti814x_evm.h
include/spl.h

index 0d45528e999ee021799bc3556ca0059d1df5ad9b..0a15aa4671ba9b065d216c5b465382138a1e736f 100644 (file)
@@ -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
         */
index 24cbe2da05dc55b08b07c17abeb057c5321fa434..bff7e9c82a1ef0be65d6b9bd0f52cca312bcfc74 100644 (file)
 #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)
@@ -73,4 +59,15 @@ int board_mmc_init(bd_t *bis)
        }
        return 0;
 }
+
+void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
+{
+       typedef void __noreturn (*image_entry_noargs_t)(u32 *);
+       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 */
+       image_entry((u32 *)&gd->arch.omap_boot_params);
+}
 #endif
index 90b3c8aea4ec3b7d5911bdc86a89f9c8e17f261b..c4895369bfb0c853f2cea935113cd80e0e9e4269 100644 (file)
 
 #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 only valid for device that can be raw or FAT booted.
-        * in other cases it may be fatal to look.  While platforms differ
-        * in the values used for each MMC slot, they are contiguous.
-        */
-       cmp     r2, #MMC_BOOT_DEVICES_START
-       blt     2f
-       cmp     r2, #MMC_BOOT_DEVICES_END
-       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)
 
index ac9c1f83ed7cd3a5abf0fedf37efebeab8770bb2..039a1f2604f84794c535e767f432e1a65c7de387 100644 (file)
@@ -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;
 };
@@ -59,13 +61,6 @@ int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data);
 u32 warm_reset(void);
 void force_emif_self_refresh(void);
 void setup_warmreset_time(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)
 {
@@ -85,7 +80,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();
index 393c8bfdb7a7beb52f64c7214920b817d5efc80e..b79161d79abd710e3d324ec0326be0347e096f41 100644 (file)
@@ -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;
@@ -66,14 +68,6 @@ void get_ioregs(const struct ctrl_ioregs **regs);
 void srcomp_enable(void);
 void setup_warmreset_time(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;
@@ -92,7 +86,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();
index eebc9c7cbf1069d2dba5e05c13a857c1189ce321..ee7b188d3a55c7bbbe7c0c97a3a53cf0f1245d48 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef        _OMAP_COMMON_H_
 #define        _OMAP_COMMON_H_
 
+#ifndef __ASSEMBLY__
+
 #include <common.h>
 
 #define NUM_SYS_CLKS   8
@@ -558,6 +560,7 @@ static inline u32 omap_revision(void)
        extern u32 *const omap_si_rev;
        return *omap_si_rev;
 }
+#endif
 
 /*
  * silicon revisions.
index 6715e0d203a829053b002ff8bfae87d0e118fdaa..e6aa89bdd00d9729d5bbe99038dc9c2d86a97885 100644 (file)
@@ -125,17 +125,13 @@ void spl_parse_image_header(const struct image_header *header)
 
 __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
 {
-       typedef void __noreturn (*image_entry_noargs_t)(u32 *);
+       typedef void __noreturn (*image_entry_noargs_t)(void);
+
        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;
-#endif
-       u32 boot_params_ptr_addr = (u32)&boot_params_ptr;
-       image_entry((u32 *)boot_params_ptr_addr);
+       image_entry();
 }
 
 #ifdef CONFIG_SPL_RAM_DEVICE
index 5739422c4c1d16c6271128268b3a5920ee30d5e8..941054d70a0513d13f05d96a8310271169d14681 100644 (file)
@@ -17,6 +17,7 @@
 #define __CONFIG_AM335X_EVM_H
 
 #define CONFIG_AM33XX
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
index 50eafdf60b66266a310b8c4f727ba0427a6ce8c6..14063a83e6a93c2c63fbc74a7474a62d39d6007b 100644 (file)
@@ -15,6 +15,7 @@
 #define __CONFIG_IGEP0033_H
 
 #define CONFIG_AM33XX
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
index 2e3f08b5b6dcf51b4fe948ba047053d43fdf8efb..cc8d3171998bdb7f5d6f0c1e883c57838a12f29a 100644 (file)
@@ -20,6 +20,7 @@
 #define __CONFIG_PCM051_H
 
 #define CONFIG_AM33XX
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
index e646bd72350e928d34d799fe4074ebc93421d81e..6c423df372e9c24a369f76339e4343839f9171c0 100644 (file)
@@ -19,6 +19,7 @@
 #define CONFIG_TI81XX
 #define CONFIG_TI814X
 #define CONFIG_SYS_NO_FLASH
+#define CONFIG_OMAP
 
 #include <asm/arch/omap.h>
 
index b40be8039c05b83ac1ec33bee525b5b2c2068c75..4bc1dd13bbc0126e6e684bc3d84fe4255fba4452 100644 (file)
@@ -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);