config ARCH_INTEGRATOR
	bool "ARM Ltd. Integrator family" if (ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6)
	select ARM_AMBA
	select ARM_PATCH_PHYS_VIRT if MMU
	select AUTO_ZRELADDR
	select COMMON_CLK
	select COMMON_CLK_VERSATILE
	select GENERIC_CLOCKEVENTS
	select HAVE_TCM
	select ICST
	select MFD_SYSCON
	select MULTI_IRQ_HANDLER
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SOC_INTEGRATOR_CM
	select SPARSE_IRQ
	select USE_OF
	select VERSATILE_FPGA_IRQ
	help
	  Support for ARM's Integrator platform.

if ARCH_INTEGRATOR

menu "Integrator Options"

config ARCH_INTEGRATOR_AP
	bool "Support Integrator/AP and Integrator/PP2 platforms"
	select CLKSRC_MMIO
	select MIGHT_HAVE_PCI
	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 ARCH_INTEGRATOR_CP
	bool "Support Integrator/CP platform"
	select ARCH_CINTEGRATOR
	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 ARCH_CINTEGRATOR
	bool

config INTEGRATOR_IMPD1
	bool "Include support for Integrator/IM-PD1"
	depends on ARCH_INTEGRATOR_AP
	select ARCH_REQUIRE_GPIOLIB
	select ARM_VIC
	select GPIO_PL061 if GPIOLIB
	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.

	  To compile this driver as a module, choose M here: the
	  module will be called impd1.

endmenu

endif
