Merge tag 'v2021.10-rc4' into next
[platform/kernel/u-boot.git] / arch / arm / Kconfig
index 25f4362..f0fd57f 100644 (file)
@@ -9,9 +9,9 @@ config ARM64
        select PHYS_64BIT
        select SYS_CACHE_SHIFT_6
 
-if ARM64
 config POSITION_INDEPENDENT
        bool "Generate position-independent pre-relocation code"
+       depends on ARM64 || CPU_V7A
        help
          U-Boot expects to be linked to a specific hard-coded address, and to
          be loaded to and run from that address. This option lifts that
@@ -22,6 +22,7 @@ config POSITION_INDEPENDENT
 
 config INIT_SP_RELATIVE
        bool "Specify the early stack pointer relative to the .bss section"
+       depends on ARM64
        default n if ARCH_QEMU
        default y if POSITION_INDEPENDENT
        help
@@ -37,6 +38,7 @@ config INIT_SP_RELATIVE
 
 config SYS_INIT_SP_BSS_OFFSET
        int "Early stack offset from the .bss base address"
+       depends on ARM64
        depends on INIT_SP_RELATIVE
        default 524288
        help
@@ -46,6 +48,7 @@ config SYS_INIT_SP_BSS_OFFSET
          do not overlap any appended DTB.
 
 config LINUX_KERNEL_IMAGE_HEADER
+       depends on ARM64
        bool
        help
          Place a Linux kernel image header at the start of the U-Boot binary.
@@ -54,19 +57,24 @@ config LINUX_KERNEL_IMAGE_HEADER
          image header reports the amount of memory (BSS and similar) that
          U-Boot needs to use, but which isn't part of the binary.
 
-if LINUX_KERNEL_IMAGE_HEADER
 config LNX_KRNL_IMG_TEXT_OFFSET_BASE
+       depends on LINUX_KERNEL_IMAGE_HEADER
        hex
        help
          The value subtracted from CONFIG_SYS_TEXT_BASE to calculate the
          TEXT_OFFSET value written to the Linux kernel image header.
-endif
-endif
+
+config GICV2
+       bool
+
+config GICV3
+       bool
 
 config GIC_V3_ITS
        bool "ARM GICV3 ITS"
        select REGMAP
        select SYSCON
+       select IRQ
        help
          ARM GICV3 Interrupt translation service (ITS).
          Basic support for programming locality specific peripheral
@@ -89,6 +97,9 @@ config HAS_VBAR
 config HAS_THUMB2
        bool
 
+config GPIO_EXTRA_HEADER
+       bool
+
 # Used for compatibility with asm files copied from the kernel
 config ARM_ASM_UNIFIED
        bool
@@ -100,7 +111,6 @@ config THUMB2_KERNEL
 
 config SYS_ICACHE_OFF
        bool "Do not enable icache"
-       default n
        help
          Do not enable instruction cache in U-Boot.
 
@@ -113,7 +123,6 @@ config SPL_SYS_ICACHE_OFF
 
 config SYS_DCACHE_OFF
        bool "Do not enable dcache"
-       default n
        help
          Do not enable data cache in U-Boot.
 
@@ -328,25 +337,10 @@ config SYS_ARM_ARCH
        default 4 if CPU_SA1100
        default 8 if ARM64
 
-config SYS_CACHE_SHIFT_5
-       bool
-
-config SYS_CACHE_SHIFT_6
-       bool
-
-config SYS_CACHE_SHIFT_7
-       bool
-
-config SYS_CACHELINE_SIZE
-       int
-       default 128 if SYS_CACHE_SHIFT_7
-       default 64 if SYS_CACHE_SHIFT_6
-       default 32 if SYS_CACHE_SHIFT_5
-
 choice
        prompt "Select the ARM data write cache policy"
        default SYS_ARM_CACHE_WRITETHROUGH if TARGET_BCMCYGNUS || \
-                                             TARGET_BCMNSP || CPU_PXA || RZA1
+                                             CPU_PXA || RZA1
        default SYS_ARM_CACHE_WRITEBACK
 
 config SYS_ARM_CACHE_WRITEBACK
@@ -448,7 +442,6 @@ config ENABLE_ARM_SOC_BOOT0_HOOK
 
 config ARM_CORTEX_CPU_IS_UP
        bool
-       default n
 
 config USE_ARCH_MEMCPY
        bool "Use an assembly optimized implementation of memcpy"
@@ -517,25 +510,19 @@ choice
 
 config ARCH_AT91
        bool "Atmel AT91"
+       select GPIO_EXTRA_HEADER
        select SPL_BOARD_INIT if SPL && !TARGET_SMARTWEB
        select SPL_SEPARATE_BSS if SPL
 
-config TARGET_EDB93XX
-       bool "Support edb93xx"
-       select CPU_ARM920T
-       select PL010_SERIAL
-
 config TARGET_ASPENITE
        bool "Support aspenite"
        select CPU_ARM926EJS
-
-config TARGET_GPLUGD
-       bool "Support gplugd"
-       select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
 
 config ARCH_DAVINCI
        bool "TI DaVinci"
        select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
        select SPL_DM_SPI if SPL
        imply CMD_SAVES
        help
