zephyr/drivers
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
..
adc drivers: adc: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
aio drivers: aio: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
bluetooth Bluetooth: Userchan: Add missing headers 2018-08-02 19:14:19 +02:00
can drivers: can: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
clock_control clock_control: nRF5x: Fix HFSTAT and LFSTAT check 2018-08-02 01:04:46 +02:00
console native_posix: Add missing headers and function prototypes 2018-08-02 19:14:19 +02:00
counter drivers: qmsi: Fix types and u32_t/uint32_t conflicts 2018-07-18 12:32:23 -04:00
crypto drivers: crypto: Fix input len size for cbc decryption 2018-08-02 19:18:58 +02:00
display drivers: display: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
dma drivers/dma: dma_stm32f4x: use dma_slot to select peripheral 2018-07-05 11:24:59 -05:00
entropy drivers: entropy: nrf5: Fix ENTROPY_BUSYWAIT implementation 2018-08-10 15:16:18 +02:00
ethernet Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
flash Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
gpio Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
grove drivers: grove: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
i2c Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
i2s drivers: i2c: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
ieee802154 Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
interrupt_controller ioapic: IOREGSEL register needs to be treated as 32 bits 2018-07-24 09:04:05 -04:00
ipm drivers: ipm: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
led Kconfig: Clean up some symbol definitions 2018-08-01 12:47:17 -04:00
led_strip drivers: led_strip: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
modem boards: arm: nrf52840_pca10056: add settings for WNC-M14A2A modem 2018-08-06 10:43:46 +03:00
net drivers: slip: Add LLDP support 2018-08-08 09:53:24 +03:00
pci drivers: pci: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
pinmux drivers/pinmux: stm32 fix ports_enable array definition 2018-07-31 09:45:39 -05:00
ptp_clock drivers: ptp_clock: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
pwm drivers: add i.MX PWM driver 2018-07-17 16:08:22 -05:00
rtc drivers: rtc: Kconfig: Remove redundant 'default n' properties 2018-07-03 17:11:31 -04:00
sensor Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
serial drivers: serial: uart_sam: Fix typo in param name. 2018-08-08 07:54:46 -05:00
spi Kconfig: Use the first default with a satisfied condition 2018-08-10 12:38:28 -07:00
timer native_posix: Add missing headers and function prototypes 2018-08-02 19:14:19 +02:00
usb usb_dc_stm32: Fix FS mode 2018-07-24 22:27:17 -04:00
watchdog drivers: watchdog: nrfx: Remove false dependency on CLOCK_CONTROL_NRF5 2018-08-08 17:23:55 +02:00
wifi drivers: wifi: simplelink: enable Fast Connect policy 2018-07-26 13:57:34 +03:00
CMakeLists.txt drivers: modem: add modem receiver (tty) driver 2018-08-06 10:43:46 +03:00
Kconfig drivers: modem: add modem receiver (tty) driver 2018-08-06 10:43:46 +03:00