#
# 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_LOOPBACK
	bool
	default n if !NET_LOOPBACK
	default y if NET_LOOPBACK
	select NET_NOINTS
	select ARCH_HAVE_NETDEV_STATISTICS
	---help---
		Add support for the local network loopback device, lo.  Any additional
		networking devices that are enabled must be compatible with
		CONFIG_NET_NOINTS.

config NETDEV_TELNET
	bool "Telnet driver"
	default n
	depends on NET && NET_TCP
	---help---
		The Telnet driver generates a character driver instance to support a
		Telnet session.  This driver is used by the Telnet daemon.  The
		Telnet daeman will instantiate a new Telnet driver to support
		standard I/O on the new Telnet session.

if NETDEV_TELNET

config TELNET_RXBUFFER_SIZE
	int "Telnet RX buffer size"
	default 256

config TELNET_TXBUFFER_SIZE
	int "Telnet TX buffer size"
	default 256

config TELNET_DUMPBUFFER
	bool "Dump Telnet buffers"
	default n
	depends on DEBUG_NET

endif # NETDEV_TELNET

config NETDEV_MULTINIC
	bool "Multiple network interface support"
	default n if !NETDEV_LOOPBACK
	default y if NETDEV_LOOPBACK
	---help---
		Select this option if you board and/or MCU are capable of supporting
		multiple link layer drivers.  NOTE that the local loopback device
		is considered to be a a link layer driver so if local loopback
		support is used you probably need to select this option.

config ARCH_HAVE_NETDEV_STATISTICS
	bool
	default n

config NETDEV_STATISTICS
	bool "Network device driver statistics"
	depends on NET_STATISTICS && ARCH_HAVE_NETDEV_STATISTICS
	---help---
		Enable to collect statistics from the network drivers (if supported
		by the network driver).

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
	select ARCH_HAVE_NETDEV_STATISTICS
	---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

endif # NET_DM90x0

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

menuconfig ENC28J60
	bool "Microchip ENC28J60 support"
	default n
	select SPI
	select ARCH_HAVE_NETDEV_STATISTICS
	---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_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
	select ARCH_HAVE_NETDEV_STATISTICS
	---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_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
	select ARCH_HAVE_NETDEV_STATISTICS
	---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_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
