mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-26 05:34:30 +08:00
ARM: OMAP: Cleanup boot parameters usage
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>
This commit is contained in:
parent
fda06812a0
commit
4a0eb75752
@ -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
|
||||
*/
|
||||
|
@ -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)
|
||||
@ -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
|
||||
|
@ -28,59 +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 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)
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -17,6 +17,7 @@
|
||||
#define __CONFIG_AM335X_EVM_H
|
||||
|
||||
#define CONFIG_AM33XX
|
||||
#define CONFIG_OMAP
|
||||
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
#define __CONFIG_IGEP0033_H
|
||||
|
||||
#define CONFIG_AM33XX
|
||||
#define CONFIG_OMAP
|
||||
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#define __CONFIG_PCM051_H
|
||||
|
||||
#define CONFIG_AM33XX
|
||||
#define CONFIG_OMAP
|
||||
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#define CONFIG_TI81XX
|
||||
#define CONFIG_TI814X
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
#define CONFIG_OMAP
|
||||
|
||||
#include <asm/arch/omap.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);
|
||||
|
Loading…
Reference in New Issue
Block a user