At the moment we define three "VExpress64" boards in arch/arm/Kconfig,
plus have a second Kconfig file in board/armltd/Kconfig.
One of those three boards is actually bogus (TARGET_VEXPRESS64_AEMV8A),
that stanza looks like being forgotten in a previous cleanup.

To remove the clutter from the generic Kconfig file, just define some
ARCH_VEXPRESS64 symbol there, enable some common options, and do the
board/model specific configuration in the board/armltd Kconfig file.

That allows to streamline and fine tune the configuration later, and
to also pull a lot of "non user choices" out of the defconfigs.

Signed-off-by: Andre Przywara <andre.przyw...@arm.com>
---
 arch/arm/Kconfig                       | 28 +++-----------------------
 board/armltd/vexpress64/Kconfig        | 20 +++++++++++++++++-
 configs/vexpress_aemv8a_juno_defconfig |  3 ++-
 configs/vexpress_aemv8a_semi_defconfig |  4 +---
 4 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 391a77c2b4..34dbd73cce 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1235,34 +1235,12 @@ config ARCH_TEGRA
        imply DISTRO_DEFAULTS
        imply FAT_WRITE
 
-config TARGET_VEXPRESS64_AEMV8A
-       bool "Support vexpress_aemv8a"
+config ARCH_VEXPRESS64
+       bool "Support ARMv8 Arm Ltd. VExpress based boards and models"
        select ARM64
-       select GPIO_EXTRA_HEADER
-       select PL01X_SERIAL
-
-config TARGET_VEXPRESS64_BASE_FVP
-       bool "Support Versatile Express ARMv8a FVP BASE model"
-       select ARM64
-       select GPIO_EXTRA_HEADER
-       select PL01X_SERIAL
-       select SEMIHOSTING
-
-config TARGET_VEXPRESS64_JUNO
-       bool "Support Versatile Express Juno Development Platform"
-       select ARM64
-       select GPIO_EXTRA_HEADER
-       select PL01X_SERIAL
        select DM
-       select OF_CONTROL
-       select CLK
        select DM_SERIAL
-       select ARM_PSCI_FW
-       select PSCI_RESET
-       select DM_ETH
-       select BLK
-       select USB
-       imply OF_HAS_PRIOR_STAGE
+       select PL01X_SERIAL
 
 config TARGET_TOTAL_COMPUTE
        bool "Support Total Compute Platform"
diff --git a/board/armltd/vexpress64/Kconfig b/board/armltd/vexpress64/Kconfig
index 4aab3f092e..55fe0118e1 100644
--- a/board/armltd/vexpress64/Kconfig
+++ b/board/armltd/vexpress64/Kconfig
@@ -1,4 +1,4 @@
-if TARGET_VEXPRESS64_BASE_FVP || TARGET_VEXPRESS64_JUNO
+if ARCH_VEXPRESS64
 
 config SYS_BOARD
        default "vexpress64"
@@ -9,6 +9,24 @@ config SYS_VENDOR
 config SYS_CONFIG_NAME
        default "vexpress_aemv8"
 
+choice
+       prompt "VExpress64 board variant"
+
+config TARGET_VEXPRESS64_BASE_FVP
+       bool "Support Versatile Express ARMv8a FVP BASE model"
+       select SEMIHOSTING
+
+config TARGET_VEXPRESS64_JUNO
+       bool "Support Versatile Express Juno Development Platform"
+       select DM_ETH
+       select USB
+       select OF_CONTROL
+       select CLK
+       select BLK
+       imply OF_HAS_PRIOR_STAGE
+
+endchoice
+
 config JUNO_DTB_PART
        string "NOR flash partition holding DTB"
        default "board.dtb"
diff --git a/configs/vexpress_aemv8a_juno_defconfig 
b/configs/vexpress_aemv8a_juno_defconfig
index e02124cc7f..2fcbcce308 100644
--- a/configs/vexpress_aemv8a_juno_defconfig
+++ b/configs/vexpress_aemv8a_juno_defconfig
@@ -1,5 +1,5 @@
 CONFIG_ARM=y
-CONFIG_TARGET_VEXPRESS64_JUNO=y
+CONFIG_ARCH_VEXPRESS64=y
 CONFIG_SYS_TEXT_BASE=0xe0000000
 CONFIG_SYS_MALLOC_LEN=0x810000
 CONFIG_SYS_MALLOC_F_LEN=0x2000
@@ -10,6 +10,7 @@ CONFIG_ENV_SIZE=0x10000
 CONFIG_ENV_SECT_SIZE=0x10000
 CONFIG_DEFAULT_DEVICE_TREE="juno-r2"
 CONFIG_IDENT_STRING=" vexpress_aemv8a"
+CONFIG_TARGET_VEXPRESS64_JUNO=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_REMAKE_ELF=y
 CONFIG_SYS_LOAD_ADDR=0x90000000
diff --git a/configs/vexpress_aemv8a_semi_defconfig 
b/configs/vexpress_aemv8a_semi_defconfig
index 448d012e1c..24af87904f 100644
--- a/configs/vexpress_aemv8a_semi_defconfig
+++ b/configs/vexpress_aemv8a_semi_defconfig
@@ -1,6 +1,6 @@
 CONFIG_ARM=y
 # CONFIG_ARM64_CRC32 is not set
-CONFIG_TARGET_VEXPRESS64_BASE_FVP=y
+CONFIG_ARCH_VEXPRESS64=y
 CONFIG_SYS_TEXT_BASE=0x88000000
 CONFIG_SYS_MALLOC_LEN=0x840000
 CONFIG_SYS_MALLOC_F_LEN=0x2000
@@ -38,7 +38,6 @@ CONFIG_CMD_UBI=y
 # CONFIG_EFI_PARTITION is not set
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_ENV_ADDR=0xFFC0000
-CONFIG_DM=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
@@ -46,5 +45,4 @@ CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
 CONFIG_SYS_FLASH_PROTECTION=y
 CONFIG_SYS_FLASH_CFI=y
-CONFIG_DM_SERIAL=y
 CONFIG_OF_LIBFDT=y
-- 
2.25.1

Reply via email to