# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_EP93XX
	bool "EP93xx-based"
	depends on ATAGS
	depends on ARCH_MULTI_V4T
	# CONFIG_ARCH_MULTI_V7 is not set
	depends on CPU_LITTLE_ENDIAN
	select ARCH_HAS_RESET_CONTROLLER
	select ARCH_SPARSEMEM_ENABLE
	select ARM_AMBA
	select ARM_VIC
	select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
	select ARM_ATAG_DTB_COMPAT # we need this to update dt memory node
	select COMMON_CLK_EP93XX
	select EP93XX_TIMER
	select CLKSRC_MMIO
	select CPU_ARM920T
	select GPIOLIB
	select PINCTRL
	select PINCTRL_EP93XX
	help
	  This enables support for the Cirrus EP93xx series of CPUs.

if ARCH_EP93XX

# menu "EP93xx Platforms"

config MACH_BK3
	bool "Support Liebherr BK3.1"
	select MACH_TS72XX
	help
	  Say 'Y' here if you want your kernel to support the
	  Liebherr controller BK3.1.

config MACH_EDB93XX
	bool

config MACH_EDB9301
	bool "Support Cirrus Logic EDB9301"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9301 Evaluation Board.

config MACH_EDB9302
	bool "Support Cirrus Logic EDB9302"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9302 Evaluation Board.

config MACH_EDB9302A
	bool "Support Cirrus Logic EDB9302A"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9302A Evaluation Board.

config MACH_EDB9307
	bool "Support Cirrus Logic EDB9307"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9307 Evaluation Board.

config MACH_EDB9307A
	bool "Support Cirrus Logic EDB9307A"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9307A Evaluation Board.

config MACH_EDB9312
	bool "Support Cirrus Logic EDB9312"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9312 Evaluation Board.

config MACH_EDB9315
	bool "Support Cirrus Logic EDB9315"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9315 Evaluation Board.

config MACH_EDB9315A
	bool "Support Cirrus Logic EDB9315A"
	select MACH_EDB93XX
	help
	  Say 'Y' here if you want your kernel to support the Cirrus
	  Logic EDB9315A Evaluation Board.

config MACH_TS72XX
	bool "Support Technologic Systems TS-72xx SBC"
	help
	  Say 'Y' here if you want your kernel to support the
	  Technologic Systems TS-72xx board.

config MACH_VISION_EP9307
	bool "Support Vision Engraving Systems EP9307 SoM"
	help
	  Say 'Y' here if you want your kernel to support the
	  Vision Engraving Systems EP9307 SoM.

# endmenu

endif
