ARM: uniphier: make SPL optional for ARVv8 SoCs

We may want to run different firmware before running U-Boot.  For
example, ARM Trusted Firmware runs before U-Boot, making U-Boot
a non-secure world boot loader.  In this case, the SoC might be
initialized there, which enables us to skip SPL entirely.

This commit removes "select SPL" to make it configurable.  This
also enables the Multi SoC support for the UniPhier ARMv8 SoCs.
(CONFIG_ARCH_UNIPHIER_V8_MULTI)  Thanks to the driver model and
Device Tree, the U-Boot proper part is now written in a generic way.
The board/SoC parameters reside in DT.  The Multi SoC support
increases the memory footprint a bit, but the U-Boot proper does
not have strict memory constraint.  This will mitigate the per-SoC
(sometimes per-board) defconfig burden.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
Masahiro Yamada 2017-01-21 18:05:22 +09:00
parent 7a37bd64c5
commit 561ca649a8
11 changed files with 56 additions and 30 deletions

View File

@ -894,12 +894,11 @@ config ARCH_UNIPHIER
select OF_CONTROL
select OF_LIBFDT
select PINCTRL
select SPL
select SPL_DM
select SPL_LIBCOMMON_SUPPORT
select SPL_LIBGENERIC_SUPPORT
select SPL_OF_CONTROL
select SPL_PINCTRL
select SPL_DM if SPL
select SPL_LIBCOMMON_SUPPORT if SPL
select SPL_LIBGENERIC_SUPPORT if SPL
select SPL_OF_CONTROL if SPL
select SPL_PINCTRL if SPL
select SUPPORT_SPL
help
Support for UniPhier SoC family developed by Socionext Inc.

View File

@ -13,66 +13,81 @@ config ARCH_UNIPHIER_32BIT
config ARCH_UNIPHIER_64BIT
bool
select ARM64
select SPL_SEPARATE_BSS
select ARMV8_MULTIENTRY
select ARMV8_SPIN_TABLE
select SPL_SEPARATE_BSS if SPL
select ARMV8_MULTIENTRY if SPL
select ARMV8_SPIN_TABLE if SPL
choice
prompt "UniPhier SoC select"
default ARCH_UNIPHIER_PRO4
config ARCH_UNIPHIER_SLD3
bool "UniPhier PH1-sLD3 SoC"
bool "UniPhier sLD3 SoC"
select ARCH_UNIPHIER_32BIT
config ARCH_UNIPHIER_LD4_SLD8
bool "UniPhier PH1-LD4/PH1-sLD8 SoC"
bool "UniPhier LD4/sLD8 SoCs"
select ARCH_UNIPHIER_32BIT
config ARCH_UNIPHIER_PRO4
bool "UniPhier PH1-Pro4 SoC"
bool "UniPhier Pro4 SoC"
select ARCH_UNIPHIER_32BIT
config ARCH_UNIPHIER_PRO5_PXS2_LD6B
bool "UniPhier PH1-Pro5/ProXstream2/PH1-LD6b SoC"
bool "UniPhier Pro5/PXs2/LD6b SoCs"
select ARCH_UNIPHIER_32BIT
config ARCH_UNIPHIER_LD11
bool "UniPhier PH1-LD11 SoC"
config ARCH_UNIPHIER_LD11_SINGLE
bool "UniPhier LD11 SoC"
select ARCH_UNIPHIER_64BIT
config ARCH_UNIPHIER_LD20
bool "UniPhier PH1-LD20 SoC"
config ARCH_UNIPHIER_LD20_SINGLE
bool "UniPhier LD20 SoC"
select ARCH_UNIPHIER_64BIT
config ARCH_UNIPHIER_V8_MULTI
bool "UniPhier V8 SoCs"
depends on !SPL
select ARCH_UNIPHIER_64BIT
select OF_BOARD_SETUP
endchoice
config ARCH_UNIPHIER_LD4
bool "Enable UniPhier PH1-LD4 SoC support"
bool "Enable UniPhier LD4 SoC support"
depends on ARCH_UNIPHIER_LD4_SLD8
default y
config ARCH_UNIPHIER_SLD8
bool "Enable UniPhier PH1-sLD8 SoC support"
bool "Enable UniPhier sLD8 SoC support"
depends on ARCH_UNIPHIER_LD4_SLD8
default y
config ARCH_UNIPHIER_PRO5
bool "Enable UniPhier PH1-Pro5 SoC support"
bool "Enable UniPhier Pro5 SoC support"
depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
default y
config ARCH_UNIPHIER_PXS2
bool "Enable UniPhier ProXstream2 SoC support"
bool "Enable UniPhier Pxs2 SoC support"
depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
default y
config ARCH_UNIPHIER_LD6B
bool "Enable UniPhier PH1-LD6b SoC support"
bool "Enable UniPhier LD6b SoC support"
depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
default y
config ARCH_UNIPHIER_LD11
bool "Enable UniPhier LD11 SoC support" if ARCH_UNIPHIER_V8_MULTI
depends on ARCH_UNIPHIER_LD11_SINGLE || ARCH_UNIPHIER_V8_MULTI
default y
config ARCH_UNIPHIER_LD20
bool "Enable UniPhier LD20 SoC support" if ARCH_UNIPHIER_V8_MULTI
depends on ARCH_UNIPHIER_LD20_SINGLE || ARCH_UNIPHIER_V8_MULTI
select OF_BOARD_SETUP
default y
config CACHE_UNIPHIER
bool "Enable the UniPhier L2 cache controller"
depends on ARCH_UNIPHIER_32BIT