@@ -546,6 +533,7 @@ config ARCH_KIRKWOOD
        select ARCH_MISC_INIT
        select BOARD_EARLY_INIT_F
        select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
 
 config ARCH_MVEBU
        bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
@@ -554,6 +542,7 @@ config ARCH_MVEBU
        select DM_SERIAL
        select DM_SPI
        select DM_SPI_FLASH
+       select GPIO_EXTRA_HEADER
        select SPL_DM_SPI if SPL
        select SPL_DM_SPI_FLASH if SPL
        select OF_CONTROL
@@ -564,34 +553,7 @@ config ARCH_MVEBU
 config ARCH_ORION5X
        bool "Marvell Orion"
        select CPU_ARM926EJS
-
-config TARGET_SPEAR300
-       bool "Support spear300"
-       select BOARD_EARLY_INIT_F
-       select CPU_ARM926EJS
-       select PL011_SERIAL
-       imply CMD_SAVES
-
-config TARGET_SPEAR310
-       bool "Support spear310"
-       select BOARD_EARLY_INIT_F
-       select CPU_ARM926EJS
-       select PL011_SERIAL
-       imply CMD_SAVES
-
-config TARGET_SPEAR320
-       bool "Support spear320"
-       select BOARD_EARLY_INIT_F
-       select CPU_ARM926EJS
-       select PL011_SERIAL
-       imply CMD_SAVES
-
-config TARGET_SPEAR600
-       bool "Support spear600"
-       select BOARD_EARLY_INIT_F
-       select CPU_ARM926EJS
-       select PL011_SERIAL
-       imply CMD_SAVES
+       select GPIO_EXTRA_HEADER
 
 config TARGET_STV0991
        bool "Support stv0991"
@@ -600,27 +562,23 @@ config TARGET_STV0991
        select DM_SERIAL
        select DM_SPI
        select DM_SPI_FLASH
+       select GPIO_EXTRA_HEADER
        select PL01X_SERIAL
        select SPI
        select SPI_FLASH
        imply CMD_DM
 
-config TARGET_X600
-       bool "Support x600"
-       select BOARD_LATE_INIT
-       select CPU_ARM926EJS
-       select PL011_SERIAL
-       select SUPPORT_SPL
-
 config TARGET_FLEA3
        bool "Support flea3"
        select CPU_ARM1136
+       select GPIO_EXTRA_HEADER
 
 config ARCH_BCM283X
        bool "Broadcom BCM283X family"
        select DM
        select DM_GPIO
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select PL01X_SERIAL
        select SERIAL_SEARCH_ALL
@@ -645,17 +603,11 @@ config ARCH_BCM6858
        select OF_CONTROL
        imply CMD_DM
 
-config TARGET_VEXPRESS_CA15_TC2
-       bool "Support vexpress_ca15_tc2"
-       select CPU_V7A
-       select CPU_V7_HAS_NONSEC
-       select CPU_V7_HAS_VIRT
-       select PL011_SERIAL
-
 config ARCH_BCMSTB
        bool "Broadcom BCM7XXX family"
        select CPU_V7A
        select DM
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select OF_PRIOR_STAGE
        imply CMD_DM
@@ -663,31 +615,10 @@ config ARCH_BCMSTB
          This enables support for Broadcom ARM-based set-top box
          chipsets, including the 7445 family of chips.
 
-config TARGET_VEXPRESS_CA5X2
-       bool "Support vexpress_ca5x2"
-       select CPU_V7A
-       select PL011_SERIAL
-
-config TARGET_VEXPRESS_CA9X4
-       bool "Support vexpress_ca9x4"
-       select CPU_V7A
-       select PL011_SERIAL
-
-config TARGET_BCM23550_W1D
-       bool "Support bcm23550_w1d"
-       select CPU_V7A
-       imply CRC32_VERIFY
-       imply FAT_WRITE
-
-config TARGET_BCM28155_AP
-       bool "Support bcm28155_ap"
-       select CPU_V7A
-       imply CRC32_VERIFY
-       imply FAT_WRITE
-
 config TARGET_BCMCYGNUS
        bool "Support bcmcygnus"
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
        imply BCM_SF2_ETH
        imply BCM_SF2_ETH_GMAC
        imply CMD_HASH
@@ -696,13 +627,10 @@ config TARGET_BCMCYGNUS
        imply HASH_VERIFY
        imply NETDEVICES
 
-config TARGET_BCMNSP
-       bool "Support bcmnsp"
-       select CPU_V7A
-
 config TARGET_BCMNS2
        bool "Support Broadcom Northstar2"
        select ARM64
+       select GPIO_EXTRA_HEADER
        help
          Support for Broadcom Northstar 2 SoCs.  NS2 is a quad-core 64-bit
          ARMv8 Cortex-A57 processors targeting a broad range of networking
@@ -722,11 +650,13 @@ config ARCH_EXYNOS
        select DM
        select DM_GPIO
        select DM_I2C
+       select DM_ETH
        select DM_KEYBOARD
        select DM_SERIAL
        select DM_SPI
        select DM_SPI_FLASH
        select SPI
+       select GPIO_EXTRA_HEADER
        imply SYS_THUMB_BUILD
        imply CMD_DM
        imply FAT_WRITE
