# SPDX-License-Identifier: GPL-2.0-only
#
# Xilinx device configuration
#

config NET_VENDOR_XILINX
	bool "Xilinx devices"
	default y
	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 Xilinx devices. If you say Y, you will be asked
	  for your specific card in the following questions.

if NET_VENDOR_XILINX

config XILINX_EMACLITE
	tristate "Xilinx 10/100 Ethernet Lite support"
	depends on HAS_IOMEM
	select PHYLIB
	help
	  This driver supports the 10/100 Ethernet Lite from Xilinx.

config XILINX_AXI_EMAC
	tristate "Xilinx 10/100/1000 AXI Ethernet support"
	depends on HAS_IOMEM
	depends on XILINX_DMA
	select PHYLINK
	help
	  This driver supports the 10/100/1000 Ethernet from Xilinx for the
	  AXI bus interface used in Xilinx Virtex FPGAs and Soc's.

config XILINX_LL_TEMAC
	tristate "Xilinx LL TEMAC (LocalLink Tri-mode Ethernet MAC) driver"
	depends on HAS_IOMEM
	select PHYLIB
	help
	  This driver supports the Xilinx 10/100/1000 LocalLink TEMAC
	  core used in Xilinx Spartan and Virtex FPGAs

endif # NET_VENDOR_XILINX
