# Kconfig - ETH_MCUX Ethernet driver configuration options

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

menuconfig ETH_MCUX
	bool "MCUX Ethernet driver"
	depends on HAS_MCUX_ENET
	select NOCACHE_MEMORY if HAS_MCUX_CACHE
	select ARM_MPU if CPU_CORTEX_M7
	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"
	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"
	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 1
	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 1
	range 1 16
	help
	  Set the number of TX buffers provided to the MCUX driver.

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

choice ETH_MCUX_0_MAC_SELECT
	prompt "MAC address"
	help
	  Choose how to configure MAC address.

config ETH_MCUX_0_UNIQUE_MAC
	bool "Stable MAC address"
	help
	  Generate MAC address from MCU's unique identification register.

config ETH_MCUX_0_RANDOM_MAC
	bool "Random MAC address"
	help
	  Generate a random MAC address dynamically on each reboot.
	  Note that using this choice and rebooting a board may leave
	  stale MAC address in peers' ARP caches and lead to issues and
	  delays in communication. (Use "ip neigh flush all" on Linux
	  peers to clear ARP cache.)

config ETH_MCUX_0_MANUAL_MAC
	bool "Manual MAC address"

endchoice

config PTP_CLOCK_MCUX
	bool "MCUX PTP clock driver support"
	default y
	depends on PTP_CLOCK && NET_PKT_TIMESTAMP
	help
	  Enable MCUX PTP clock support.

if PTP_CLOCK_MCUX

config ETH_MCUX_PTP_RX_BUFFERS
	int "Size of the RX timestamp ring buffer"
	default 10
	help
	  Set the number of RX buffers provided to the MCUX driver
	  to store timestamps.

config ETH_MCUX_PTP_TX_BUFFERS
	int "Size of the TX timestamp ring buffer"
	default 10
	help
	  Set the number of TX buffers provided to the MCUX driver
	  to store timestamps.

config ETH_MCUX_PTP_CLOCK_SRC_HZ
	int "Frequency of the clock source for the PTP timer"
	default 50000000
	help
	  Set the frequency in Hz sourced to the PTP timer.
	  If the value is set properly, the timer will be accurate.

endif # PTP_CLOCK_MCUX

endif # ETH_MCUX
