ARM: uniphier: make SPL optional for ARVv8 SoCs
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Sat, 21 Jan 2017 09:05:22 +0000 (18:05 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sun, 22 Jan 2017 06:11:12 +0000 (15:11 +0900)
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>
arch/arm/Kconfig
arch/arm/mach-uniphier/Kconfig
arch/arm/mach-uniphier/arm64/Makefile
arch/arm/mach-uniphier/board_init.c
configs/uniphier_ld11_defconfig
configs/uniphier_ld20_defconfig
configs/uniphier_ld4_sld8_defconfig
configs/uniphier_pro4_defconfig
configs/uniphier_pxs2_ld6b_defconfig
configs/uniphier_sld3_defconfig
include/configs/uniphier.h

index 855871c64f41785e92930aed3a304be6fe3de382..2554a2cd14b09a14593dfbc1a170e8410c19cd1b 100644 (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.
index aa3909a766090906a74fa41aa6ba56961c5e0ff3..e732ac1bfad0c7ea0a37d814f6096be5b67a8609 100644 (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
index 5ed030ae403a08e65bfbd07b96f997249d21cc22..eb34c207ce0b653f00f75308d5a7cf492db55691 100644 (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
index 8233a52bd5d511668175ac057d6e37237a12b753..226929150e9d71812bcb85322d4a7723a47dee7f 100644 (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
 
index 8c3ebbc5f7e465da553d76a79b7c81c7235af251..6aa1190d742793ce13536e781c89306ddd4c8005 100644 (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
index 302b68af8ae8ba7d2f32bd9bba6c696164f52d80..d352f2e9cf4712bca142f3f005a26f6fbd7a2559 100644 (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
index d484c90a4d3efc43fac48770acc6c4a6ccc5c4f4..b0283356a6f0089f174b3e32d4e39a0a6e5b43ce 100644 (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
index 97301eb2ff901805e45af7c8f7b7a0fc98933dda..2f2913ab8bbbd8dbb7632dd90bf5d7bf74d502fd 100644 (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
index c66c6dc34c81e068acb4e2110c899474d7a15e21..e1690b1b4fa6120d0e4e802ea12b2923310d20ac 100644 (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
index baeff0afa59c78c8e5d431cb6ec3b10c3c09386d..d52a42cac473a0cf6d27e047ecc0a79d96aaa313 100644 (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
index ee86663e6bfaa2736458d3e29490bbc56086ecf4..487d3defbc60288eac3a61a475a8449247f5dab1 100644 (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
 /* 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
 #define CONFIG_SPL_BSS_START_ADDR              0x30016000
 #endif
 #define CONFIG_SPL_BSS_MAX_SIZE                        0x2000
+#endif
 
 #endif /* __CONFIG_UNIPHIER_COMMON_H__ */