@@ -738,17 +668,28 @@ config ARCH_S5PC1XX
        select DM_GPIO
        select DM_I2C
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        imply CMD_DM
 
 config ARCH_HIGHBANK
        bool "Calxeda Highbank"
        select CPU_V7A
-       select PL011_SERIAL
+       select PL01X_SERIAL
+       select DM
+       select DM_SERIAL
+       select OF_CONTROL
+       select OF_BOARD
+       select CLK
+       select CLK_CCF
+       select AHCI
+       select DM_ETH
+       select PHYS_64BIT
 
 config ARCH_INTEGRATOR
        bool "ARM Ltd. Integrator family"
        select DM
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select PL01X_SERIAL
        imply CMD_DM
 
@@ -759,6 +700,7 @@ config ARCH_IPQ40XX
        select DM_GPIO
        select DM_SERIAL
        select DM_RESET
+       select GPIO_EXTRA_HEADER
        select MSM_SMEM
        select PINCTRL
        select CLK
@@ -770,6 +712,8 @@ config ARCH_KEYSTONE
        bool "TI Keystone"
        select CMD_POWEROFF
        select CPU_V7A
+       select DDR_SPD
+       select GPIO_EXTRA_HEADER
        select SUPPORT_SPL
        select SYS_ARCH_TIMER
        select SYS_THUMB_BUILD
@@ -786,6 +730,7 @@ config ARCH_K3
 config ARCH_OMAP2PLUS
        bool "TI OMAP2+"
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
        select SPL_BOARD_INIT if SPL
        select SPL_STACK_R if SPL
        select SUPPORT_SPL
@@ -794,6 +739,7 @@ config ARCH_OMAP2PLUS
 
 config ARCH_MESON
        bool "Amlogic Meson"
+       select GPIO_EXTRA_HEADER
        imply DISTRO_DEFAULTS
        imply DM_RNG
        help
@@ -804,6 +750,7 @@ config ARCH_MESON
 config ARCH_MEDIATEK
        bool "MediaTek SoCs"
        select DM
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select SPL_DM if SPL
        select SPL_LIBCOMMON_SUPPORT if SPL
@@ -820,6 +767,7 @@ config ARCH_LPC32XX
        select DM
        select DM_GPIO
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select SPL_DM if SPL
        select SUPPORT_SPL
        imply CMD_DM
@@ -828,17 +776,32 @@ config ARCH_IMX8
        bool "NXP i.MX8 platform"
        select ARM64
        select DM
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select OF_CONTROL
        select ENABLE_ARM_SOC_BOOT0_HOOK
 
 config ARCH_IMX8M
        bool "NXP i.MX8M platform"
        select ARM64
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SYS_FSL_HAS_SEC if IMX_HAB
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
+       select SYS_I2C_MXC
+       select DM
+       select SUPPORT_SPL
+       imply CMD_DM
+
+config ARCH_IMX8ULP
+       bool "NXP i.MX8ULP platform"
+       select ARM64
        select DM
+       select MACH_IMX
+       select OF_CONTROL
        select SUPPORT_SPL
+       select GPIO_EXTRA_HEADER
        imply CMD_DM
 
 config ARCH_IMXRT
@@ -846,33 +809,45 @@ config ARCH_IMXRT
        select CPU_V7M
        select DM
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SUPPORT_SPL
        imply CMD_DM
 
 config ARCH_MX23
        bool "NXP i.MX23 family"
        select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select PL011_SERIAL
        select SUPPORT_SPL
 
 config ARCH_MX25
        bool "NXP MX25"
        select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        imply MXC_GPIO
 
 config ARCH_MX28
        bool "NXP i.MX28 family"
        select CPU_ARM926EJS
+       select GPIO_EXTRA_HEADER
        select PL011_SERIAL
+       select MACH_IMX
        select SUPPORT_SPL
 
 config ARCH_MX31
        bool "NXP i.MX31 family"
        select CPU_ARM1136
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
 
 config ARCH_MX7ULP
        bool "NXP MX7ULP"
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SYS_FSL_HAS_SEC if IMX_HAB
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
@@ -884,6 +859,8 @@ config ARCH_MX7
        bool "Freescale MX7"
        select ARCH_MISC_INIT
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SYS_FSL_HAS_SEC if IMX_HAB
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
@@ -894,6 +871,8 @@ config ARCH_MX7
 config ARCH_MX6
        bool "Freescale MX6"
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SYS_FSL_HAS_SEC
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
@@ -909,18 +888,22 @@ config ARCH_MX5
        bool "Freescale MX5"
        select BOARD_EARLY_INIT_F
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        imply MXC_GPIO
 
 config ARCH_NEXELL
        bool "Nexell S5P4418/S5P6818 SoC"
        select ENABLE_ARM_SOC_BOOT0_HOOK
        select DM
+       select GPIO_EXTRA_HEADER
 
 config ARCH_OWL
        bool "Actions Semi OWL SoCs"
        select DM
        select DM_ETH
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select OWL_SERIAL
        select CLK
        select CLK_OWL
@@ -943,23 +926,20 @@ config ARCH_RMOBILE
        bool "Renesas ARM SoCs"
        select DM
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        imply BOARD_EARLY_INIT_F
        imply CMD_DM
        imply FAT_WRITE
        imply SYS_THUMB_BUILD
        imply ARCH_MISC_INIT if DISPLAY_CPUINFO
 
