# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_FOOTBRIDGE
	bool "FootBridge Implementations"
	depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5)
	depends on !(ARCH_MOXART || ARCH_GEMINI || ARCH_SA1100)
	depends on ATAGS
	depends on CPU_LITTLE_ENDIAN
	depends on MMU
	select ARCH_NO_SG_CHAIN
	select CPU_SA110
	select FOOTBRIDGE
	select NEED_MACH_MEMORY_H
	help
	  Support for systems based on the DC21285 companion chip
	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.

if ARCH_FOOTBRIDGE

config ARCH_EBSA285_HOST
	bool "EBSA285 (host mode)"
	select ARCH_EBSA285
	select ISA
	select ARCH_MAY_HAVE_PC_FDC
	select FORCE_PCI
	help
	  Say Y here if you intend to run this kernel on the EBSA285 card
	  in host ("central function") mode.

	  Saying N will reduce the size of the Footbridge kernel.

config ARCH_NETWINDER
	bool "NetWinder"
	select CLKEVT_I8253
	select CLKSRC_I8253
	select ISA
	select FORCE_PCI
	help
	  Say Y here if you intend to run this kernel on the Rebel.COM
	  NetWinder.  Information about this machine can be found at:

	  <http://www.netwinder.org/>

	  Saying N will reduce the size of the Footbridge kernel.

# Footbridge support
config FOOTBRIDGE
	def_bool y
	select ARCH_MIGHT_HAVE_PC_SERIO
	select ISA_DMA_API

config ARCH_EBSA285
	bool

endif
