#
# Ethernet LAN device configuration
#

menuconfig ETHERNET
	bool "Ethernet driver support"
	depends on NET
	default y
	---help---
	  This section contains all the Ethernet device drivers.

if ETHERNET

config MDIO
	tristate
	depends on m

config SUNGEM_PHY
	tristate
	depends on m

#source "drivers/net/ethernet/3com/Kconfig"
#source "drivers/net/ethernet/adaptec/Kconfig"
#source "drivers/net/ethernet/aeroflex/Kconfig"
#source "drivers/net/ethernet/agere/Kconfig"
#source "drivers/net/ethernet/allwinner/Kconfig"
#source "drivers/net/ethernet/alteon/Kconfig"
#source "drivers/net/ethernet/altera/Kconfig"
#source "drivers/net/ethernet/amd/Kconfig"
#source "drivers/net/ethernet/apm/Kconfig"
#source "drivers/net/ethernet/apple/Kconfig"
#source "drivers/net/ethernet/arc/Kconfig"
source "drivers/net/ethernet/atheros/Kconfig"
#source "drivers/net/ethernet/aurora/Kconfig"
#source "drivers/net/ethernet/cadence/Kconfig"
#source "drivers/net/ethernet/adi/Kconfig"
source "drivers/net/ethernet/broadcom/Kconfig"
#source "drivers/net/ethernet/brocade/Kconfig"
#source "drivers/net/ethernet/calxeda/Kconfig"
#source "drivers/net/ethernet/cavium/Kconfig"
#source "drivers/net/ethernet/chelsio/Kconfig"
#source "drivers/net/ethernet/cirrus/Kconfig"
#source "drivers/net/ethernet/cisco/Kconfig"

config CX_ECAT
	depends on n
	tristate "Beckhoff CX5020 EtherCAT master support"
	depends on m
	depends on PCI
	depends on X86 || COMPILE_TEST
	---help---
	  Driver for EtherCAT master module located on CCAT FPGA
	  that can be found on Beckhoff CX5020, and possibly other of CX
	  Beckhoff CX series industrial PCs.

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

#source "drivers/net/ethernet/davicom/Kconfig"

config DNET
	depends on n
	tristate "Dave ethernet support (DNET)"
	depends on m
	depends on HAS_IOMEM
	depends on PHYLIB
	---help---
	  The Dave ethernet interface (DNET) is found on Qong Board FPGA.
	  Say Y to include support for the DNET chip.

	  To compile this driver as a module, choose M here: the module
	  will be called dnet.

#source "drivers/net/ethernet/dec/Kconfig"
#source "drivers/net/ethernet/dlink/Kconfig"
#source "drivers/net/ethernet/emulex/Kconfig"
#source "drivers/net/ethernet/ezchip/Kconfig"
#source "drivers/net/ethernet/neterion/Kconfig"
#source "drivers/net/ethernet/faraday/Kconfig"
#source "drivers/net/ethernet/freescale/Kconfig"
#source "drivers/net/ethernet/fujitsu/Kconfig"
#source "drivers/net/ethernet/hisilicon/Kconfig"
#source "drivers/net/ethernet/hp/Kconfig"
#source "drivers/net/ethernet/ibm/Kconfig"
source "drivers/net/ethernet/intel/Kconfig"
#source "drivers/net/ethernet/i825xx/Kconfig"
#source "drivers/net/ethernet/xscale/Kconfig"

config JME
	depends on n
	tristate "JMicron(R) PCI-Express Gigabit Ethernet support"
	depends on m
	depends on PCI
	depends on CRC32
	select BPAUTO_MII
	---help---
	  This driver supports the PCI-Express gigabit ethernet adapters
	  based on JMicron JMC250 chipset.

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

config KORINA
	depends on n
	tristate "Korina (IDT RC32434) Ethernet support"
	depends on m
	depends on MIKROTIK_RB532
	---help---
	  If you have a Mikrotik RouterBoard 500 or IDT RC32434
	  based system say Y. Otherwise say N.