-config TARGET_S32V234EVB
-       bool "Support s32v234evb"
-       select ARM64
-       select SYS_FSL_ERRATUM_ESDHC111
-
 config ARCH_SNAPDRAGON
        bool "Qualcomm Snapdragon SoCs"
        select ARM64
        select DM
        select DM_GPIO
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select MSM_SMEM
        select OF_CONTROL
        select OF_SEPARATE
@@ -975,6 +955,8 @@ config ARCH_SOCFPGA
        select CPU_V7A if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
        select DM
        select DM_SERIAL
+       select GICV2
+       select GPIO_EXTRA_HEADER
        select ENABLE_ARM_SOC_BOOT0_HOOK if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
        select OF_CONTROL
        select SPL_DM_RESET if DM_RESET
@@ -984,9 +966,9 @@ config ARCH_SOCFPGA
        select SPL_NAND_SUPPORT if SPL_NAND_DENALI
        select SPL_OF_CONTROL
        select SPL_SEPARATE_BSS if TARGET_SOCFPGA_SOC64
-       select SPL_SERIAL_SUPPORT
+       select SPL_SERIAL
        select SPL_SYSRESET
-       select SPL_WATCHDOG_SUPPORT
+       select SPL_WATCHDOG
        select SUPPORT_SPL
        select SYS_NS16550
        select SYS_THUMB_BUILD if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
@@ -1004,11 +986,11 @@ config ARCH_SOCFPGA
        imply SPL_DM_SPI
        imply SPL_DM_SPI_FLASH
        imply SPL_LIBDISK_SUPPORT
-       imply SPL_MMC_SUPPORT
+       imply SPL_MMC
        imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
        imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
        imply SPL_SPI_FLASH_SUPPORT
-       imply SPL_SPI_SUPPORT
+       imply SPL_SPI
        imply L2X0_CACHE
 
 config ARCH_SUNXI
@@ -1016,7 +998,7 @@ config ARCH_SUNXI
        select BINMAN
        select CMD_GPIO
        select CMD_MMC if MMC
-       select CMD_USB if DISTRO_DEFAULTS
+       select CMD_USB if DISTRO_DEFAULTS && USB_HOST
        select CLK
        select DM
        select DM_ETH
@@ -1025,7 +1007,7 @@ config ARCH_SUNXI
        select DM_MMC if MMC
        select DM_SCSI if SCSI
        select DM_SERIAL
-       select DM_USB if DISTRO_DEFAULTS
+       select GPIO_EXTRA_HEADER
        select OF_BOARD_SETUP
        select OF_CONTROL
        select OF_SEPARATE
@@ -1037,8 +1019,8 @@ config ARCH_SUNXI
        select SYS_NS16550
        select SYS_THUMB_BUILD if !ARM64
        select USB if DISTRO_DEFAULTS
-       select USB_KEYBOARD if DISTRO_DEFAULTS
-       select USB_STORAGE if DISTRO_DEFAULTS
+       select USB_KEYBOARD if DISTRO_DEFAULTS && USB_HOST
+       select USB_STORAGE if DISTRO_DEFAULTS && USB_HOST
        select SPL_USE_TINY_PRINTF
        select USE_PREBOOT
        select SYS_RELOC_GD_ENV_ADDR
@@ -1051,12 +1033,12 @@ config ARCH_SUNXI
        imply FIT
        imply OF_LIBFDT_OVERLAY
        imply PRE_CONSOLE_BUFFER
-       imply SPL_GPIO_SUPPORT
+       imply SPL_GPIO
        imply SPL_LIBCOMMON_SUPPORT
        imply SPL_LIBGENERIC_SUPPORT
-       imply SPL_MMC_SUPPORT if MMC
-       imply SPL_POWER_SUPPORT
-       imply SPL_SERIAL_SUPPORT
+       imply SPL_MMC if MMC
+       imply SPL_POWER
+       imply SPL_SERIAL
        imply USB_GADGET
 
 config ARCH_U8500
@@ -1066,15 +1048,22 @@ config ARCH_U8500
        select DM_GPIO
        select DM_MMC if MMC
        select DM_SERIAL
-       select DM_USB if USB
+       select DM_USB_GADGET if DM_USB
        select OF_CONTROL
        select SYSRESET
        select TIMER
+       imply AB8500_USB_PHY
        imply ARM_PL180_MMCI
+       imply CLK
+       imply DM_PMIC
        imply DM_RTC
+       imply NOMADIK_GPIO
        imply NOMADIK_MTU_TIMER
+       imply PHY
        imply PL01X_SERIAL
+       imply PMIC_AB8500
        imply RTC_PL031
+       imply SYS_THUMB_BUILD
        imply SYSRESET_SYSCON
 
 config ARCH_VERSAL
@@ -1085,13 +1074,18 @@ config ARCH_VERSAL
        select DM_ETH if NET
        select DM_MMC if MMC
        select DM_SERIAL
+       select GICV3
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
+       select SOC_DEVICE
        imply BOARD_LATE_INIT
        imply ENV_VARS_UBOOT_RUNTIME_CONFIG
 
 config ARCH_VF610
        bool "Freescale Vybrid"
        select CPU_V7A
