config DM_ETH
	bool "Enable Driver Model for Ethernet drivers"
	depends on DM
	help
	  Enable driver model for Ethernet.

	  The eth_*() interface will be implemented by the UC_ETH class
	  This is currently implemented in net/eth.c
	  Look in include/net.h for details.

config PHYLIB
	bool "Ethernet PHY (physical media interface) support"
	help
	  Enable Ethernet PHY (physical media interface) support.

menuconfig NETDEVICES
	bool "Network device support"
	depends on NET
	default y if DM_ETH
	help
	  You must select Y to enable any network device support
	  Generally if you have any networking support this is a given

	  If unsure, say Y

if NETDEVICES

config ALTERA_TSE
	bool "Altera Triple-Speed Ethernet MAC support"
	depends on DM_ETH
	select PHYLIB
	help
	  This driver supports the Altera Triple-Speed (TSE) Ethernet MAC.
	  Please find details on the "Triple-Speed Ethernet MegaCore Function
	  Resource Center" of Altera.

config E1000
	bool "Intel PRO/1000 Gigabit Ethernet support"
	help
	  This driver supports Intel(R) PRO/1000 gigabit ethernet family of
	  adapters.  For more information on how to identify your adapter, go
	  to the Adapter & Driver ID Guide at:

	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>

config E1000_SPI_GENERIC
	bool "Allow access to the Intel 8257x SPI bus"
	depends on E1000
	help
	  Allow generic access to the SPI bus on the Intel 8257x, for
	  example with the "sspi" command.

config E1000_SPI
	bool "Enable SPI bus utility code"
	depends on E1000
	help
	  Utility code for direct access to the SPI bus on Intel 8257x.
	  This does not do anything useful unless you set at least one
	  of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC.

config CMD_E1000
	bool "Enable the e1000 command"
	depends on E1000
	help
	  This enables the 'e1000' management command for E1000 devices. When
	  used on devices with SPI support you can reprogram the EEPROM from
	  U-Boot.

config ETH_SANDBOX
	depends on DM_ETH && SANDBOX
	default y
	bool "Sandbox: Mocked Ethernet driver"
	help
	  This driver simply responds with fake ARP replies and ping
	  replies that are used to verify network stack functionality

	  This driver is particularly useful in the test/dm/eth.c tests

config ETH_SANDBOX_RAW
	depends on DM_ETH && SANDBOX
	default y
	bool "Sandbox: Bridge to Linux Raw Sockets"
	help
	  This driver is a bridge from the bottom of the network stack
	  in U-Boot to the RAW AF_PACKET API in Linux. This allows real
	  network traffic to be tested from within sandbox. See
	  board/sandbox/README.sandbox for more details.

config ETH_DESIGNWARE
	bool "Synopsys Designware Ethernet MAC"
	select PHYLIB
	help
	  This MAC is present in SoCs from various vendors. It supports
	  100Mbit and 1 Gbit operation. You must enable CONFIG_PHYLIB to
	  provide the PHY (physical media interface).

config PCH_GBE
	bool "Intel Platform Controller Hub EG20T GMAC driver"
	depends on DM_ETH && DM_PCI
	select PHYLIB
	help
	  This MAC is present in Intel Platform Controller Hub EG20T. It
	  supports 10/100/1000 Mbps operation.

config ZYNQ_GEM
	depends on DM_ETH && (ARCH_ZYNQ || ARCH_ZYNQMP)
	select PHYLIB
	bool "Xilinx Ethernet GEM"
	help
	  This MAC is present in Xilinx Zynq and ZynqMP SoCs.

endif # NETDEVICES
