zephyr/drivers/ethernet/Kconfig.mcux
Ulf Magnusson ec3eff57e0 Kconfig: Use the first default with a satisfied condition
Up until now, Zephyr has patched Kconfig to use the last 'default' with
a satisfied condition, instead of the first one. I'm not sure why the
patch was added (it predates Kconfiglib), but I suspect it's related to
Kconfig.defconfig files.

There are at least three problems with the patch:

  1. It's inconsistent with how Kconfig works in other projects, which
     might confuse newcomers.

  2. Due to oversights, earlier 'range' properties are still preferred,
     as well as earlier 'default' properties on choices.

     In addition to being inconsistent, this makes it impossible to
     override 'range' properties and choice 'default' properties if the
     base definition of the symbol/choice already has 'range'/'default'
     properties.

     I've seen errors caused by the inconsistency, and I suspect there
     are more.

  3. A fork of Kconfiglib that adds the patch needs to be maintained.

Get rid of the patch and go back to standard Kconfig behavior, as
follows:

  1. Include the Kconfig.defconfig files first instead of last in
     Kconfig.zephyr.

  2. Include boards/Kconfig and arch/<arch>/Kconfig first instead of
     last in arch/Kconfig.

  3. Include arch/<arch>/soc/*/Kconfig first instead of last in
     arch/<arch>/Kconfig.

  4. Swap a few other 'source's to preserve behavior for some scattered
     symbols with multiple definitions.

     Swap 'source's in some no-op cases too, where it might match the
     intent.

  5. Reverse the defaults on symbol definitions that have more than one
     default.

     Skip defaults that are mutually exclusive, e.g. where each default
     has an 'if <some board>' condition. They are already safe.

  6. Remove the prefer-later-defaults patch from Kconfiglib.

Testing was done with a Python script that lists all Kconfig
symbols/choices with multiple defaults, along with a whitelist of fixed
symbols. The script also verifies that there are no "unreachable"
defaults hidden by defaults without conditions

As an additional test, zephyr/.config was generated before and after the
change for several samples and checked to be identical (after sorting).

This commit includes some default-related cleanups as well:

  - Simplify some symbol definitions, e.g. where a default has 'if FOO'
    when the symbol already has 'depends on FOO'.

  - Remove some redundant 'default ""' for string symbols. This is the
    implicit default.

Piggyback fixes for swapped ranges on BT_L2CAP_RX_MTU and
BT_L2CAP_TX_MTU (caused by confusing inconsistency).

Piggyback some fixes for style nits too, e.g. unindented help texts.

Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2018-08-10 12:38:28 -07:00

149 lines
3.3 KiB
Text

# 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
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 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"
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
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
if ETH_MCUX_0_MANUAL_MAC
config ETH_MCUX_0_MAC3
hex "MAC Address Byte 3"
default 0
range 0 0xff
help
This is the byte 3 of the MAC address.
config ETH_MCUX_0_MAC4
hex "MAC Address Byte 4"
default 0
range 0 0xff
help
This is the byte 4 of the MAC address.
config ETH_MCUX_0_MAC5
hex "MAC Address Byte 5"
default 0
range 0 0xff
help
This is the byte 5 of the MAC address.
endif
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