+       select GPIO_EXTRA_HEADER
+       select MACH_IMX
        select SYS_FSL_ERRATUM_ESDHC111
        imply CMD_MTDPARTS
        imply MTD_RAW_NAND
@@ -1107,7 +1101,7 @@ config ARCH_ZYNQ
        select DM_SERIAL
        select DM_SPI
        select DM_SPI_FLASH
-       select DM_USB if USB
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select SPI
        select SPL_BOARD_INIT if SPL
@@ -1134,6 +1128,7 @@ config ARCH_ZYNQMP_R5
        select DM_ETH if NET
        select DM_MMC if MMC
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        imply CMD_DM
        imply DM_USB_GADGET
@@ -1149,8 +1144,9 @@ config ARCH_ZYNQMP
        select DM_SERIAL
        select DM_SPI if SPI
        select DM_SPI_FLASH if DM_SPI
-       select DM_USB if USB
        select FIRMWARE
+       select GICV2
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select SPL_BOARD_INIT if SPL
        select SPL_CLK if SPL
@@ -1162,6 +1158,7 @@ config ARCH_ZYNQMP
        select SPL_SEPARATE_BSS if SPL
        select SUPPORT_SPL
        select ZYNQMP_IPI
+       select SOC_DEVICE
        imply BOARD_LATE_INIT
        imply CMD_DM
        imply ENV_VARS_UBOOT_RUNTIME_CONFIG
@@ -1171,23 +1168,27 @@ config ARCH_ZYNQMP
 
 config ARCH_TEGRA
        bool "NVIDIA Tegra"
+       select GPIO_EXTRA_HEADER
        imply DISTRO_DEFAULTS
        imply FAT_WRITE
 
 config TARGET_VEXPRESS64_AEMV8A
        bool "Support vexpress_aemv8a"
        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
@@ -1199,7 +1200,6 @@ config TARGET_VEXPRESS64_JUNO
        select DM_ETH
        select BLK
        select USB
-       select DM_USB
 
 config TARGET_TOTAL_COMPUTE
        bool "Support Total Compute Platform"
@@ -1216,6 +1216,7 @@ config TARGET_LS2080A_EMU
        select ARM64
        select ARMV8_MULTIENTRY
        select FSL_DDR_SYNC_REFRESH
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS2080A_EMU platform.
          The LS2080A Development System (EMULATOR) is a pre-silicon
@@ -1229,6 +1230,7 @@ config TARGET_LS1088AQDS
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        select SUPPORT_SPL
        select FSL_DDR_INTERACTIVE if !SD_BOOT
        help
@@ -1244,6 +1246,7 @@ config TARGET_LS2080AQDS
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        select SUPPORT_SPL
        imply SCSI
        imply SCSI_AHCI
@@ -1265,6 +1268,7 @@ config TARGET_LS2080ARDB
        select SUPPORT_SPL
        select FSL_DDR_BIST
        select FSL_DDR_INTERACTIVE if !SPL
+       select GPIO_EXTRA_HEADER
        imply SCSI
        imply SCSI_AHCI
        help
@@ -1279,6 +1283,7 @@ config TARGET_LS2081ARDB
        select ARM64
        select ARMV8_MULTIENTRY
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        select SUPPORT_SPL
        help
          Support for Freescale LS2081ARDB platform.
