menu "RealView platform type"
	depends on ARCH_REALVIEW

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_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 CPU_V6K
	select ARCH_HAS_BARRIERS 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 CPU_V6K
	select ARM_GIC
	select HAVE_PATA_PLATFORM
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	select ARCH_HAS_BARRIERS if 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"
	select CPU_V6
	select ARM_GIC
	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 CPU_V7
	select ARM_GIC
	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 ARM_GIC
	select HAVE_PATA_PLATFORM
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET
	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
