# SPDX-License-Identifier: GPL-2.0
config ARCH_VERSATILE
	bool "ARM Ltd. Versatile family"
	depends on ARCH_MULTI_V5
	depends on CPU_LITTLE_ENDIAN
	select ARM_AMBA
	select ARM_TIMER_SP804
	select ARM_VIC
	select CLKSRC_VERSATILE
	select CPU_ARM926T
	select CLK_ICST
	select MFD_SYSCON
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select VERSATILE_FPGA_IRQ
	help
	  This enables support for ARM Ltd Versatile board.

menuconfig ARCH_INTEGRATOR
	bool "ARM Ltd. Integrator family"
	depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6
	depends on CPU_LITTLE_ENDIAN || ARCH_MULTI_V6
	select ARM_AMBA
	select CMA
	select DMA_CMA
	select HAVE_TCM
	select CLK_ICST
	select MFD_SYSCON
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SOC_INTEGRATOR_CM
	select VERSATILE_FPGA_IRQ
	help
	  Support for ARM's Integrator platform.

if ARCH_INTEGRATOR

config ARCH_INTEGRATOR_AP
	bool "Support Integrator/AP and Integrator/PP2 platforms"
	select INTEGRATOR_AP_TIMER
	select SERIAL_AMBA_PL010 if TTY
	select SERIAL_AMBA_PL010_CONSOLE if TTY
	select SOC_BUS
	help
	  Include support for the ARM(R) Integrator/AP and
	  Integrator/PP2 platforms.

config INTEGRATOR_IMPD1
	bool "Include support for Integrator/IM-PD1"
	depends on ARCH_INTEGRATOR_AP
	select ARM_VIC
	select GPIO_PL061
	select GPIOLIB
	select REGULATOR
	select REGULATOR_FIXED_VOLTAGE
	help
	  The IM-PD1 is an add-on logic module for the Integrator which
	  allows ARM(R) Ltd PrimeCells to be developed and evaluated.
	  The IM-PD1 can be found on the Integrator/PP2 platform.

config INTEGRATOR_CM720T
	bool "Integrator/CM720T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T
	select CPU_ARM720T

config INTEGRATOR_CM920T
	bool "Integrator/CM920T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T
	select CPU_ARM920T

config INTEGRATOR_CM922T_XA10
	bool "Integrator/CM922T-XA10 core module"
	depends on ARCH_MULTI_V4T
	depends on ARCH_INTEGRATOR_AP
	select CPU_ARM922T

config INTEGRATOR_CM926EJS
	bool "Integrator/CM926EJ-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM926T

config INTEGRATOR_CM10200E_REV0
	bool "Integrator/CM10200E rev.0 core module"
	depends on ARCH_INTEGRATOR_AP && n
	depends on ARCH_MULTI_V5
	select CPU_ARM1020

config INTEGRATOR_CM10200E
	bool "Integrator/CM10200E core module"
	depends on ARCH_INTEGRATOR_AP && n
	depends on ARCH_MULTI_V5
	select CPU_ARM1020E

config INTEGRATOR_CM10220E
	bool "Integrator/CM10220E core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM1022

config INTEGRATOR_CM1026EJS
	bool "Integrator/CM1026EJ-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM1026

config INTEGRATOR_CM1136JFS
	bool "Integrator/CM1136JF-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V6
	select CPU_V6

config ARCH_INTEGRATOR_CP
	bool "Support Integrator/CP platform"
	depends on ARCH_MULTI_V5 || ARCH_MULTI_V6
	select ARM_TIMER_SP804
	select SERIAL_AMBA_PL011 if TTY
	select SERIAL_AMBA_PL011_CONSOLE if TTY
	select SOC_BUS
	help
	  Include support for the ARM(R) Integrator CP platform.

config INTEGRATOR_CT926
	bool "Integrator/CT926 (ARM926EJ-S) core tile"
	depends on ARCH_INTEGRATOR_CP
	depends on ARCH_MULTI_V5
	select CPU_ARM926T

config INTEGRATOR_CTB36
	bool "Integrator/CTB36 (ARM1136JF-S) core tile"
	depends on ARCH_INTEGRATOR_CP
	depends on ARCH_MULTI_V6
	select CPU_V6

config ARCH_CINTEGRATOR
	depends on ARCH_INTEGRATOR_CP
	def_bool y

endif

menuconfig ARCH_REALVIEW
	bool "ARM Ltd. RealView family"
	depends on (CPU_LITTLE_ENDIAN && ARCH_MULTI_V5) || ARCH_MULTI_V6 || ARCH_MULTI_V7
	select ARM_AMBA
	select ARM_GIC
	select ARM_TIMER_SP804
	select CLK_SP810
	select GPIO_PL061 if GPIOLIB
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select HAVE_PATA_PLATFORM
	select HAVE_TCM
	select CLK_ICST
	select MACH_REALVIEW_EB if ARCH_MULTI_V5
	select MFD_SYSCON
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SOC_REALVIEW
	help
	  This enables support for ARM Ltd RealView boards.

if ARCH_REALVIEW

config MACH_REALVIEW_EB
	bool "Support RealView(R) Emulation Baseboard"
	select ARM_GIC
	select CPU_ARM926T if ARCH_MULTI_V5
	help
	  Include support for the ARM(R) RealView(R) Emulation Baseboard
	  platform. On an ARMv5 kernel, this will include support for
	  the ARM926EJ-S core tile, while on an ARMv6/v7 kernel, at least
	  one of the ARM1136, ARM1176, ARM11MPCore or Cortex-A9MPCore
	  core tile options should be enabled.

