# Kconfig - ETH_MCUX Ethernet driver configuration options

# Copyright (c) 2016-2017 ARM Ltd
#
# SPDX-License-Identifier: Apache-2.0

menuconfig ETH_MCUX
	bool
	prompt "MCUX Ethernet driver"
	depends on NET_L2_ETHERNET && HAS_MCUX
	default n
	help
	  Enable MCUX Ethernet driver.  Note, this driver performs one shot PHY
	  setup.  There is no support for PHY disconnect, reconnect or
	  configuration change.

if ETH_MCUX
config ETH_MCUX_PROMISCUOUS_MODE
	bool "Enable promiscuous mode"
	default n
	help
	  Place the Ethernet receiver in promiscuous mode. This may be useful
	  for debugging and not needed for normal work.

config ETH_MCUX_PHY_TICK_MS
	int "PHY poll period (ms)"
	default 1000
	range 100 30000
	help
	  Set the PHY status polling period.

config ETH_MCUX_PHY_EXTRA_DEBUG
	bool "Enable additional detailed PHY debug"
	default n
	help
	  Enable additional PHY related debug information related to
	  PHY status polling.

config ETH_MCUX_RX_BUFFERS
	int "Number of MCUX RX buffers"
	depends on ETH_MCUX
	default 2
	range 1 16
	help
	  Set the number of RX buffers provided to the MCUX driver.

config ETH_MCUX_TX_BUFFERS
	int "Number of MCUX TX buffers"
	depends on ETH_MCUX
	default 2
	range 1 16
	help
	  Set the number of TX buffers provided to the MCUX driver.

config ETH_MCUX_0
	bool "MCUX Ethernet port 0"
	default n
	help
	 Include port 0 driver

config ETH_MCUX_0_NAME
	string "Driver name"
	depends on ETH_MCUX_0
	default "ETH_0"

config ETH_MCUX_0_IRQ_PRI
	int "Controller interrupt priority"
	depends on ETH_MCUX_0
	default 0
	help
	  IRQ priority

config ETH_MCUX_0_RANDOM_MAC
	bool "Random MAC address"
	depends on ETH_MCUX_0 && ENTROPY_GENERATOR
	default y
	help
	  Generate a random MAC address dynamically.

if ETH_MCUX_0 && ! ETH_MCUX_0_RANDOM_MAC

config ETH_MCUX_0_MAC3
	hex "MAC Address Byte 3"
	default 0
	range 0 ff
	help
	  This is the byte 3 of the MAC address.

config ETH_MCUX_0_MAC4
	hex "MAC Address Byte 4"
	default 0
	range 0 ff
	help
	  This is the byte 4 of the MAC address.

config ETH_MCUX_0_MAC5
	hex "MAC Address Byte 5"
	default 0
	range 0 ff
	help
	  This is the byte 5 of the MAC address.
endif
endif
