#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

comment "General Ethernet MAC Driver Options"

config NETDEV_MULTINIC
	bool "Multiple network interface support"
	default n
	---help---
		Select this option if you board and/or MCU are capable of supporting
		multiple Ethernet MAC drivers.

config NETDEV_LATEINIT
	bool "Late driver initialization"
	default n
	---help---
		Normally, networking initialization occur in the later phase of the
		boot process in the function up_initialize() when it calls the
		driver initialization function, up_netintialize().  This
		initialization occurs after a sufficient about of the OS has been
		initialized so that driver registration can be performed, but
		before the completion of OS initialization and before the first
		application is started.

		In a few situations, however, you may want to suppress this early
		network driver initialization.  As examples:

			- If you are using SLIP or PPPD, then there will be no network
			  driver to be initialized,
			- Certain multi-network configurations where a simple call to
			  up_netinitialize() may be insufficient, and
			- Situations where there are other board-level hardware
			  dependencies so that the hardware is not in an appropriate
			  state for up_netinitialize() to be called.

		Examples of this latter situation includes such things as network
		drivers that required some setup via an I2C I/O expander, or network
		drivers that depend on USB, SPI, I2C, PCI, serial, or other
		interfaces that may not be ready when up_netiniailize() is normally
		called.

config NET_DUMPPACKET
	bool "Enable packet dumping"
	depends on DEBUG
	default n
	---help---
		Some Ethernet MAC drivers supporting dumping of received and
		transmitted packets as a debug option.  This setting enables that
		debug option. Also needs DEBUG.

comment "External Ethernet MAC Device Support"

menuconfig NET_DM90x0
	bool "Davicom dm9000/dm9010 support"
	default n
	---help---
		References: Davicom data sheets (DM9000-DS-F03-041906.pdf,
		DM9010-DS-F01-103006.pdf) and looking at lots of other DM90x0
		drivers.

if NET_DM90x0

config DM9X_BASE
	hex "DM90x0 base address"
	default 0x0

config DM9X_IRQ
	int "DM90x0 IRQ number"
	default 0

choice
	prompt "DM90x0 bus width"
	default DM9X_BUSWIDTH16

config DM9X_BUSWIDTH8
	bool "8-bits"

config DM9X_BUSWIDTH16
	bool "16-bits"

config DM9X_BUSWIDTH32
	bool "32-bits"

endchoice # DM90x0 bus width

config DM9X_CHECKSUM
	bool "Checksum enable"
	default n

config DM9X_ETRANS
	bool "TX poll"
	default n

choice
	prompt "DM90x0 mode"
	default DM9X_MODE_AUTO

config DM9X_MODE_AUTO
	bool "Autonegotion"

config DM9X_MODE_10MHD
	bool "10BaseT half duplex"

config DM9X_MODE_10MFD
	bool "10BaseT full duplex"

config DM9X_MODE_100MHD
	bool "100BaseT half duplex"

config DM9X_MODE_100MFD
	bool "100BaseT full duplex"

endchoice # DM90x0 mode

config DM9X_NINTERFACES
	int "Nubmer of DM90x0 interfaces"
	default 1
	depends on EXPERIMENTAL

config DM9X_STATS
	bool "DM90x0 statistics"
	default n

endif #  NET_DM90x0

config NET_CS89x0
	bool "CS89x0 support"
	default n
	depends on EXPERIMENTAL
	---help---
	Under construction -- do not use

menuconfig ENC28J60
	bool "Microchip ENC28J60 support"
	default n
	select SPI
	---help---
		References:
		ENC28J60 Data Sheet, Stand-Alone Ethernet Controller with SPI Interface,
		DS39662C, 2008 Microchip Technology Inc.

if ENC28J60

config ENC28J60_NINTERFACES
	int "Number of physical ENC28J60"
	default 1
	range 1,1
	---help---
		Specifies the number of physical ENC28J60
		devices that will be supported.

config ENC28J60_SPIMODE
	int "SPI mode"
	default 0
	---help---
		Controls the SPI mode.  The ENC28J60 spec says that it supports SPI
		mode 0,0 only: "The implementation used on this device supports SPI
		mode 0,0 only. In addition, the SPI port requires that SCK be at Idle
		in a low state; selectable clock polarity is not supported."
		However, sometimes you need to tinker with these things.