@@ -1293,6 +1298,7 @@ config TARGET_LX2160ARDB
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for NXP LX2160ARDB platform.
          The lx2160ardb (LX2160A Reference design board (RDB)
@@ -1306,6 +1312,7 @@ config TARGET_LX2160AQDS
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for NXP LX2160AQDS platform.
          The lx2160aqds (LX2160A QorIQ Development System (QDS)
@@ -1320,6 +1327,7 @@ config TARGET_LX2162AQDS
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for NXP LX2162AQDS platform.
          The lx2162aqds support is based on LX2160A Layerscape Architecture processor.
@@ -1330,6 +1338,7 @@ config TARGET_HIKEY
        select DM
        select DM_GPIO
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select PL01X_SERIAL
        select SPECIFY_CONSOLE_INDEX
@@ -1343,6 +1352,7 @@ config TARGET_HIKEY960
        select ARM64
        select DM
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select PL01X_SERIAL
        imply CMD_DM
@@ -1355,7 +1365,7 @@ config TARGET_POPLAR
        select ARM64
        select DM
        select DM_SERIAL
-       select DM_USB
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select PL01X_SERIAL
        imply CMD_DM
@@ -1371,6 +1381,7 @@ config TARGET_LS1012AQDS
        select ARM64
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS1012AQDS platform.
          The LS1012A Development System (QDS) is a high-performance
@@ -1383,6 +1394,7 @@ config TARGET_LS1012ARDB
        select ARM64
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        imply SCSI
        imply SCSI_AHCI
        help
@@ -1397,6 +1409,7 @@ config TARGET_LS1012A2G5RDB
        select ARM64
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        imply SCSI
        help
          Support for Freescale LS1012A2G5RDB platform.
@@ -1410,6 +1423,7 @@ config TARGET_LS1012AFRWY
        select ARM64
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        imply SCSI
        imply SCSI_AHCI
        help
@@ -1423,6 +1437,7 @@ config TARGET_LS1012AFRDM
        select ARCH_LS1012A
        select ARM64
        select ARCH_SUPPORT_TFABOOT
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS1012AFRDM platform.
          The LS1012A Freedom  board (FRDM) is a high-performance
@@ -1436,6 +1451,7 @@ config TARGET_LS1028AQDS
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS1028AQDS platform
          The LS1028A Development System (QDS) is a high-performance
@@ -1449,6 +1465,7 @@ config TARGET_LS1028ARDB
        select ARMV8_MULTIENTRY
        select ARCH_SUPPORT_TFABOOT
        select BOARD_LATE_INIT
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS1028ARDB platform
          The LS1028A Development System (RDB) is a high-performance
@@ -1464,6 +1481,7 @@ config TARGET_LS1088ARDB
        select BOARD_LATE_INIT
        select SUPPORT_SPL
        select FSL_DDR_INTERACTIVE if !SD_BOOT
+       select GPIO_EXTRA_HEADER
        help
          Support for NXP LS1088ARDB platform.
          The LS1088A Reference design board (RDB) is a high-performance
@@ -1484,6 +1502,7 @@ config TARGET_LS1021AQDS
        select SYS_FSL_DDR
        select FSL_DDR_INTERACTIVE
        select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
+       select GPIO_EXTRA_HEADER
        select SPI_FLASH_DATAFLASH if FSL_DSPI || FSL_QSPI
        imply SCSI
 
@@ -1499,7 +1518,45 @@ config TARGET_LS1021ATWR
        select LS1_DEEP_SLEEP
        select SUPPORT_SPL
        select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
+       select GPIO_EXTRA_HEADER
+       imply SCSI
+
+config TARGET_PG_WCOM_SELI8
+       bool "Support Hitachi-Powergrids SELI8 service unit card"
+       select ARCH_LS1021A
+       select ARCH_SUPPORT_PSCI
+       select BOARD_EARLY_INIT_F
+       select BOARD_LATE_INIT
+       select CPU_V7A
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
+       select SYS_FSL_DDR
+       select FSL_DDR_INTERACTIVE
+       select GPIO_EXTRA_HEADER
+       select VENDOR_KM
        imply SCSI
+       help
+        Support for Hitachi-Powergrids SELI8 service unit card.
+        SELI8 is a QorIQ LS1021a based service unit card used
+        in XMC20 and FOX615 product families.
+
+config TARGET_PG_WCOM_EXPU1
+       bool "Support Hitachi-Powergrids EXPU1 service unit card"
+       select ARCH_LS1021A
+       select ARCH_SUPPORT_PSCI
+       select BOARD_EARLY_INIT_F
+       select BOARD_LATE_INIT
+       select CPU_V7A
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
+       select SYS_FSL_DDR
+       select FSL_DDR_INTERACTIVE
+       select VENDOR_KM
+       imply SCSI
+       help
+        Support for Hitachi-Powergrids EXPU1 service unit card.
+        EXPU1 is a QorIQ LS1021a based service unit card used
+        in XMC20 and FOX615 product families.
 
 config TARGET_LS1021ATSN
        bool "Support ls1021atsn"
@@ -1512,6 +1569,7 @@ config TARGET_LS1021ATSN
        select CPU_V7_HAS_VIRT
        select LS1_DEEP_SLEEP
        select SUPPORT_SPL
+       select GPIO_EXTRA_HEADER
        imply SCSI
 
 config TARGET_LS1021AIOT
@@ -1524,6 +1582,7 @@ config TARGET_LS1021AIOT
        select CPU_V7_HAS_VIRT
        select SUPPORT_SPL
        select DM_SPI_FLASH if FSL_DSPI || FSL_QSPI
+       select GPIO_EXTRA_HEADER
        imply SCSI
        help
          Support for Freescale LS1021AIOT platform.
@@ -1543,6 +1602,7 @@ config TARGET_LS1043AQDS
        select FSL_DDR_INTERACTIVE if !SPL
        select FSL_DSPI if !SPL_NO_DSPI
        select DM_SPI_FLASH if FSL_DSPI
+       select GPIO_EXTRA_HEADER
        imply SCSI
        imply SCSI_AHCI
        help
@@ -1559,6 +1619,7 @@ config TARGET_LS1043ARDB
        select SUPPORT_SPL
        select FSL_DSPI if !SPL_NO_DSPI
        select DM_SPI_FLASH if FSL_DSPI
+       select GPIO_EXTRA_HEADER
        help
          Support for Freescale LS1043ARDB platform.
 
@@ -1575,6 +1636,7 @@ config TARGET_LS1046AQDS
        select FSL_DDR_BIST if !SPL
        select FSL_DDR_INTERACTIVE  if !SPL
        select FSL_DDR_INTERACTIVE if !SPL
+       select GPIO_EXTRA_HEADER
        imply SCSI
        help
          Support for Freescale LS1046AQDS platform.
@@ -1595,6 +1657,7 @@ config TARGET_LS1046ARDB
        select SUPPORT_SPL
        select FSL_DDR_BIST
        select FSL_DDR_INTERACTIVE if !SPL
+       select GPIO_EXTRA_HEADER
        imply SCSI
        help
          Support for Freescale LS1046ARDB platform.
@@ -1611,6 +1674,7 @@ config TARGET_LS1046AFRWY
        select BOARD_EARLY_INIT_F
        select BOARD_LATE_INIT
        select DM_SPI_FLASH if DM_SPI
+       select GPIO_EXTRA_HEADER
        imply SCSI
        help
          Support for Freescale LS1046AFRWY platform.
@@ -1625,12 +1689,33 @@ config TARGET_SL28
        select ARMV8_MULTIENTRY
        select SUPPORT_SPL
        select BINMAN
+       select DM
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_SPI_FLASH
+       select DM_ETH
+       select DM_MDIO
+       select PCI
+       select DM_RNG
+       select DM_RTC
+       select DM_SCSI
+       select DM_SERIAL
+       select DM_SPI
+       select GPIO_EXTRA_HEADER
+       select SPL_DM if SPL
+       select SPL_DM_SPI if SPL
+       select SPL_DM_SPI_FLASH if SPL
+       select SPL_DM_I2C if SPL
+       select SPL_DM_MMC if SPL
+       select SPL_DM_SERIAL if SPL
        help
          Support for Kontron SMARC-sAL28 board.
 
 config TARGET_COLIBRI_PXA270
        bool "Support colibri_pxa270"
        select CPU_PXA
+       select GPIO_EXTRA_HEADER
 
 config ARCH_UNIPHIER
        bool "Socionext UniPhier SoCs"
@@ -1643,7 +1728,6 @@ config ARCH_UNIPHIER
        select DM_MTD
        select DM_RESET
        select DM_SERIAL
-       select DM_USB
        select OF_BOARD_SETUP
        select OF_CONTROL
        select OF_LIBFDT
@@ -1662,11 +1746,25 @@ config ARCH_UNIPHIER
          Support for UniPhier SoC family developed by Socionext Inc.
          (formerly, System LSI Business Division of Panasonic Corporation)
 
+config ARCH_SYNQUACER
+       bool "Socionext SynQuacer SoCs"
+       select ARM64
+       select DM
+       select GIC_V3
+       select PSCI_RESET
+       select SYSRESET
+       select SYSRESET_PSCI
+       select OF_CONTROL
+       help
+         Support for SynQuacer SoC family developed by Socionext Inc.
+         This SoC is used on 96boards EE DeveloperBox.
+
 config ARCH_STM32
        bool "Support STMicroelectronics STM32 MCU with cortex M"
        select CPU_V7M
        select DM
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        imply CMD_DM
 
 config ARCH_STI
@@ -1692,6 +1790,7 @@ config ARCH_STM32MP
        select DM_GPIO
        select DM_RESET
        select DM_SERIAL
+       select GPIO_EXTRA_HEADER
        select MISC
        select OF_CONTROL
        select OF_LIBFDT
@@ -1719,7 +1818,7 @@ config ARCH_STM32MP
 config ARCH_ROCKCHIP
        bool "Support Rockchip SoCs"
        select BLK
-       select BINMAN if SPL_OPTEE
+       select BINMAN if SPL_OPTEE || (SPL && !ARM64)
        select DM
        select DM_GPIO
        select DM_I2C
@@ -1729,7 +1828,6 @@ config ARCH_ROCKCHIP
        select DM_SERIAL
        select DM_SPI
        select DM_SPI_FLASH
-       select DM_USB if USB
        select ENABLE_ARM_SOC_BOOT0_HOOK
        select OF_CONTROL
        select SPI
@@ -1754,6 +1852,7 @@ config ARCH_OCTEONTX
        bool "Support OcteonTX SoCs"
        select CLK
        select DM
+       select GPIO_EXTRA_HEADER
        select ARM64
        select OF_CONTROL
        select OF_LIVE
@@ -1764,6 +1863,7 @@ config ARCH_OCTEONTX2
        bool "Support OcteonTX2 SoCs"
        select CLK
        select DM
+       select GPIO_EXTRA_HEADER
        select ARM64
        select OF_CONTROL
        select OF_LIVE
@@ -1773,6 +1873,7 @@ config ARCH_OCTEONTX2
 config TARGET_THUNDERX_88XX
        bool "Support ThunderX 88xx"
        select ARM64
+       select GPIO_EXTRA_HEADER
        select OF_CONTROL
        select PL01X_SERIAL
        select SYS_CACHE_SHIFT_7
@@ -1786,6 +1887,7 @@ config ARCH_ASPEED
 config TARGET_DURIAN
        bool "Support Phytium Durian Platform"
        select ARM64
+       select GPIO_EXTRA_HEADER
        help
          Support for durian platform.
          It has 2GB Sdram, uart and pcie.
@@ -1793,6 +1895,7 @@ config TARGET_DURIAN
 config TARGET_PRESIDIO_ASIC
        bool "Support Cortina Presidio ASIC Platform"
        select ARM64
+       select GICV2
 
 config TARGET_XENGUEST_ARM64
        bool "Xen guest ARM64"
@@ -1804,13 +1907,56 @@ config TARGET_XENGUEST_ARM64
        select SSCANF
 endchoice
 
+config SUPPORT_PASSING_ATAGS
+       bool "Support pre-devicetree ATAG-based booting"
+       depends on !ARM64
+       imply SETUP_MEMORY_TAGS
+       help
+         Support for booting older Linux kernels, using ATAGs rather than
+         passing a devicetree.  This is option is rarely used, and the
+         semantics are defined at
+         https://www.kernel.org/doc/Documentation/arm/Booting at section 4a.
+
+config SETUP_MEMORY_TAGS
+       bool "Pass memory size information via ATAG"
+       depends on SUPPORT_PASSING_ATAGS
+
+config CMDLINE_TAG
+       bool "Pass Linux kernel cmdline via ATAG"
+       depends on SUPPORT_PASSING_ATAGS
+
+config INITRD_TAG
+       bool "Pass initrd starting point and size via ATAG"
+       depends on SUPPORT_PASSING_ATAGS
+
+config REVISION_TAG
+       bool "Pass system revision via ATAG"
+       depends on SUPPORT_PASSING_ATAGS
+
+config SERIAL_TAG
+       bool "Pass system serial number via ATAG"
+       depends on SUPPORT_PASSING_ATAGS
+
+config STATIC_MACH_TYPE
+       bool "Statically define the Machine ID number"
+       help
+         When booting via ATAGs, enable this option if we know the correct
+         machine ID number to use at compile time.  Some systems will be
+         passed the number dynamically by whatever loads U-Boot.
+
+config MACH_TYPE
+       int "Machine ID number"
+       depends on STATIC_MACH_TYPE
+       help
+         When booting via ATAGs, the machine type must be passed as a number.
+         For the full list see https://www.arm.linux.org.uk/developer/machines
+
 config ARCH_SUPPORT_TFABOOT
        bool
 
 config TFABOOT
        bool "Support for booting from TF-A"
        depends on ARCH_SUPPORT_TFABOOT
-       default n
        help
          Some platforms support the setup of secure registers (for instance
          for CPU errata handling) or provide secure services like PSCI.
@@ -1895,6 +2041,8 @@ source "arch/arm/mach-imx/imx8/Kconfig"
 
 source "arch/arm/mach-imx/imx8m/Kconfig"
 
+source "arch/arm/mach-imx/imx8ulp/Kconfig"
+
 source "arch/arm/mach-imx/imxrt/Kconfig"
 
 source "arch/arm/mach-imx/mxs/Kconfig"
@@ -1961,23 +2109,15 @@ source "board/bosch/shc/Kconfig"
 source "board/bosch/guardian/Kconfig"
 source "board/CarMediaLab/flea3/Kconfig"
 source "board/Marvell/aspenite/Kconfig"
-source "board/Marvell/gplugd/Kconfig"
 source "board/Marvell/octeontx/Kconfig"
 source "board/Marvell/octeontx2/Kconfig"
-source "board/armltd/vexpress/Kconfig"
 source "board/armltd/vexpress64/Kconfig"
 source "board/cortina/presidio-asic/Kconfig"
-source "board/broadcom/bcm23550_w1d/Kconfig"
-source "board/broadcom/bcm28155_ap/Kconfig"
 source "board/broadcom/bcm963158/Kconfig"
 source "board/broadcom/bcm968360bg/Kconfig"
 source "board/broadcom/bcm968580xref/Kconfig"
-source "board/broadcom/bcmcygnus/Kconfig"
-source "board/broadcom/bcmnsp/Kconfig"
-source "board/broadcom/bcmns2/Kconfig"
 source "board/broadcom/bcmns3/Kconfig"
 source "board/cavium/thunderx/Kconfig"
-source "board/cirrus/edb93xx/Kconfig"
 source "board/eets/pdu001/Kconfig"
 source "board/emulation/qemu-arm/Kconfig"
 source "board/freescale/ls2080aqds/Kconfig"
@@ -1997,7 +2137,6 @@ source "board/freescale/ls1012aqds/Kconfig"
 source "board/freescale/ls1012ardb/Kconfig"
 source "board/freescale/ls1012afrdm/Kconfig"
 source "board/freescale/lx2160a/Kconfig"
-source "board/freescale/s32v234evb/Kconfig"
 source "board/grinn/chiliboard/Kconfig"
 source "board/hisilicon/hikey/Kconfig"
 source "board/hisilicon/hikey960/Kconfig"
@@ -2005,11 +2144,8 @@ source "board/hisilicon/poplar/Kconfig"
 source "board/isee/igep003x/Kconfig"
 source "board/kontron/sl28/Kconfig"
 source "board/myir/mys_6ulx/Kconfig"
-source "board/spear/spear300/Kconfig"
-source "board/spear/spear310/Kconfig"
-source "board/spear/spear320/Kconfig"
-source "board/spear/spear600/Kconfig"
-source "board/spear/x600/Kconfig"
+source "board/seeed/npi_imx6ull/Kconfig"
+source "board/socionext/developerbox/Kconfig"
 source "board/st/stv0991/Kconfig"
 source "board/tcl/sl50/Kconfig"
 source "board/toradex/colibri_pxa270/Kconfig"
@@ -2017,6 +2153,7 @@ source "board/variscite/dart_6ul/Kconfig"
 source "board/vscom/baltos/Kconfig"
 source "board/phytium/durian/Kconfig"
 source "board/xen/xenguest_arm64/Kconfig"
+source "board/keymile/Kconfig"
 
 source "arch/arm/Kconfig.debug"