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 PLAT_VERSATILE_CLCD
	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
	tristate "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
