[U-Boot] [PATCH] armv7:TI: Add <asm/ti-common/sys_proto.h> and migrate omap_hw_init_context

Lokesh Vutla lokeshvutla at ti.com
Mon May 19 06:09:10 CEST 2014


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 <lokeshvutla at ti.com>

Thanks and regards,
Lokesh
> 
> Cc: Sricharan R. <r.sricharan at ti.com>
> Cc: Lokesh Vutla <lokeshvutla at ti.com>
> Signed-off-by: Tom Rini <trini at ti.com>

> ---
>  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 <linux/mtd/omap_gpmc.h>
> +#include <asm/ti-common/sys_proto.h>
>  #include <asm/arch/cpu.h>
>  
>  #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 <asm/omap_common.h>
>  #include <linux/mtd/omap_gpmc.h>
>  #include <asm/arch/mux_omap4.h>
> +#include <asm/ti-common/sys_proto.h>
>  
>  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 <asm/omap_common.h>
>  #include <linux/mtd/omap_gpmc.h>
>  #include <asm/arch/clock.h>
> +#include <asm/ti-common/sys_proto.h>
>  
>  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, <www.ti.com>
> + *
> + * 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
> 



More information about the U-Boot mailing list