# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_INTEGRATOR
	bool "ARM Ltd. Integrator family"
	depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6
	select ARM_AMBA
	select CMA
	select DMA_CMA
	select HAVE_TCM
	select CLK_ICST
	select MFD_SYSCON
	select PLAT_VERSATILE
	select POWER_RESET
	select POWER_RESET_VERSATILE
	select POWER_SUPPLY
	select SOC_INTEGRATOR_CM
	select VERSATILE_FPGA_IRQ
	help
	  Support for ARM's Integrator platform.

if ARCH_INTEGRATOR

config ARCH_INTEGRATOR_AP
	bool "Support Integrator/AP and Integrator/PP2 platforms"
	select INTEGRATOR_AP_TIMER
	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 INTEGRATOR_IMPD1
	bool "Include support for Integrator/IM-PD1"
	depends on ARCH_INTEGRATOR_AP
	select ARM_VIC
	select GPIO_PL061
	select GPIOLIB
	select REGULATOR
	select REGULATOR_FIXED_VOLTAGE
	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.

config INTEGRATOR_CM7TDMI
	bool "Integrator/CM7TDMI core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4 && !MMU
	select CPU_ARM7TDMI

config INTEGRATOR_CM720T
	bool "Integrator/CM720T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T
	select CPU_ARM720T

config INTEGRATOR_CM740T
	bool "Integrator/CM740T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T && !MMU
	select CPU_ARM740T

config INTEGRATOR_CM920T
	bool "Integrator/CM920T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T
	select CPU_ARM920T

config INTEGRATOR_CM922T_XA10
	bool "Integrator/CM922T-XA10 core module"
	depends on ARCH_MULTI_V4T
	depends on ARCH_INTEGRATOR_AP
	select CPU_ARM922T

config INTEGRATOR_CM926EJS
	bool "Integrator/CM926EJ-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM926T

config INTEGRATOR_CM940T
	bool "Integrator/CM940T core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V4T && !MMU
	select CPU_ARM940T

config INTEGRATOR_CM946ES
	bool "Integrator/CM946E-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5 && !MMU
	select CPU_ARM946E

config INTEGRATOR_CM966ES
	bool "Integrator/CM966E-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on BROKEN # no kernel support

config INTEGRATOR_CM10200E_REV0
	bool "Integrator/CM10200E rev.0 core module"
	depends on ARCH_INTEGRATOR_AP && n
	depends on ARCH_MULTI_V5
	select CPU_ARM1020

config INTEGRATOR_CM10200E
	bool "Integrator/CM10200E core module"
	depends on ARCH_INTEGRATOR_AP && n
	depends on ARCH_MULTI_V5
	select CPU_ARM1020E

config INTEGRATOR_CM10220E
	bool "Integrator/CM10220E core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM1022

config INTEGRATOR_CM1026EJS
	bool "Integrator/CM1026EJ-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V5
	select CPU_ARM1026

config INTEGRATOR_CM1136JFS
	bool "Integrator/CM1136JF-S core module"
	depends on ARCH_INTEGRATOR_AP
	depends on ARCH_MULTI_V6
	select CPU_V6

config ARCH_INTEGRATOR_CP
	bool "Support Integrator/CP platform"
	depends on (!MMU || ARCH_MULTI_V5 || ARCH_MULTI_V6)
	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 INTEGRATOR_CT7T
	bool "Integrator/CT7TD (ARM7TDMI) core tile"
	depends on ARCH_INTEGRATOR_CP
	depends on ARCH_MULTI_V4T && !MMU
	select CPU_ARM7TDMI

config INTEGRATOR_CT926
	bool "Integrator/CT926 (ARM926EJ-S) core tile"
	depends on ARCH_INTEGRATOR_CP
	depends on ARCH_MULTI_V5
	select CPU_ARM926T

config INTEGRATOR_CTB36
	bool "Integrator/CTB36 (ARM1136JF-S) core tile"
	depends on ARCH_INTEGRATOR_CP
	depends on ARCH_MULTI_V6
	select CPU_V6

config ARCH_CINTEGRATOR
	depends on ARCH_INTEGRATOR_CP
	def_bool y

endif