View File

@ -5,6 +5,9 @@
ifdef CONFIG_SPL_BUILD
obj-y += timer.o
else
obj-y += mem_map.o smp.o smp_kick_cpus.o
obj-y += mem_map.o
ifdef CONFIG_ARMV8_MULTIENTRY
obj-y += smp.o smp_kick_cpus.o
obj-$(CONFIG_ARCH_UNIPHIER_LD20) += arm-cci500.o
endif
endif

View File

@ -73,8 +73,9 @@ static void uniphier_ld20_misc_init(void)
writel(0x0000b500, 0x6184e024);
writel(0x00000001, 0x6184e000);
}
#ifdef CONFIG_ARMV8_MULTIENTRY
cci500_init(2);
#endif
}
#endif
@ -235,7 +236,7 @@ int board_init(void)
led_puts("U6");
#ifdef CONFIG_ARM64
#ifdef CONFIG_ARMV8_MULTIENTRY
uniphier_smp_kick_all_cpus();
#endif

View File

@ -2,12 +2,13 @@ CONFIG_ARM=y
CONFIG_ARCH_UNIPHIER=y
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_SPL_SERIAL_SUPPORT=y
CONFIG_ARCH_UNIPHIER_LD11=y
CONFIG_ARCH_UNIPHIER_LD11_SINGLE=y
CONFIG_MICRO_SUPPORT_CARD=y
CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-ld11-ref"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
# CONFIG_CMD_XIMG is not set

View File

@ -2,12 +2,13 @@ CONFIG_ARM=y
CONFIG_ARCH_UNIPHIER=y
CONFIG_SYS_MALLOC_F_LEN=0x2000
CONFIG_SPL_SERIAL_SUPPORT=y
CONFIG_ARCH_UNIPHIER_LD20=y
CONFIG_ARCH_UNIPHIER_LD20_SINGLE=y
CONFIG_MICRO_SUPPORT_CARD=y
CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-ld20-ref"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
# CONFIG_CMD_XIMG is not set

View File

@ -10,6 +10,7 @@ CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-ld4-ref"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
CONFIG_CMD_BOOTZ=y

View File

@ -9,6 +9,7 @@ CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-pro4-ref"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
CONFIG_CMD_BOOTZ=y

View File

@ -10,6 +10,7 @@ CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-pxs2-vodka"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
CONFIG_CMD_BOOTZ=y

View File

@ -10,6 +10,7 @@ CONFIG_SYS_TEXT_BASE=0x84000000
CONFIG_DEFAULT_DEVICE_TREE="uniphier-sld3-ref"
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL=y
CONFIG_SPL_NOR_SUPPORT=y
CONFIG_HUSH_PARSER=y
CONFIG_CMD_BOOTZ=y

View File

@ -83,7 +83,7 @@
#define CONFIG_SYS_MMC_ENV_DEV 0
#define CONFIG_SYS_MMC_ENV_PART 1
#ifdef CONFIG_ARM64
#ifdef CONFIG_ARMV8_MULTIENTRY
#define CPU_RELEASE_ADDR 0x80000000
#define COUNTER_FREQUENCY 50000000
#define CONFIG_GICV3
@ -93,7 +93,7 @@
#elif defined(CONFIG_ARCH_UNIPHIER_LD20)
#define GICR_BASE 0x5fe80000
#endif
#else
#elif !defined(CONFIG_ARM64)
/* Time clock 1MHz */
#define CONFIG_SYS_TIMER_RATE 1000000
#endif
@ -274,6 +274,7 @@
/* subtract sizeof(struct image_header) */
#define CONFIG_SYS_UBOOT_BASE (0x60000 - 0x40)
#ifdef CONFIG_SPL
#define CONFIG_SPL_TARGET "u-boot-with-spl.bin"
#define CONFIG_SPL_MAX_FOOTPRINT 0x10000
#define CONFIG_SPL_MAX_SIZE 0x10000
@ -283,5 +284,6 @@
#define CONFIG_SPL_BSS_START_ADDR 0x30016000
#endif
#define CONFIG_SPL_BSS_MAX_SIZE 0x2000
#endif
#endif /* __CONFIG_UNIPHIER_COMMON_H__ */