config REALVIEW_EB_ARM1136
	bool "Support ARM1136J(F)-S Tile"
	depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
	select CPU_V6
	help
	  Enable support for the ARM1136 tile fitted to the
	  Realview(R) Emulation Baseboard platform.

config REALVIEW_EB_ARM1176
	bool "Support ARM1176JZ(F)-S Tile"
	depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
	help
	  Enable support for the ARM1176 tile fitted to the
	  Realview(R) Emulation Baseboard platform.

config REALVIEW_EB_A9MP
	bool "Support Multicore Cortex-A9 Tile"
	depends on MACH_REALVIEW_EB && ARCH_MULTI_V7
	help
	  Enable support for the Cortex-A9MPCore tile fitted to the
	  Realview(R) Emulation Baseboard platform.

config REALVIEW_EB_ARM11MP
	bool "Support ARM11MPCore Tile"
	depends on MACH_REALVIEW_EB && ARCH_MULTI_V6
	select HAVE_SMP
	help
	  Enable support for the ARM11MPCore tile fitted to the Realview(R)
	  Emulation Baseboard platform.

config MACH_REALVIEW_PB11MP
	bool "Support RealView(R) Platform Baseboard for ARM11MPCore"
	depends on ARCH_MULTI_V6
	select HAVE_SMP
	help
	  Include support for the ARM(R) RealView(R) Platform Baseboard for
	  the ARM11MPCore.  This platform has an on-board ARM11MPCore and has
	  support for PCI-E and Compact Flash.

# ARMv6 CPU without K extensions, but does have the new exclusive ops
config MACH_REALVIEW_PB1176
	bool "Support RealView(R) Platform Baseboard for ARM1176JZF-S"
	depends on ARCH_MULTI_V6
	select CPU_V6
	select HAVE_TCM
	help
	  Include support for the ARM(R) RealView(R) Platform Baseboard for
	  ARM1176JZF-S.

config MACH_REALVIEW_PBA8
	bool "Support RealView(R) Platform Baseboard for Cortex(tm)-A8 platform"
	depends on ARCH_MULTI_V7
	help
	  Include support for the ARM(R) RealView Platform Baseboard for
	  Cortex(tm)-A8.  This platform has an on-board Cortex-A8 and has
	  support for PCI-E and Compact Flash.

config MACH_REALVIEW_PBX
	bool "Support RealView(R) Platform Baseboard Explore for Cortex-A9"
	depends on ARCH_MULTI_V7
	select ZONE_DMA
	help
	  Include support for the ARM(R) RealView(R) Platform Baseboard
	  Explore.

endif

menuconfig ARCH_VEXPRESS
	bool "ARM Ltd. Versatile Express family"
	depends on ARCH_MULTI_V7
	select ARM_AMBA
	select ARM_GIC
	select ARM_GLOBAL_TIMER
	select ARM_TIMER_SP804
	select GPIOLIB
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select CLK_ICST
	select NO_IOPORT_MAP
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VEXPRESS
	select POWER_SUPPLY
	select REGULATOR if MMC_ARMMMCI
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select VEXPRESS_CONFIG
	help
	  This option enables support for systems using Cortex processor based
	  ARM core and logic (FPGA) tiles on the Versatile Express motherboard,
	  for example:

	  - CoreTile Express A5x2 (V2P-CA5s)
	  - CoreTile Express A9x4 (V2P-CA9)
	  - CoreTile Express A15x2 (V2P-CA15)
	  - LogicTile Express 13MG (V2F-2XV6) with A5, A7, A9 or A15 SMMs
	    (Soft Macrocell Models)
	  - Versatile Express RTSMs (Models)

	  You must boot using a Flattened Device Tree in order to use these
	  platforms. The traditional (ATAGs) boot method is not usable on
	  these boards with this option.

if ARCH_VEXPRESS

config ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA
	bool "Enable A5 and A9 only errata work-arounds"
	default y
	select ARM_ERRATA_643719 if SMP
	select ARM_ERRATA_720789
	select PL310_ERRATA_753970 if CACHE_L2X0
	help
	  Provides common dependencies for Versatile Express platforms
	  based on Cortex-A5 and Cortex-A9 processors. In order to
	  build a working kernel, you must also enable relevant core
	  tile support or Flattened Device Tree based support options.

config ARCH_VEXPRESS_DCSCB
	bool "Dual Cluster System Control Block (DCSCB) support"
	depends on MCPM
	select ARM_CCI400_PORT_CTRL
	help
	  Support for the Dual Cluster System Configuration Block (DCSCB).
	  This is needed to provide CPU and cluster power management
	  on RTSM implementing big.LITTLE.

config ARCH_VEXPRESS_SPC
	bool "Versatile Express Serial Power Controller (SPC)"
	select PM_OPP
	help
	  The TC2 (A15x2 A7x3) versatile express core tile integrates a logic
	  block called Serial Power Controller (SPC) that provides the interface
	  between the dual cluster test-chip and the M3 microcontroller that
	  carries out power management.

config ARCH_VEXPRESS_TC2_PM
	bool "Versatile Express TC2 power management"
	depends on MCPM
	select ARM_CCI400_PORT_CTRL
	select ARCH_VEXPRESS_SPC
	select ARM_CPU_SUSPEND
	help
	  Support for CPU and cluster power management on Versatile Express
	  with a TC2 (A15x2 A7x3) big.LITTLE core tile.

endif