# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_REALVIEW
	bool "ARM Ltd. RealView family"
	depends on 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
