menu "RealView platform type"
	depends on ARCH_REALVIEW

config REALVIEW_DT
	bool "Support RealView(R) Device Tree based boot"
	select ARM_GIC
	select MFD_SYSCON
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SOC_REALVIEW
	select USE_OF
	help
	  Include support for booting the ARM(R) RealView(R) evaluation
	  boards using a device tree machine description.

config MACH_REALVIEW_EB
	bool "Support RealView(R) Emulation Baseboard"
	select ARM_GIC
	help
	  Include support for the ARM(R) RealView(R) Emulation Baseboard
	  platform.

config REALVIEW_EB_A9MP
	bool "Support Multicore Cortex-A9 Tile"
	depends on MACH_REALVIEW_EB
	select CPU_V7
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	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
	select ARCH_HAS_BARRIERS if SMP
	select CPU_V6K
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	help
	  Enable support for the ARM11MPCore tile fitted to the Realview(R)
	  Emulation Baseboard platform.

config REALVIEW_EB_ARM11MP_REVB
	bool "Support ARM11MPCore RevB Tile"
	depends on REALVIEW_EB_ARM11MP
	help
	  Enable support for the ARM11MPCore Revision B tile on the
	  Realview(R) Emulation Baseboard platform. Since there are device
	  address differences, a kernel built with this option enabled is
	  not compatible with other revisions of the ARM11MPCore tile.

config MACH_REALVIEW_PB11MP
	bool "Support RealView(R) Platform Baseboard for ARM11MPCore"
	select ARCH_HAS_BARRIERS if SMP
	select ARM_GIC
	select CPU_V6K
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select HAVE_PATA_PLATFORM
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	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"
	select ARM_GIC
	select CPU_V6
	select HAVE_TCM
	select MIGHT_HAVE_CACHE_L2X0
	help
	  Include support for the ARM(R) RealView(R) Platform Baseboard for
	  ARM1176JZF-S.

config REALVIEW_PB1176_SECURE_FLASH
	bool "Allow access to the secure flash memory block"
	depends on MACH_REALVIEW_PB1176
	default n
	help
	  Select this option if Linux will only run in secure mode on the
	  RealView PB1176 platform and access to the secure flash memory
	  block (64MB @ 0x3c000000) is required.

config MACH_REALVIEW_PBA8
	bool "Support RealView(R) Platform Baseboard for Cortex(tm)-A8 platform"
	select ARM_GIC
	select CPU_V7
	select HAVE_PATA_PLATFORM
	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"
	select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET
	select ARM_GIC
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select HAVE_PATA_PLATFORM
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	select ZONE_DMA if SPARSEMEM
	help
	  Include support for the ARM(R) RealView(R) Platform Baseboard
	  Explore.

config REALVIEW_HIGH_PHYS_OFFSET
	bool "High physical base address for the RealView platform"
	depends on MMU && !MACH_REALVIEW_PB1176
	default y
	help
	  RealView boards other than PB1176 have the RAM available at
	  0x70000000, 256MB of which being mirrored at 0x00000000. If
	  the board supports 512MB of RAM, this option allows the
	  memory to be accessed contiguously at the high physical
	  offset. On the PBX board, disabling this option allows 1GB of
	  RAM to be used with SPARSEMEM.

endmenu
