#
# Xilink device configuration
#

config NET_VENDOR_XILINX
	bool "Xilinx devices"
	default y
	depends on PPC || PPC32 || MICROBLAZE || ARCH_ZYNQ
	---help---
	  If you have a network (Ethernet) card belonging to this class, say Y
	  and read the Ethernet-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>.

	  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 (PPC32 || MICROBLAZE || ARCH_ZYNQ)
	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 MICROBLAZE
	select PHYLIB
	---help---
	  This driver supports the 10/100/1000 Ethernet from Xilinx for the
	  AXI bus interface used in Xilinx Virtex FPGAs.

config XILINX_LL_TEMAC
	tristate "Xilinx LL TEMAC (LocalLink Tri-mode Ethernet MAC) driver"
	depends on (PPC || MICROBLAZE)
	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
