# 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 false if !NET_IPV6
	default true 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
