From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lokesh Vutla Date: Mon, 19 May 2014 09:39:10 +0530 Subject: [U-Boot] [PATCH] armv7:TI: Add and migrate omap_hw_init_context In-Reply-To: <1400259744-21454-1-git-send-email-trini@ti.com> References: <1400259744-21454-1-git-send-email-trini@ti.com> Message-ID: <537983E6.4070207@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Tom, On Friday 16 May 2014 10:32 PM, Tom Rini wrote: > The omap_hw_init_context function (and assorted helpers) is the same for > all OMAP-derived parts as when CHSETTINGS are used, that's the same and > our DDR base is also always the same. In order to make this common we > simply need to update the names of the define for DDR address space > which is also common. Reviewed-by: Lokesh Vutla Thanks and regards, Lokesh > > Cc: Sricharan R. > Cc: Lokesh Vutla > Signed-off-by: Tom Rini > --- > arch/arm/cpu/armv7/omap-common/hwinit-common.c | 4 +- > arch/arm/include/asm/arch-am33xx/sys_proto.h | 1 + > arch/arm/include/asm/arch-omap4/sys_proto.h | 51 +---------------- > arch/arm/include/asm/arch-omap5/omap.h | 5 -- > arch/arm/include/asm/arch-omap5/sys_proto.h | 50 +--------------- > arch/arm/include/asm/omap_common.h | 6 -- > arch/arm/include/asm/ti-common/sys_proto.h | 72 ++++++++++++++++++++++++ > 7 files changed, 77 insertions(+), 112 deletions(-) > create mode 100644 arch/arm/include/asm/ti-common/sys_proto.h > > diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c > index 8ebc0ce..132454c 100644 > --- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c > +++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c > @@ -194,8 +194,8 @@ u32 omap_sdram_size(void) > addr = section & EMIF_SYS_ADDR_MASK; > > /* See if the address is valid */ > - if ((addr >= DRAM_ADDR_SPACE_START) && > - (addr < DRAM_ADDR_SPACE_END)) { > + if ((addr >= TI_ARMV7_DRAM_ADDR_SPACE_START) && > + (addr < TI_ARMV7_DRAM_ADDR_SPACE_END)) { > size = ((section & EMIF_SYS_SIZE_MASK) >> > EMIF_SYS_SIZE_SHIFT); > size = 1 << size; > diff --git a/arch/arm/include/asm/arch-am33xx/sys_proto.h b/arch/arm/include/asm/arch-am33xx/sys_proto.h > index 91ff2ad..33a82fc 100644 > --- a/arch/arm/include/asm/arch-am33xx/sys_proto.h > +++ b/arch/arm/include/asm/arch-am33xx/sys_proto.h > @@ -11,6 +11,7 @@ > #ifndef _SYS_PROTO_H_ > #define _SYS_PROTO_H_ > #include > +#include > #include > > #define BOARD_REV_ID 0x0 > diff --git a/arch/arm/include/asm/arch-omap4/sys_proto.h b/arch/arm/include/asm/arch-omap4/sys_proto.h > index 80172f3..83d858f 100644 > --- a/arch/arm/include/asm/arch-omap4/sys_proto.h > +++ b/arch/arm/include/asm/arch-omap4/sys_proto.h > @@ -14,6 +14,7 @@ > #include > #include > #include > +#include > > DECLARE_GLOBAL_DATA_PTR; > > @@ -53,54 +54,4 @@ 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); > - > -static inline u32 running_from_sdram(void) > -{ > - u32 pc; > - asm volatile ("mov %0, pc" : "=r" (pc)); > - return ((pc >= OMAP44XX_DRAM_ADDR_SPACE_START) && > - (pc < OMAP44XX_DRAM_ADDR_SPACE_END)); > -} > - > -static inline u8 uboot_loaded_by_spl(void) > -{ > - /* > - * u-boot can be running from sdram either because of configuration > - * Header or by SPL. If because of CH, then the romcode sets the > - * CHSETTINGS executed bit to true in the boot parameter structure that > - * it passes to the bootloader.This parameter is stored in the ch_flags > - * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a > - * mandatory section if CH is present. > - */ > - if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS)) > - return 0; > - else > - return running_from_sdram(); > -} > -/* > - * The basic hardware init of OMAP(s_init()) can happen in 4 > - * different contexts: > - * 1. SPL running from SRAM > - * 2. U-Boot running from FLASH > - * 3. Non-XIP U-Boot loaded to SDRAM by SPL > - * 4. Non-XIP U-Boot loaded to SDRAM by ROM code using the > - * Configuration Header feature > - * > - * This function finds this context. > - * Defining as inline may help in compiling out unused functions in SPL > - */ > -static inline u32 omap_hw_init_context(void) > -{ > -#ifdef CONFIG_SPL_BUILD > - return OMAP_INIT_CONTEXT_SPL; > -#else > - if (uboot_loaded_by_spl()) > - return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL; > - else if (running_from_sdram()) > - return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH; > - else > - return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR; > -#endif > -} > - > #endif > diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h > index 19fdece..54fc825 100644 > --- a/arch/arm/include/asm/arch-omap5/omap.h > +++ b/arch/arm/include/asm/arch-omap5/omap.h > @@ -23,11 +23,6 @@ > #define OMAP54XX_L4_WKUP_BASE 0x4Ae00000 > #define OMAP54XX_L4_PER_BASE 0x48000000 > > -#define OMAP54XX_DRAM_ADDR_SPACE_START 0x80000000 > -#define OMAP54XX_DRAM_ADDR_SPACE_END 0xFFFFFFFF > -#define DRAM_ADDR_SPACE_START OMAP54XX_DRAM_ADDR_SPACE_START > -#define DRAM_ADDR_SPACE_END OMAP54XX_DRAM_ADDR_SPACE_END > - > /* CONTROL ID CODE */ > #define CONTROL_CORE_ID_CODE 0x4A002204 > #define CONTROL_WKUP_ID_CODE 0x4AE0C204 > diff --git a/arch/arm/include/asm/arch-omap5/sys_proto.h b/arch/arm/include/asm/arch-omap5/sys_proto.h > index bf12c73..1038303 100644 > --- a/arch/arm/include/asm/arch-omap5/sys_proto.h > +++ b/arch/arm/include/asm/arch-omap5/sys_proto.h > @@ -14,6 +14,7 @@ > #include > #include > #include > +#include > > DECLARE_GLOBAL_DATA_PTR; > > @@ -56,55 +57,6 @@ void get_ioregs(const struct ctrl_ioregs **regs); > void srcomp_enable(void); > void setup_warmreset_time(void); > > -static inline u32 running_from_sdram(void) > -{ > - u32 pc; > - asm volatile ("mov %0, pc" : "=r" (pc)); > - return ((pc >= OMAP54XX_DRAM_ADDR_SPACE_START) && > - (pc < OMAP54XX_DRAM_ADDR_SPACE_END)); > -} > - > -static inline u8 uboot_loaded_by_spl(void) > -{ > - /* > - * u-boot can be running from sdram either because of configuration > - * Header or by SPL. If because of CH, then the romcode sets the > - * CHSETTINGS executed bit to true in the boot parameter structure that > - * it passes to the bootloader.This parameter is stored in the ch_flags > - * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a > - * mandatory section if CH is present. > - */ > - if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS)) > - return 0; > - else > - return running_from_sdram(); > -} > -/* > - * The basic hardware init of OMAP(s_init()) can happen in 4 > - * different contexts: > - * 1. SPL running from SRAM > - * 2. U-Boot running from FLASH > - * 3. Non-XIP U-Boot loaded to SDRAM by SPL > - * 4. Non-XIP U-Boot loaded to SDRAM by ROM code using the > - * Configuration Header feature > - * > - * This function finds this context. > - * Defining as inline may help in compiling out unused functions in SPL > - */ > -static inline u32 omap_hw_init_context(void) > -{ > -#ifdef CONFIG_SPL_BUILD > - return OMAP_INIT_CONTEXT_SPL; > -#else > - if (uboot_loaded_by_spl()) > - return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL; > - else if (running_from_sdram()) > - return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH; > - else > - return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR; > -#endif > -} > - > static inline u32 div_round_up(u32 num, u32 den) > { > return (num + den - 1)/den; > diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h > index 729723a..29278fe 100644 > --- a/arch/arm/include/asm/omap_common.h > +++ b/arch/arm/include/asm/omap_common.h > @@ -576,12 +576,6 @@ s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb); > > void usb_fake_mac_from_die_id(u32 *id); > > -/* HW Init Context */ > -#define OMAP_INIT_CONTEXT_SPL 0 > -#define OMAP_INIT_CONTEXT_UBOOT_FROM_NOR 1 > -#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL 2 > -#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH 3 > - > /* ABB */ > #define OMAP_ABB_NOMINAL_OPP 0 > #define OMAP_ABB_FAST_OPP 1 > diff --git a/arch/arm/include/asm/ti-common/sys_proto.h b/arch/arm/include/asm/ti-common/sys_proto.h > new file mode 100644 > index 0000000..d3ab75f > --- /dev/null > +++ b/arch/arm/include/asm/ti-common/sys_proto.h > @@ -0,0 +1,72 @@ > +/* > + * (C) Copyright 2014 > + * Texas Instruments, > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#ifndef _TI_COMMON_SYS_PROTO_H_ > +#define _TI_COMMON_SYS_PROTO_H_ > + > +DECLARE_GLOBAL_DATA_PTR; > + > +#ifdef CONFIG_OMAP_COMMON > +#define TI_ARMV7_DRAM_ADDR_SPACE_START 0x80000000 > +#define TI_ARMV7_DRAM_ADDR_SPACE_END 0xFFFFFFFF > + > +#define OMAP_INIT_CONTEXT_SPL 0 > +#define OMAP_INIT_CONTEXT_UBOOT_FROM_NOR 1 > +#define OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL 2 > +#define OMAP_INIT_CONTEXT_UBOOT_AFTER_CH 3 > + > +static inline u32 running_from_sdram(void) > +{ > + u32 pc; > + asm volatile ("mov %0, pc" : "=r" (pc)); > + return ((pc >= TI_ARMV7_DRAM_ADDR_SPACE_START) && > + (pc < TI_ARMV7_DRAM_ADDR_SPACE_END)); > +} > + > +static inline u8 uboot_loaded_by_spl(void) > +{ > + /* > + * u-boot can be running from sdram either because of configuration > + * Header or by SPL. If because of CH, then the romcode sets the > + * CHSETTINGS executed bit to true in the boot parameter structure that > + * it passes to the bootloader.This parameter is stored in the ch_flags > + * variable by both SPL and u-boot.Check out for CHSETTINGS, which is a > + * mandatory section if CH is present. > + */ > + if ((gd->arch.omap_boot_params.ch_flags) & (CH_FLAGS_CHSETTINGS)) > + return 0; > + else > + return running_from_sdram(); > +} > + > +/* > + * The basic hardware init of OMAP(s_init()) can happen in 4 > + * different contexts: > + * 1. SPL running from SRAM > + * 2. U-Boot running from FLASH > + * 3. Non-XIP U-Boot loaded to SDRAM by SPL > + * 4. Non-XIP U-Boot loaded to SDRAM by ROM code using the > + * Configuration Header feature > + * > + * This function finds this context. > + * Defining as inline may help in compiling out unused functions in SPL > + */ > +static inline u32 omap_hw_init_context(void) > +{ > +#ifdef CONFIG_SPL_BUILD > + return OMAP_INIT_CONTEXT_SPL; > +#else > + if (uboot_loaded_by_spl()) > + return OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL; > + else if (running_from_sdram()) > + return OMAP_INIT_CONTEXT_UBOOT_AFTER_CH; > + else > + return OMAP_INIT_CONTEXT_UBOOT_FROM_NOR; > +#endif > +} > +#endif > + > +#endif >