[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