# 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 if !NET_IPV6
	default y if NET_IPV6
	help
	  Place the ethernet receiver in promiscuous mode.

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
