# 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 && RANDOM_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
