# SPDX-License-Identifier: GPL-2.0-only
if ARCH_IXP4XX

menu "Intel IXP4xx Implementation Options"

comment "IXP4xx Platforms"

config MACH_IXP4XX_OF
	bool
	prompt "Devce Tree IXP4xx boards"
	default y
	select ARM_APPENDED_DTB # Old Redboot bootloaders deployed
	select I2C
	select I2C_IOP3XX
	select PCI
	select TIMER_OF
	select USE_OF
	help
	  Say 'Y' here to support Device Tree-based IXP4xx platforms.

config MACH_NSLU2
	bool
	prompt "Linksys NSLU2"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Linksys's
	  NSLU2 NAS device. For more information on this platform,
	  see http://www.nslu2-linux.org

config MACH_AVILA
	bool "Avila"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support the Gateworks
	  Avila Network Platform. For more information on this platform,
	  see <file:Documentation/arm/ixp4xx.rst>.

config MACH_LOFT
    bool "Loft"
    depends on MACH_AVILA
    help
	  Say 'Y' here if you want your kernel to support the Giant
	  Shoulder Inc Loft board (a minor variation on the standard
	  Gateworks Avila Network Platform).

config ARCH_ADI_COYOTE
	bool "Coyote"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support the ADI 
	  Engineering Coyote Gateway Reference Platform. For more
	  information on this platform, see <file:Documentation/arm/ixp4xx.rst>.

config MACH_GATEWAY7001
	bool "Gateway 7001"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Gateway's
	  7001 Access Point. For more information on this platform,
	  see http://openwrt.org

config MACH_WG302V2
	bool "Netgear WG302 v2 / WAG302 v2"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Netgear's
	  WG302 v2 or WAG302 v2 Access Points. For more information
	  on this platform, see http://openwrt.org

config ARCH_IXDP425
	bool "IXDP425"
	help
	  Say 'Y' here if you want your kernel to support Intel's 
	  IXDP425 Development Platform (Also known as Richfield).  
	  For more information on this platform, see <file:Documentation/arm/ixp4xx.rst>.

config MACH_IXDPG425
	bool "IXDPG425"
	help
	  Say 'Y' here if you want your kernel to support Intel's
	  IXDPG425 Development Platform (Also known as Montajade).
	  For more information on this platform, see <file:Documentation/arm/ixp4xx.rst>.

config MACH_IXDP465
	bool "IXDP465"
	help
	  Say 'Y' here if you want your kernel to support Intel's
	  IXDP465 Development Platform (Also known as BMP).
	  For more information on this platform, see <file:Documentation/arm/ixp4xx.rst>.

config MACH_GORAMO_MLR
	bool "GORAMO Multi Link Router"
	help
	  Say 'Y' here if you want your kernel to support GORAMO
	  MultiLink router.

config MACH_KIXRP435
	bool "KIXRP435"
	help
	  Say 'Y' here if you want your kernel to support Intel's
	  KIXRP435 Reference Platform.
	  For more information on this platform, see <file:Documentation/arm/ixp4xx.rst>.

#
# IXCDP1100 is the exact same HW as IXDP425, but with a different machine 
# number from the bootloader due to marketing monkeys, so we just enable it 
# by default if IXDP425 is enabled.
#
config ARCH_IXCDP1100
	bool 
	depends on ARCH_IXDP425
	default y

config ARCH_PRPMC1100
	bool "PrPMC1100"
	help
	  Say 'Y' here if you want your kernel to support the Motorola
	  PrPCM1100 Processor Mezanine Module. For more information on
	  this platform, see <file:Documentation/arm/ixp4xx.rst>.

config MACH_NAS100D
	bool
	prompt "NAS100D"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Iomega's
	  NAS 100d device. For more information on this platform,
	  see http://www.nslu2-linux.org/wiki/NAS100d/HomePage

config MACH_DSMG600
	bool
	prompt "D-Link DSM-G600 RevA"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support D-Link's
	  DSM-G600 RevA device. For more information on this platform,
	  see http://www.nslu2-linux.org/wiki/DSMG600/HomePage

config	ARCH_IXDP4XX
	bool
	depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435
	default y

config MACH_FSG
	bool
	prompt "Freecom FSG-3"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Freecom's
	  FSG-3 device. For more information on this platform,
	  see http://www.nslu2-linux.org/wiki/FSG3/HomePage

config MACH_ARCOM_VULCAN
	bool
	prompt "Arcom/Eurotech Vulcan"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support Arcom's
	  Vulcan board.

#
# Certain registers and IRQs are only enabled if supporting IXP465 CPUs
#
config CPU_IXP46X
	bool
	depends on MACH_IXDP465
	default y

config CPU_IXP43X
	bool
	depends on MACH_KIXRP435
	default y

config MACH_GTWX5715
	bool "Gemtek WX5715 (Linksys WRV54G)"
	depends on ARCH_IXP4XX
	select FORCE_PCI
	help
		This board is currently inside the Linksys WRV54G Gateways.

		IXP425 - 266mhz
		32mb SDRAM
		8mb Flash
		miniPCI slot 0 does not have a card connector soldered to the board
		miniPCI slot 1 has an ISL3880 802.11g card (Prism54)
		npe0 is connected to a Kendin KS8995M Switch (4 ports)
		npe1 is the "wan" port
		"Console" UART is available on J11 as console
		"High Speed" UART is n/c (as far as I can tell)
		20 Pin ARM/Xscale JTAG interface on J2

config MACH_DEVIXP
	bool "Omicron DEVIXP"
	help
	  Say 'Y' here if you want your kernel to support the DEVIXP
	  board from OMICRON electronics GmbH.

config MACH_MICCPT
	bool "Omicron MICCPT"
	select FORCE_PCI
	help
	  Say 'Y' here if you want your kernel to support the MICCPT
	  board from OMICRON electronics GmbH.

config MACH_MIC256
	bool "Omicron MIC256"
	help
	  Say 'Y' here if you want your kernel to support the MIC256
	  board from OMICRON electronics GmbH.

comment "IXP4xx Options"

config IXP4XX_INDIRECT_PCI
	bool "Use indirect PCI memory access"
	depends on PCI
	help
          IXP4xx provides two methods of accessing PCI memory space:

          1) A direct mapped window from 0x48000000 to 0x4BFFFFFF (64MB).
             To access PCI via this space, we simply ioremap() the BAR
             into the kernel and we can use the standard read[bwl]/write[bwl]
             macros. This is the preferred method due to speed but it
             limits the system to just 64MB of PCI memory. This can be
             problematic if using video cards and other memory-heavy devices.

	  2) If > 64MB of memory space is required, the IXP4xx can be
	     configured to use indirect registers to access the whole PCI
	     memory space. This currently allows for up to 1 GB (0x10000000
	     to 0x4FFFFFFF) of memory on the bus. The disadvantage of this
	     is that every PCI access requires three local register accesses
	     plus a spinlock, but in some cases the performance hit is
	     acceptable. In addition, you cannot mmap() PCI devices in this
	     case due to the indirect nature of the PCI window.

	  By default, the direct method is used. Choose this option if you
	  need to use the indirect method instead. If you don't know
	  what you need, leave this option unselected.

endmenu

endif