config LANTIQ_ETOP
	depends on n
	tristate "Lantiq SoC ETOP driver"
	depends on m
	depends on SOC_TYPE_XWAY
	---help---
	  Support for the MII0 inside the Lantiq SoC

#source "drivers/net/ethernet/marvell/Kconfig"
#source "drivers/net/ethernet/mellanox/Kconfig"
#source "drivers/net/ethernet/micrel/Kconfig"
#source "drivers/net/ethernet/microchip/Kconfig"
#source "drivers/net/ethernet/moxa/Kconfig"
#source "drivers/net/ethernet/myricom/Kconfig"

config FEALNX
	depends on n
	tristate "Myson MTD-8xx PCI Ethernet support"
	depends on m
	depends on PCI
	depends on CRC32
	select BPAUTO_MII
	---help---
	  Say Y here to support the Myson MTD-800 family of PCI-based Ethernet
	  cards. <http://www.myson.com.tw/>

#source "drivers/net/ethernet/natsemi/Kconfig"
#source "drivers/net/ethernet/netronome/Kconfig"
#source "drivers/net/ethernet/8390/Kconfig"

config NET_NETX
	depends on n
	tristate "NetX Ethernet support"
	depends on m
	select BPAUTO_MII
	depends on ARCH_NETX
	---help---
	  This is support for the Hilscher netX builtin Ethernet ports

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

#source "drivers/net/ethernet/nuvoton/Kconfig"
#source "drivers/net/ethernet/nvidia/Kconfig"
#source "drivers/net/ethernet/nxp/Kconfig"
#source "drivers/net/ethernet/octeon/Kconfig"
#source "drivers/net/ethernet/oki-semi/Kconfig"

config ETHOC
	depends on n
	tristate "OpenCores 10/100 Mbps Ethernet MAC support"
	depends on m
	depends on HAS_IOMEM && HAS_DMA
	select BPAUTO_MII
	depends on PHYLIB
	depends on CRC32
	depends on BITREVERSE
	---help---
	  Say Y here if you want to use the OpenCores 10/100 Mbps Ethernet MAC.

#source "drivers/net/ethernet/packetengines/Kconfig"
#source "drivers/net/ethernet/pasemi/Kconfig"
#source "drivers/net/ethernet/qlogic/Kconfig"
#source "drivers/net/ethernet/qualcomm/Kconfig"
#source "drivers/net/ethernet/realtek/Kconfig"
#source "drivers/net/ethernet/renesas/Kconfig"
#source "drivers/net/ethernet/rdc/Kconfig"
#source "drivers/net/ethernet/rocker/Kconfig"
#source "drivers/net/ethernet/samsung/Kconfig"
#source "drivers/net/ethernet/seeq/Kconfig"
#source "drivers/net/ethernet/silan/Kconfig"
#source "drivers/net/ethernet/sis/Kconfig"
#source "drivers/net/ethernet/sfc/Kconfig"
#source "drivers/net/ethernet/sgi/Kconfig"
#source "drivers/net/ethernet/smsc/Kconfig"
#source "drivers/net/ethernet/stmicro/Kconfig"
#source "drivers/net/ethernet/sun/Kconfig"
#source "drivers/net/ethernet/synopsys/Kconfig"
#source "drivers/net/ethernet/tehuti/Kconfig"
#source "drivers/net/ethernet/ti/Kconfig"
#source "drivers/net/ethernet/tile/Kconfig"
#source "drivers/net/ethernet/toshiba/Kconfig"
#source "drivers/net/ethernet/tundra/Kconfig"
#source "drivers/net/ethernet/via/Kconfig"
#source "drivers/net/ethernet/wiznet/Kconfig"
#source "drivers/net/ethernet/xilinx/Kconfig"
#source "drivers/net/ethernet/xircom/Kconfig"

endif # ETHERNET
