# SPDX-License-Identifier: GPL-2.0-only
#
# Cirrus network device configuration
#

config NET_VENDOR_CIRRUS
	bool "Cirrus devices"
	default y
	depends on ISA || EISA || ARM || MAC || COMPILE_TEST
	help
	  If you have a network (Ethernet) card belonging to this class, say Y.

	  Note that the answer to this question doesn't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about Cirrus cards. If you say Y, you will be asked
	  for your specific card in the following questions.

if NET_VENDOR_CIRRUS

config CS89x0
	tristate

config CS89x0_ISA
	tristate "CS89x0 ISA driver support"
	depends on HAS_IOPORT_MAP
	depends on ISA
	depends on !PPC32
	depends on CS89x0_PLATFORM=n
	select NETDEV_LEGACY_INIT
	select CS89x0
	help
	  Support for CS89x0 chipset based Ethernet cards. If you have a
	  network (Ethernet) card of this type, say Y and read the file
	  <file:Documentation/networking/device_drivers/ethernet/cirrus/cs89x0.rst>.

	  To compile this driver as a module, choose M here. The module
	  will be called cs89x0.

config CS89x0_PLATFORM
	tristate "CS89x0 platform driver support"
	depends on ARM || (COMPILE_TEST && !PPC)
	select CS89x0
	help
	  Say Y to compile the cs89x0 platform driver. This makes this driver
	  suitable for use on certain evaluation boards such as the iMX21ADS.

	  To compile this driver as a module, choose M here. The module
	  will be called cs89x0.

config EP93XX_ETH
	tristate "EP93xx Ethernet support"
	depends on (ARM && ARCH_EP93XX) || COMPILE_TEST
	select MII
	help
	  This is a driver for the ethernet hardware included in EP93xx CPUs.
	  Say Y if you are building a kernel for EP93xx based devices.

config MAC89x0
	tristate "Macintosh CS89x0 based ethernet cards"
	depends on MAC
	help
	  Support for CS89x0 chipset based Ethernet cards.  If you have a
	  Nubus or LC-PDS network (Ethernet) card of this type, say Y here.

	  To compile this driver as a module, choose M here. This module will
	  be called mac89x0.

endif # NET_VENDOR_CIRRUS