config ENC28J60_FREQUENCY
	int "SPI frequency"
	default 20000000
	---help---
		Define to use a different bus frequency

config ENC28J60_STATS
	bool "Network statistics support"
	default n
	---help---
		Collect network statistics

config ENC28J60_HALFDUPPLEX
	bool "Enable half dupplex"
	default n
	---help---
		Default is full duplex

config ENC28J60_DUMPPACKET
	bool "Dump Packets"
	default n
	---help---
		If selected, the ENC28J60 driver  will dump the contents of each
		packet to the console.

config ENC28J60_REGDEBUG
	bool "Register-Level Debug"
	default n
	depends on DEBUG && DEBUG_NET
	---help---
		Enable very low-level register access debug.  Depends on DEBUG and DEBUG_NET.

endif # ENC28J60

menuconfig ENCX24J600
	bool "Microchip ENCX24J600 support"
	default n
	select SPI
	select NET_RXAVAIL
	---help---
		References:
		ENC424J600/624J600 Data Sheet Stand-Alone 10/100 Ethernet Controller
		with SPI or Parallel Interface DS39935B, 2009 Microchip Technology Inc.

if ENCX24J600

config ENC28J60_NINTERFACES
	int "Number of physical ENCX24J600"
	default 1
	range 1,1
	---help---
		Specifies the number of physical ENCX24J600
		devices that will be supported.

config ENCX24J600_SPIMODE
	int "SPI mode"
	default 0
	---help---
		Controls the SPI mode.  The ENCX24J600 spec says that it supports SPI
		mode 0,0 only: "The implementation used on this device supports SPI
		mode 0,0 only. In addition, the SPI port requires that SCK be at Idle
		in a low state; selectable clock polarity is not supported."
		However, sometimes you need to tinker with these things.

config ENCX24J600_FREQUENCY
	int "SPI frequency"
	default 14000000
	---help---
		Define to use a different bus frequency

config ENCX24J600_NRXDESCR
	int "Descriptor Count"
	default 8
	---help---
		Defines how many descriptors are preallocated for the
		transmission and reception queues.
		The ENC has a relative large packet buffer of 24kB which can
		be used to buffer multiple packets silmutaneously

config ENCX24J600_STATS
	bool "Network statistics support"
	default n
	---help---
		Collect network statistics

config ENCX24J600_DUMPPACKET
	bool "Dump Packets"
	default n
	---help---
		If selected, the ENCX24J600 driver  will dump the contents of each
		packet to the console.

config ENCX24J600_REGDEBUG
	bool "Register-Level Debug"
	default n
	depends on DEBUG && DEBUG_NET
	---help---
		Enable very low-level register access debug.  Depends on DEBUG and DEBUG_NET.

endif # ENCX24J600

menuconfig NET_E1000
	bool "E1000 support"
	default n

if NET_E1000

config E1000_N_TX_DESC
	int "Number of TX descriptors"
	default 128

config E1000_N_RX_DESC
	int "Number of RX descriptors"
	default 128

config E1000_BUFF_SIZE
	int "Buffer size"
	default 2048

endif # NET_E1000

menuconfig NET_SLIP
	bool "SLIP (serial line) support"
	default n
	---help---
		Reference: RFC 1055

if NET_SLIP

config NET_SLIP_STACKSIZE
	int "Daemon stack size"
	default 2048
	---help---
		Provides the stack size for SLIP RX and TX.

config NET_SLIP_DEFPRIO
	int "Daemon priority"
	default 128
	---help---
		Provides the priority for SLIP RX and TX threads.

config NET_SLIP_MTU
	int "Packet size (MTU)"
	default 296
	---help---
		Provides the size of the SLIP packet buffers.

		The Linux slip module hard-codes its MTU size to 296 (40 bytes for
		the IP+TPC headers plus 256 bytes of data).  So you might as well
		set CONFIG_NET_SLIP_MTU to 296 as well.

		There may be an issue with this setting, however.  I see that Linux
		uses a MTU of 296 and window of 256, but actually only sends 168
		bytes of data: 40 + 128.  I believe that is to allow for the 2x
		worst cast packet expansion.  Ideally we would like to advertise the
		256 MSS, but restrict transfers to 128 bytes (possibly by modifying
		the tcp_mss() macro).

config NET_SLIP_NINTERFACES
	int "Number of SLIP interfaces"
	default 1
	---help---
		Determines the number of physical interfaces that will be supported.

endif

menuconfig NET_FTMAC100
	bool "Faraday 10/100 Ethernet"
	default n
	---help---
		Faraday 10/100 Ethernet support.

if NET_FTMAC100

config FTMAC100_BASE
	hex "FTMAC100 base address"
	default 0x0

config FTMAC100_IRQ
	int "FTMAC100 IRQ number"
	default 0

config FTMAC100_RX_DESC
	int "Number of RX descriptors"
	default 64

config FTMAC100_TX_DESC
	int "Number of TX descriptors"
	default 32

config FTMAC100_MAC0_ENV_ADDR
	hex "MAC0 address location"
	default 0

endif # NET_FTMAC100

menuconfig NET_VNET
	bool "VNET support"
	default n

if NET_VNET

config VNET_NINTERFACES
	int "Number of VNET interfaces"
	default 1

endif # NET_VNET

if ARCH_HAVE_PHY

comment "External Ethernet PHY Device Support"

config ARCH_PHY_INTERRUPT
	bool
	default n

choice
	prompt "Board PHY Selection (ETH0)"
	default ETH0_PHY_NONE
	---help---
		Identify the PHY on your board.  This setting is not used by all Ethernet
		drivers nor do all Ethernet drivers support all PHYs.

config ETH0_PHY_NONE
	bool "No PHY support"

config ETH0_PHY_AM79C874
	bool "AMD Am79C874 PHY"

config ETH0_PHY_KS8721
	bool "Micrel KS8721 PHY"

config ETH0_PHY_KSZ8041
	bool "Micrel KSZ8041 PHY"

config ETH0_PHY_KSZ8051
	bool "Micrel KSZ8051 PHY"

config ETH0_PHY_KSZ8061
	bool "Micrel KSZ8061 PHY"

config ETH0_PHY_KSZ8081
	bool "Micrel KSZ8081 PHY"

config ETH0_PHY_KSZ90x1
	bool "Micrel KSZ9021/31 PHY"

config ETH0_PHY_DP83848C
	bool "National Semiconduction DP83848C PHY"

config ETH0_PHY_LAN8720
	bool "SMSC LAN8720 PHY"

config ETH0_PHY_LAN8740
	bool "SMSC LAN8740 PHY"

config ETH0_PHY_LAN8740A
	bool "SMSC LAN8740A PHY"

config ETH0_PHY_LAN8742A
	bool "SMSC LAN8742A PHY"

config ETH0_PHY_DM9161
	bool "Davicom DM9161 PHY"

endchoice

choice
	prompt "Board PHY Selection (ETH1)"
	default ETH1_PHY_NONE
	depends on NETDEV_MULTINIC
	---help---
		Identify the PHY on your board.  This setting is not used by all Ethernet
		drivers nor do all Ethernet drivers support all PHYs.

config ETH1_PHY_NONE
	bool "No PHY support"

config ETH1_PHY_AM79C874
	 bool "AMD Am79C874 PHY"

config ETH1_PHY_KS8721
	bool "Micrel KS8721 PHY"

config ETH1_PHY_KSZ8041
	bool "Micrel KSZ8041 PHY"

config ETH1_PHY_KSZ8051
	bool "Micrel KSZ8051 PHY"

config ETH1_PHY_KSZ8081
	bool "Micrel KSZ8081 PHY"

config ETH1_PHY_KSZ90x1
	bool "Micrel KSZ9021/31 PHY"

config ETH1_PHY_DP83848C
	bool "National Semiconduction DP83848C PHY"

config ETH1_PHY_LAN8720
	bool "SMSC LAN8720 PHY"

config ETH1_PHY_DM9161
	bool "Davicom DM9161 PHY"

endchoice

config NETDEV_PHY_DEBUG
	bool "PHY debug"
	default n
	depends on DEBUG
	---help---
		Normally debug output is controlled by DEBUG_NET.  However, that
		may generate a LOT of debug output, especially if DEBUG_VERBOSE is
		also selected.  This option is intended to force VERVOSE debug
		output from certain PHY-related even if DEBUG_NET or DEBUG_VERBOSE
		are not selected.  This allows for focused, unit-level debug of
		the NSH network initialization logic.

endif # ARCH_HAVE_PHY
