2020-04-17 20:08:50

by Saeed Mahameed

[permalink] [raw]
Subject: [RFC PATCH v2 1/3] Kconfig: Introduce "uses" keyword

Due to the changes to the semantics of the imply keyword [1], which now
will not force any config options to the implied configs any more.

A module (FOO) that has a weak dependency on some other modules (BAR)
is now broken if it was using imply to force dependency restrictions.
e.g.: FOO needs BAR to be reachable, especially when FOO=y and BAR=m.
Which might now introduce build/link errors.

There are two options to solve this:
1. use IS_REACHABLE(BAR), everywhere BAR is referenced inside FOO.
2. in FOO's Kconfig add: depends on (BAR || !BAR)

The first option is not desirable, and will leave the user confused when
setting FOO=y and BAR=m, FOO will never reach BAR even though both are
compiled.

The 2nd one is the preferred approach, and will guarantee BAR is always
reachable by FOO if both are compiled. But, (BAR || !BAR) is really
confusing for those who don't really get how kconfig tristate arithmetics
work.

To solve this and hide this weird expression and to avoid repetition
across the tree, we introduce new keyword "uses" to the Kconfig options
family.

uses BAR:
Equivalent to: depends on symbol || !symbol
Semantically it means, if FOO is enabled (y/m) and has the option:
uses BAR, make sure it can reach/use BAR when possible.

For example: if FOO=y and BAR=m, FOO will be forced to m.

[1] https://lore.kernel.org/linux-doc/[email protected]/

Link: https://lkml.org/lkml/2020/4/8/839
Signed-off-by: Saeed Mahameed <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: [email protected]
Cc: [email protected]
---

V2: - Fix double free due to single allocation of sym expr.
- Added a 3rd patch to convert to new keyword treewide.

Documentation/kbuild/kconfig-language.rst | 10 ++++++++++
scripts/kconfig/expr.h | 1 +
scripts/kconfig/lexer.l | 1 +
scripts/kconfig/menu.c | 4 +++-
scripts/kconfig/parser.y | 16 ++++++++++++++++
scripts/kconfig/symbol.c | 2 ++
6 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
index a1601ec3317b..8db8c2d80794 100644
--- a/Documentation/kbuild/kconfig-language.rst
+++ b/Documentation/kbuild/kconfig-language.rst
@@ -130,6 +130,16 @@ applicable everywhere (see syntax).
bool "foo"
default y

+- uses dependencies: "uses" <symbol>
+
+ Equivalent to: depends on symbol || !symbol
+ Semantically it means, if FOO is enabled (y/m) and has the option:
+ uses BAR, make sure it can reach/use BAR when possible.
+ For example: if FOO=y and BAR=m, FOO will be forced to m.
+
+ Note:
+ To understand how (symbol || !symbol) is actually computed, please see `Menu dependencies`_
+
- reverse dependencies: "select" <symbol> ["if" <expr>]

While normal dependencies reduce the upper limit of a symbol (see
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index 5c3443692f34..face672fb4b4 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -185,6 +185,7 @@ enum prop_type {
P_CHOICE, /* choice value */
P_SELECT, /* select BAR */
P_IMPLY, /* imply BAR */
+ P_USES, /* uses BAR */
P_RANGE, /* range 7..100 (for a symbol) */
P_SYMBOL, /* where a symbol is defined */
};
diff --git a/scripts/kconfig/lexer.l b/scripts/kconfig/lexer.l
index 6354c905b006..c6a0017b10d4 100644
--- a/scripts/kconfig/lexer.l
+++ b/scripts/kconfig/lexer.l
@@ -102,6 +102,7 @@ n [A-Za-z0-9_-]
"default" return T_DEFAULT;
"defconfig_list" return T_DEFCONFIG_LIST;
"depends" return T_DEPENDS;
+"uses" return T_USES;
"endchoice" return T_ENDCHOICE;
"endif" return T_ENDIF;
"endmenu" return T_ENDMENU;
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index e436ba44c9c5..e26161b31a11 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -274,7 +274,9 @@ static void sym_check_prop(struct symbol *sym)
break;
case P_SELECT:
case P_IMPLY:
- use = prop->type == P_SELECT ? "select" : "imply";
+ case P_USES:
+ use = prop->type == P_SELECT ? "select" :
+ prop->type == P_IMPLY ? "imply" : "uses";
sym2 = prop_get_symbol(prop);
if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
prop_warn(prop,
diff --git a/scripts/kconfig/parser.y b/scripts/kconfig/parser.y
index 708b6c4b13ca..0356ecbaf87d 100644
--- a/scripts/kconfig/parser.y
+++ b/scripts/kconfig/parser.y
@@ -57,6 +57,7 @@ static struct menu *current_menu, *current_entry;
%token T_DEF_BOOL
%token T_DEF_TRISTATE
%token T_DEPENDS
+%token T_USES
%token T_ENDCHOICE
%token T_ENDIF
%token T_ENDMENU
@@ -169,6 +170,7 @@ config_option_list:
/* empty */
| config_option_list config_option
| config_option_list depends
+ | config_option_list uses
| config_option_list help
;

@@ -261,6 +263,7 @@ choice_option_list:
/* empty */
| choice_option_list choice_option
| choice_option_list depends
+ | choice_option_list uses
| choice_option_list help
;

@@ -360,6 +363,7 @@ menu_option_list:
/* empty */
| menu_option_list visible
| menu_option_list depends
+ | menu_option_list uses
;

source_stmt: T_SOURCE T_WORD_QUOTE T_EOL
@@ -384,6 +388,7 @@ comment_stmt: comment comment_option_list
comment_option_list:
/* empty */
| comment_option_list depends
+ | comment_option_list uses
;

/* help option */
@@ -418,6 +423,17 @@ depends: T_DEPENDS T_ON expr T_EOL
printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
};

+/* uses symbol: depends on symbol || !symbol */
+uses: T_USES symbol T_EOL
+{
+ struct expr *symexpr1 = expr_alloc_symbol($2);
+ struct expr *symexpr2 = expr_alloc_symbol($2);
+
+ menu_add_dep(expr_alloc_two(E_OR, symexpr1, expr_alloc_one(E_NOT, symexpr2)));
+ printd(DEBUG_PARSE, "%s:%d: uses: depends on %s || ! %s\n",
+ zconf_curname(), zconf_lineno(), $2->name, $2->name);
+};
+
/* visibility option */
visible: T_VISIBLE if_expr T_EOL
{
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
index 3dc81397d003..422f7ea47722 100644
--- a/scripts/kconfig/symbol.c
+++ b/scripts/kconfig/symbol.c
@@ -1295,6 +1295,8 @@ const char *prop_get_type_name(enum prop_type type)
return "choice";
case P_SELECT:
return "select";
+ case P_USES:
+ return "uses";
case P_IMPLY:
return "imply";
case P_RANGE:
--
2.25.2


2020-04-17 20:09:48

by Saeed Mahameed

[permalink] [raw]
Subject: [RFC PATCH v2 2/3] net/mlx5: Kconfig: Use "uses" instead of "imply"

mlx5 uses the imply keyword to force weak dependencies on the implied
modules, to make sure they are always reachable by mlx5.

"imply" doesn't work this way any more, and it was wrong to use it in
first place.

The right solution is to use: "depends on symbol || !symbol", which is
exactly what the uses keyword is there for.

Use the new "uses" keyword to replace all mlx5 implied dependencies.

Signed-off-by: Saeed Mahameed <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
index 312e0a1ad43d..4e07179217e8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -7,10 +7,10 @@ config MLX5_CORE
tristate "Mellanox 5th generation network adapters (ConnectX series) core driver"
depends on PCI
select NET_DEVLINK
- imply PTP_1588_CLOCK
- imply VXLAN
- imply MLXFW
- imply PCI_HYPERV_INTERFACE
+ uses PTP_1588_CLOCK
+ uses VXLAN
+ uses MLXFW
+ uses PCI_HYPERV_INTERFACE
default n
---help---
Core driver for low level functionality of the ConnectX-4 and
--
2.25.2

2020-04-17 20:10:24

by Saeed Mahameed

[permalink] [raw]
Subject: [RFC PATCH v2 3/3] treewide: drivers: Convert to "uses" keyword for Kconfig weak dependencies

With the introduction of the "uses" keyword we can avoid repetition and
the explicit confusing expression statement of weak Kconfig dependencies
i.e. (FOO || !FOO).

Convert all single appearances of the above pattern treewide.

This was done via the following script: Courtesy of Arnd Bergmann.

$ git ls-files | grep Kconfig | xargs sed -i 's:depends.on.\([A-Z0-9_a-z]\+\) || \(\1 \?= \?n\|!\1\):uses \1:'

Tested only with make olddefconfig.

Signed-off-by: Saeed Mahameed <[email protected]>
Suggested-by: Arnd Bergmann <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
drivers/bluetooth/Kconfig | 4 +-
drivers/crypto/hisilicon/Kconfig | 8 +--
drivers/edac/Kconfig | 4 +-
drivers/gpu/drm/Kconfig | 2 +-
drivers/gpu/drm/bridge/Kconfig | 2 +-
drivers/gpu/drm/msm/Kconfig | 4 +-
drivers/gpu/ipu-v3/Kconfig | 2 +-
drivers/hid/Kconfig | 2 +-
drivers/hwmon/Kconfig | 14 ++---
drivers/iio/adc/Kconfig | 2 +-
drivers/infiniband/hw/i40iw/Kconfig | 2 +-
drivers/input/serio/Kconfig | 2 +-
drivers/input/touchscreen/Kconfig | 2 +-
drivers/leds/Kconfig | 6 +-
drivers/md/Kconfig | 2 +-
drivers/media/platform/Kconfig | 2 +-
drivers/media/usb/dvb-usb/Kconfig | 2 +-
drivers/media/usb/gspca/Kconfig | 2 +-
drivers/misc/Kconfig | 2 +-
drivers/net/Kconfig | 14 ++---
drivers/net/dsa/b53/Kconfig | 2 +-
drivers/net/ethernet/aquantia/Kconfig | 2 +-
drivers/net/ethernet/broadcom/Kconfig | 2 +-
drivers/net/ethernet/mellanox/mlxsw/Kconfig | 12 ++--
drivers/net/ethernet/netronome/Kconfig | 2 +-
drivers/net/phy/Kconfig | 4 +-
drivers/net/wireless/ath/wcn36xx/Kconfig | 4 +-
drivers/phy/motorola/Kconfig | 2 +-
drivers/phy/qualcomm/Kconfig | 8 +--
drivers/phy/renesas/Kconfig | 2 +-
drivers/phy/ti/Kconfig | 2 +-
drivers/pinctrl/Kconfig | 2 +-
drivers/platform/x86/Kconfig | 62 ++++++++++-----------
drivers/power/supply/Kconfig | 2 +-
drivers/remoteproc/Kconfig | 20 +++----
drivers/scsi/Kconfig | 4 +-
drivers/scsi/cxgbi/cxgb4i/Kconfig | 2 +-
drivers/scsi/qla2xxx/Kconfig | 2 +-
drivers/staging/wfx/Kconfig | 2 +-
drivers/thermal/Kconfig | 4 +-
drivers/usb/dwc2/Kconfig | 2 +-
drivers/usb/dwc3/Kconfig | 4 +-
drivers/usb/gadget/udc/Kconfig | 2 +-
drivers/usb/mtu3/Kconfig | 2 +-
drivers/usb/musb/Kconfig | 2 +-
drivers/usb/phy/Kconfig | 12 ++--
drivers/usb/renesas_usbhs/Kconfig | 2 +-
drivers/usb/typec/tcpm/Kconfig | 2 +-
drivers/watchdog/Kconfig | 4 +-
lib/crypto/Kconfig | 12 ++--
net/bluetooth/Kconfig | 2 +-
net/bridge/Kconfig | 2 +-
net/dsa/Kconfig | 2 +-
net/ipv4/Kconfig | 2 +-
net/mpls/Kconfig | 2 +-
net/netfilter/Kconfig | 24 ++++----
net/nfc/Kconfig | 2 +-
net/rds/Kconfig | 2 +-
net/sctp/Kconfig | 2 +-
net/wimax/Kconfig | 2 +-
net/wireless/Kconfig | 2 +-
sound/soc/fsl/Kconfig | 2 +-
62 files changed, 156 insertions(+), 156 deletions(-)

diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
index 4e73a531b377..c3cb5b739dd7 100644
--- a/drivers/bluetooth/Kconfig
+++ b/drivers/bluetooth/Kconfig
@@ -87,8 +87,8 @@ config BT_HCIBTSDIO

config BT_HCIUART
tristate "HCI UART driver"
- depends on SERIAL_DEV_BUS || !SERIAL_DEV_BUS
- depends on NVMEM || !NVMEM
+ uses SERIAL_DEV_BUS
+ uses NVMEM
depends on TTY
help
Bluetooth HCI UART driver.
diff --git a/drivers/crypto/hisilicon/Kconfig b/drivers/crypto/hisilicon/Kconfig
index f09c6cf7823e..89425b453aa4 100644
--- a/drivers/crypto/hisilicon/Kconfig
+++ b/drivers/crypto/hisilicon/Kconfig
@@ -27,7 +27,7 @@ config CRYPTO_DEV_HISI_SEC2
select CRYPTO_SHA256
select CRYPTO_SHA512
depends on PCI && PCI_MSI
- depends on UACCE || UACCE=n
+ uses UACCE
depends on ARM64 || (COMPILE_TEST && 64BIT)
help
Support for HiSilicon SEC Engine of version 2 in crypto subsystem.
@@ -41,7 +41,7 @@ config CRYPTO_DEV_HISI_QM
tristate
depends on ARM64 || COMPILE_TEST
depends on PCI && PCI_MSI
- depends on UACCE || UACCE=n
+ uses UACCE
help
HiSilicon accelerator engines use a common queue management
interface. Specific engine driver may use this module.
@@ -51,7 +51,7 @@ config CRYPTO_DEV_HISI_ZIP
depends on PCI && PCI_MSI
depends on ARM64 || (COMPILE_TEST && 64BIT)
depends on !CPU_BIG_ENDIAN || COMPILE_TEST
- depends on UACCE || UACCE=n
+ uses UACCE
select CRYPTO_DEV_HISI_QM
help
Support for HiSilicon ZIP Driver
@@ -59,7 +59,7 @@ config CRYPTO_DEV_HISI_ZIP
config CRYPTO_DEV_HISI_HPRE
tristate "Support for HISI HPRE accelerator"
depends on PCI && PCI_MSI
- depends on UACCE || UACCE=n
+ uses UACCE
depends on ARM64 || (COMPILE_TEST && 64BIT)
select CRYPTO_DEV_HISI_QM
select CRYPTO_DH
diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
index fe2eb892a1bd..2e065ff5c1dc 100644
--- a/drivers/edac/Kconfig
+++ b/drivers/edac/Kconfig
@@ -232,7 +232,7 @@ config EDAC_SBRIDGE
config EDAC_SKX
tristate "Intel Skylake server Integrated MC"
depends on PCI && X86_64 && X86_MCE_INTEL && PCI_MMCONFIG && ACPI
- depends on ACPI_NFIT || !ACPI_NFIT # if ACPI_NFIT=m, EDAC_SKX can't be y
+ uses ACPI_NFIT # if ACPI_NFIT=m, EDAC_SKX can't be y
select DMI
select ACPI_ADXL
help
@@ -244,7 +244,7 @@ config EDAC_SKX
config EDAC_I10NM
tristate "Intel 10nm server Integrated MC"
depends on PCI && X86_64 && X86_MCE_INTEL && PCI_MMCONFIG && ACPI
- depends on ACPI_NFIT || !ACPI_NFIT # if ACPI_NFIT=m, EDAC_I10NM can't be y
+ uses ACPI_NFIT # if ACPI_NFIT=m, EDAC_I10NM can't be y
select DMI
select ACPI_ADXL
help
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 43594978958e..a009dfc20bec 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -445,7 +445,7 @@ config DRM_MGA
config DRM_SIS
tristate "SiS video cards"
depends on DRM && AGP
- depends on FB_SIS || FB_SIS=n
+ uses FB_SIS
help
Choose this option if you have a SiS 630 or compatible video
chipset. If M is selected the module will be called sis. AGP
diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index aaed2347ace9..b8a097ff3671 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -91,7 +91,7 @@ config DRM_SIL_SII8620
depends on OF
select DRM_KMS_HELPER
imply EXTCON
- depends on RC_CORE || !RC_CORE
+ uses RC_CORE
help
Silicon Image SII8620 HDMI/MHL bridge chip driver.

diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
index 6deaa7d01654..ae9a397a2e53 100644
--- a/drivers/gpu/drm/msm/Kconfig
+++ b/drivers/gpu/drm/msm/Kconfig
@@ -6,8 +6,8 @@ config DRM_MSM
depends on ARCH_QCOM || SOC_IMX5 || (ARM && COMPILE_TEST)
depends on OF && COMMON_CLK
depends on MMU
- depends on INTERCONNECT || !INTERCONNECT
- depends on QCOM_OCMEM || QCOM_OCMEM=n
+ uses INTERCONNECT
+ uses QCOM_OCMEM
select QCOM_MDT_LOADER if ARCH_QCOM
select REGULATOR
select DRM_KMS_HELPER
diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig
index 061fb990c120..e1c489144f94 100644
--- a/drivers/gpu/ipu-v3/Kconfig
+++ b/drivers/gpu/ipu-v3/Kconfig
@@ -2,7 +2,7 @@
config IMX_IPUV3_CORE
tristate "IPUv3 core support"
depends on SOC_IMX5 || SOC_IMX6Q || ARCH_MULTIPLATFORM || COMPILE_TEST
- depends on DRM || !DRM # if DRM=m, this can't be 'y'
+ uses DRM # if DRM=m, this can't be 'y'
select BITREVERSE
select GENERIC_ALLOCATOR if DRM
select GENERIC_IRQ_CHIP
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index 7c89edbd6c5a..df7728b17fa4 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -150,7 +150,7 @@ config HID_APPLEIR
config HID_ASUS
tristate "Asus"
depends on LEDS_CLASS
- depends on ASUS_WMI || ASUS_WMI=n
+ uses ASUS_WMI
select POWER_SUPPLY
---help---
Support for Asus notebook built-in keyboard and touchpad via i2c, and
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 05a30832c6ba..9416c968fdd6 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -350,7 +350,7 @@ config SENSORS_APPLESMC
config SENSORS_ARM_SCMI
tristate "ARM SCMI Sensors"
depends on ARM_SCMI_PROTOCOL
- depends on THERMAL || !THERMAL_OF
+ uses THERMAL_OF
help
This driver provides support for temperature, voltage, current
and power sensors available on SCMI based platforms. The actual
@@ -362,7 +362,7 @@ config SENSORS_ARM_SCMI
config SENSORS_ARM_SCPI
tristate "ARM SCPI Sensors"
depends on ARM_SCPI_PROTOCOL
- depends on THERMAL || !THERMAL_OF
+ uses THERMAL_OF
help
This driver provides support for temperature, voltage, current
and power sensors available on ARM Ltd's SCP based platforms. The
@@ -381,7 +381,7 @@ config SENSORS_ASB100

config SENSORS_ASPEED
tristate "ASPEED AST2400/AST2500 PWM and Fan tach driver"
- depends on THERMAL || THERMAL=n
+ uses THERMAL
select REGMAP
help
This driver provides support for ASPEED AST2400/AST2500 PWM
@@ -602,7 +602,7 @@ config SENSORS_GPIO_FAN
tristate "GPIO fan"
depends on OF_GPIO
depends on GPIOLIB || COMPILE_TEST
- depends on THERMAL || THERMAL=n
+ uses THERMAL
help
If you say yes here you get support for fans connected to GPIO lines.

@@ -975,7 +975,7 @@ config SENSORS_MAX6642
config SENSORS_MAX6650
tristate "Maxim MAX6650 sensor chip"
depends on I2C
- depends on THERMAL || THERMAL=n
+ uses THERMAL
help
If you say yes here you get support for the MAX6650 / MAX6651
sensor chips.
@@ -1289,7 +1289,7 @@ config SENSORS_PC87427
config SENSORS_NTC_THERMISTOR
tristate "NTC thermistor support from Murata"
depends on !OF || IIO=n || IIO
- depends on THERMAL || !THERMAL_OF
+ uses THERMAL_OF
help
This driver supports NTC thermistors sensor reading and its
interpretation. The driver can also monitor the temperature and
@@ -1393,7 +1393,7 @@ source "drivers/hwmon/pmbus/Kconfig"
config SENSORS_PWM_FAN
tristate "PWM fan"
depends on (PWM && OF) || COMPILE_TEST
- depends on THERMAL || THERMAL=n
+ uses THERMAL
help
If you say yes here you get support for fans connected to PWM lines.
The driver uses the generic PWM interface, thus it will work on a
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 12bb8b7ca1ff..dbdcb4380bf6 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -929,7 +929,7 @@ config SUN4I_GPADC
tristate "Support for the Allwinner SoCs GPADC"
depends on IIO
depends on MFD_SUN4I_GPADC || MACH_SUN8I
- depends on THERMAL || !THERMAL_OF
+ uses THERMAL_OF
select REGMAP_IRQ
help
Say yes here to build support for Allwinner (A10, A13 and A31) SoCs
diff --git a/drivers/infiniband/hw/i40iw/Kconfig b/drivers/infiniband/hw/i40iw/Kconfig
index e4b45f4cd8f8..a83eb0be04af 100644
--- a/drivers/infiniband/hw/i40iw/Kconfig
+++ b/drivers/infiniband/hw/i40iw/Kconfig
@@ -2,7 +2,7 @@
config INFINIBAND_I40IW
tristate "Intel(R) Ethernet X722 iWARP Driver"
depends on INET && I40E
- depends on IPV6 || !IPV6
+ uses IPV6
depends on PCI
select GENERIC_ALLOCATOR
---help---
diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig
index 373a1646019e..1dc0c792c642 100644
--- a/drivers/input/serio/Kconfig
+++ b/drivers/input/serio/Kconfig
@@ -177,7 +177,7 @@ config SERIO_SGI_IOC3

config SERIO_LIBPS2
tristate "PS/2 driver library"
- depends on SERIO_I8042 || SERIO_I8042=n
+ uses SERIO_I8042
help
Say Y here if you are using a driver for device connected
to a PS/2 port, such as PS/2 mouse or standard AT keyboard.
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index c071f7c407b6..fcc040d7ff98 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -1196,7 +1196,7 @@ config TOUCHSCREEN_SUN4I
tristate "Allwinner sun4i resistive touchscreen controller support"
depends on ARCH_SUNXI || COMPILE_TEST
depends on HWMON
- depends on THERMAL || !THERMAL_OF
+ uses THERMAL_OF
help
This selects support for the resistive touchscreen controller
found on Allwinner sunxi SoCs.
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index c664d84e1667..93acfab6789b 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -52,7 +52,7 @@ config LEDS_88PM860X
config LEDS_AAT1290
tristate "LED support for the AAT1290"
depends on LEDS_CLASS_FLASH
- depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
+ uses V4L2_FLASH_LED_CLASS
depends on GPIOLIB || COMPILE_TEST
depends on OF
depends on PINCTRL
@@ -86,7 +86,7 @@ config LEDS_APU
config LEDS_AS3645A
tristate "AS3645A and LM3555 LED flash controllers support"
depends on I2C && LEDS_CLASS_FLASH
- depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
+ uses V4L2_FLASH_LED_CLASS
help
Enable LED flash class support for AS3645A LED flash
controller. V4L2 flash API is provided as well if
@@ -646,7 +646,7 @@ config LEDS_MAX77650
config LEDS_MAX77693
tristate "LED support for MAX77693 Flash"
depends on LEDS_CLASS_FLASH
- depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
+ uses V4L2_FLASH_LED_CLASS
depends on MFD_MAX77693
depends on OF
help
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index d6d5ab23c088..86e1c999c24e 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -202,7 +202,7 @@ config BLK_DEV_DM_BUILTIN
config BLK_DEV_DM
tristate "Device mapper support"
select BLK_DEV_DM_BUILTIN
- depends on DAX || DAX=n
+ uses DAX
---help---
Device-mapper is a low level volume manager. It works by allowing
people to specify mappings for ranges of logical sectors. Various
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index e01bbb9dd1c1..ef21d74a0b7e 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -483,7 +483,7 @@ config VIDEO_QCOM_VENUS
tristate "Qualcomm Venus V4L2 encoder/decoder driver"
depends on VIDEO_DEV && VIDEO_V4L2
depends on (ARCH_QCOM && IOMMU_DMA) || COMPILE_TEST
- depends on INTERCONNECT || !INTERCONNECT
+ uses INTERCONNECT
select QCOM_MDT_LOADER if ARCH_QCOM
select QCOM_SCM if ARCH_QCOM
select VIDEOBUF2_DMA_SG
diff --git a/drivers/media/usb/dvb-usb/Kconfig b/drivers/media/usb/dvb-usb/Kconfig
index 1a3e5f965ae4..d153f50a7349 100644
--- a/drivers/media/usb/dvb-usb/Kconfig
+++ b/drivers/media/usb/dvb-usb/Kconfig
@@ -45,7 +45,7 @@ config DVB_USB_DIBUSB_MB
depends on DVB_USB
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
select DVB_DIB3000MB
- depends on DVB_DIB3000MC || !DVB_DIB3000MC
+ uses DVB_DIB3000MC
select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
help
Support for USB 1.1 and 2.0 DVB-T receivers based on reference designs made by
diff --git a/drivers/media/usb/gspca/Kconfig b/drivers/media/usb/gspca/Kconfig
index 77a360958239..79ce2ff04632 100644
--- a/drivers/media/usb/gspca/Kconfig
+++ b/drivers/media/usb/gspca/Kconfig
@@ -2,7 +2,7 @@
menuconfig USB_GSPCA
tristate "GSPCA based webcams"
depends on VIDEO_V4L2
- depends on INPUT || INPUT=n
+ uses INPUT
select VIDEOBUF2_VMALLOC
default m
help
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 99e151475d8f..43c0809cc811 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -68,7 +68,7 @@ config DUMMY_IRQ
config IBM_ASM
tristate "Device driver for IBM RSA service processor"
depends on X86 && PCI && INPUT
- depends on SERIAL_8250 || SERIAL_8250=n
+ uses SERIAL_8250
---help---
This option enables device driver support for in-band access to the
IBM RSA (Condor) service processor in eServer xSeries systems.
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index b103fbdd0f68..b7fd398a16a6 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -41,7 +41,7 @@ if NET_CORE
config BONDING
tristate "Bonding driver support"
depends on INET
- depends on IPV6 || IPV6=n
+ uses IPV6
---help---
Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet
Channels together. This is called 'Etherchannel' by Cisco,
@@ -74,7 +74,7 @@ config DUMMY
config WIREGUARD
tristate "WireGuard secure network tunnel"
depends on NET && INET
- depends on IPV6 || !IPV6
+ uses IPV6
select NET_UDP_TUNNEL
select DST_CACHE
select CRYPTO
@@ -199,7 +199,7 @@ config IPVLAN_L3S
config IPVLAN
tristate "IP-VLAN support"
depends on INET
- depends on IPV6 || !IPV6
+ uses IPV6
---help---
This allows one to create virtual devices off of a main interface
and packets will be delivered based on the dest L3 (IPv6/IPv4 addr)
@@ -246,7 +246,7 @@ config VXLAN
config GENEVE
tristate "Generic Network Virtualization Encapsulation"
depends on INET
- depends on IPV6 || !IPV6
+ uses IPV6
select NET_UDP_TUNNEL
select GRO_CELLS
---help---
@@ -262,7 +262,7 @@ config GENEVE
config BAREUDP
tristate "Bare UDP Encapsulation"
depends on INET
- depends on IPV6 || !IPV6
+ uses IPV6
select NET_UDP_TUNNEL
select GRO_CELLS
help
@@ -412,7 +412,7 @@ config NET_VRF
tristate "Virtual Routing and Forwarding (Lite)"
depends on IP_MULTIPLE_TABLES
depends on NET_L3_MASTER_DEV
- depends on IPV6 || IPV6=n
+ uses IPV6
depends on IPV6_MULTIPLE_TABLES || IPV6=n
---help---
This option enables the support for mapping interfaces into VRF's. The
@@ -566,7 +566,7 @@ config NETDEVSIM
tristate "Simulated networking device"
depends on DEBUG_FS
depends on INET
- depends on IPV6 || IPV6=n
+ uses IPV6
select NET_DEVLINK
help
This driver is a developer testing tool and software model that can
diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig
index f9891a81c808..d4b124247cda 100644
--- a/drivers/net/dsa/b53/Kconfig
+++ b/drivers/net/dsa/b53/Kconfig
@@ -32,7 +32,7 @@ config B53_MMAP_DRIVER
config B53_SRAB_DRIVER
tristate "B53 SRAB connected switch driver"
depends on B53 && HAS_IOMEM
- depends on B53_SERDES || !B53_SERDES
+ uses B53_SERDES
default ARCH_BCM_IPROC
help
Select to enable support for memory-mapped Switch Register Access
diff --git a/drivers/net/ethernet/aquantia/Kconfig b/drivers/net/ethernet/aquantia/Kconfig
index 76a44b2546ff..575ea831511f 100644
--- a/drivers/net/ethernet/aquantia/Kconfig
+++ b/drivers/net/ethernet/aquantia/Kconfig
@@ -20,7 +20,7 @@ config AQTION
tristate "aQuantia AQtion(tm) Support"
depends on PCI
depends on X86_64 || ARM64 || COMPILE_TEST
- depends on MACSEC || MACSEC=n
+ uses MACSEC
---help---
This enables the support for the aQuantia AQtion(tm) Ethernet card.

diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/broadcom/Kconfig
index 53055ce5dfd6..462331914f92 100644
--- a/drivers/net/ethernet/broadcom/Kconfig
+++ b/drivers/net/ethernet/broadcom/Kconfig
@@ -184,7 +184,7 @@ config BGMAC_PLATFORM
config SYSTEMPORT
tristate "Broadcom SYSTEMPORT internal MAC support"
depends on HAS_IOMEM
- depends on NET_DSA || !NET_DSA
+ uses NET_DSA
select MII
select PHYLIB
select FIXED_PHY
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
index f458fd1ce9f8..8642aee4f028 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
@@ -73,12 +73,12 @@ config MLXSW_SWITCHX2
config MLXSW_SPECTRUM
tristate "Mellanox Technologies Spectrum family support"
depends on MLXSW_CORE && MLXSW_PCI && NET_SWITCHDEV && VLAN_8021Q
- depends on PSAMPLE || PSAMPLE=n
- depends on BRIDGE || BRIDGE=n
- depends on IPV6 || IPV6=n
- depends on NET_IPGRE || NET_IPGRE=n
- depends on IPV6_GRE || IPV6_GRE=n
- depends on VXLAN || VXLAN=n
+ uses PSAMPLE
+ uses BRIDGE
+ uses IPV6
+ uses NET_IPGRE
+ uses IPV6_GRE
+ uses VXLAN
select GENERIC_ALLOCATOR
select PARMAN
select OBJAGG
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index a3f68a718813..246b36a9ea39 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -19,7 +19,7 @@ if NET_VENDOR_NETRONOME
config NFP
tristate "Netronome(R) NFP4000/NFP6000 NIC driver"
depends on PCI && PCI_MSI
- depends on VXLAN || VXLAN=n
+ uses VXLAN
depends on TLS && TLS_DEVICE || TLS_DEVICE=n
select NET_DEVLINK
---help---
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 3fa33d27eeba..87c8e408f32c 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -276,7 +276,7 @@ comment "MII PHY device drivers"
config SFP
tristate "SFP cage support"
depends on I2C && PHYLINK
- depends on HWMON || HWMON=n
+ uses HWMON
select MDIO_I2C

config ADIN_PHY
@@ -460,7 +460,7 @@ config MICROCHIP_T1_PHY

config MICROSEMI_PHY
tristate "Microsemi PHYs"
- depends on MACSEC || MACSEC=n
+ uses MACSEC
select CRYPTO_AES
select CRYPTO_ECB
---help---
diff --git a/drivers/net/wireless/ath/wcn36xx/Kconfig b/drivers/net/wireless/ath/wcn36xx/Kconfig
index a4b153470a2c..04ee6aa301b1 100644
--- a/drivers/net/wireless/ath/wcn36xx/Kconfig
+++ b/drivers/net/wireless/ath/wcn36xx/Kconfig
@@ -2,8 +2,8 @@
config WCN36XX
tristate "Qualcomm Atheros WCN3660/3680 support"
depends on MAC80211 && HAS_DMA
- depends on QCOM_WCNSS_CTRL || QCOM_WCNSS_CTRL=n
- depends on RPMSG || RPMSG=n
+ uses QCOM_WCNSS_CTRL
+ uses RPMSG
---help---
This module adds support for wireless adapters based on
Qualcomm Atheros WCN3660 and WCN3680 mobile chipsets.
diff --git a/drivers/phy/motorola/Kconfig b/drivers/phy/motorola/Kconfig
index 4b5e605a3daa..1ff125e33ed2 100644
--- a/drivers/phy/motorola/Kconfig
+++ b/drivers/phy/motorola/Kconfig
@@ -5,7 +5,7 @@
config PHY_CPCAP_USB
tristate "CPCAP PMIC USB PHY driver"
depends on USB_SUPPORT && IIO
- depends on USB_MUSB_HDRC || USB_MUSB_HDRC=n
+ uses USB_MUSB_HDRC
select GENERIC_PHY
select USB_PHY
help
diff --git a/drivers/phy/qualcomm/Kconfig b/drivers/phy/qualcomm/Kconfig
index 98674ed094d9..2117ea22778c 100644
--- a/drivers/phy/qualcomm/Kconfig
+++ b/drivers/phy/qualcomm/Kconfig
@@ -44,7 +44,7 @@ config PHY_QCOM_QMP
config PHY_QCOM_QUSB2
tristate "Qualcomm QUSB2 PHY Driver"
depends on OF && (ARCH_QCOM || COMPILE_TEST)
- depends on NVMEM || !NVMEM
+ uses NVMEM
select GENERIC_PHY
help
Enable this to support the HighSpeed QUSB2 PHY transceiver for USB
@@ -79,7 +79,7 @@ endif
config PHY_QCOM_USB_HS
tristate "Qualcomm USB HS PHY module"
depends on USB_ULPI_BUS
- depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
+ uses EXTCON # if EXTCON=m, this cannot be built-in
select GENERIC_PHY
help
Support for the USB high-speed ULPI compliant phy on Qualcomm
@@ -95,7 +95,7 @@ config PHY_QCOM_USB_HSIC
config PHY_QCOM_USB_HS_28NM
tristate "Qualcomm 28nm High-Speed PHY"
depends on ARCH_QCOM || COMPILE_TEST
- depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
+ uses EXTCON # if EXTCON=m, this cannot be built-in
select GENERIC_PHY
help
Enable this to support the Qualcomm Synopsys DesignWare Core 28nm
@@ -106,7 +106,7 @@ config PHY_QCOM_USB_HS_28NM
config PHY_QCOM_USB_SS
tristate "Qualcomm USB Super-Speed PHY driver"
depends on ARCH_QCOM || COMPILE_TEST
- depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
+ uses EXTCON # if EXTCON=m, this cannot be built-in
select GENERIC_PHY
help
Enable this to support the Super-Speed USB transceiver on various
diff --git a/drivers/phy/renesas/Kconfig b/drivers/phy/renesas/Kconfig
index 111bdcae775c..6d0bb0abf441 100644
--- a/drivers/phy/renesas/Kconfig
+++ b/drivers/phy/renesas/Kconfig
@@ -19,7 +19,7 @@ config PHY_RCAR_GEN3_PCIE
config PHY_RCAR_GEN3_USB2
tristate "Renesas R-Car generation 3 USB 2.0 PHY driver"
depends on ARCH_RENESAS
- depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
+ uses EXTCON # if EXTCON=m, this cannot be built-in
depends on USB_SUPPORT
select GENERIC_PHY
select USB_COMMON
diff --git a/drivers/phy/ti/Kconfig b/drivers/phy/ti/Kconfig
index 15a3bcf32308..18a8dfa07a29 100644
--- a/drivers/phy/ti/Kconfig
+++ b/drivers/phy/ti/Kconfig
@@ -95,7 +95,7 @@ config TWL4030_USB
tristate "TWL4030 USB Transceiver Driver"
depends on TWL4030_CORE && REGULATOR_TWL4030 && USB_MUSB_OMAP2PLUS
depends on USB_SUPPORT
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't 'y'
select GENERIC_PHY
select USB_PHY
help
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 834c59950d1c..9e9479b427b1 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -175,7 +175,7 @@ config PINCTRL_GEMINI
config PINCTRL_MCP23S08
tristate "Microchip MCP23xxx I/O expander"
depends on SPI_MASTER || I2C
- depends on I2C || I2C=n
+ uses I2C
select GPIOLIB
select GPIOLIB_IRQCHIP
select REGMAP_I2C if I2C
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 0ad7ad8cf8e1..dd10a0a06ac4 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -157,7 +157,7 @@ config ACER_WMI
depends on BACKLIGHT_CLASS_DEVICE
depends on SERIO_I8042
depends on INPUT
- depends on RFKILL || RFKILL = n
+ uses RFKILL
depends on ACPI_WMI
select INPUT_SPARSEKMAP
# Acer WMI depends on ACPI_VIDEO when ACPI is enabled
@@ -190,8 +190,8 @@ config ASUS_LAPTOP
select NEW_LEDS
depends on BACKLIGHT_CLASS_DEVICE
depends on INPUT
- depends on RFKILL || RFKILL = n
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses RFKILL
+ uses ACPI_VIDEO
select INPUT_SPARSEKMAP
---help---
This is a driver for Asus laptops, Lenovo SL and the Pegatron
@@ -230,9 +230,9 @@ config ASUS_WMI
depends on INPUT
depends on HWMON
depends on BACKLIGHT_CLASS_DEVICE
- depends on RFKILL || RFKILL = n
+ uses RFKILL
depends on HOTPLUG_PCI
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
select INPUT_SPARSEKMAP
select LEDS_CLASS
select NEW_LEDS
@@ -246,7 +246,7 @@ config ASUS_WMI
config ASUS_NB_WMI
tristate "Asus Notebook WMI Driver"
depends on ASUS_WMI
- depends on SERIO_I8042 || SERIO_I8042 = n
+ uses SERIO_I8042
---help---
This is a driver for newer Asus notebooks. It adds extra features
like wireless radio and bluetooth control, leds, hotkeys, backlight...
@@ -261,8 +261,8 @@ config EEEPC_LAPTOP
tristate "Eee PC Hotkey Driver"
depends on ACPI
depends on INPUT
- depends on RFKILL || RFKILL = n
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses RFKILL
+ uses ACPI_VIDEO
depends on HOTPLUG_PCI
depends on BACKLIGHT_CLASS_DEVICE
select HWMON
@@ -315,8 +315,8 @@ config DCDBAS
#
config DELL_SMBIOS
tristate "Dell SMBIOS driver"
- depends on DCDBAS || DCDBAS=n
- depends on ACPI_WMI || ACPI_WMI=n
+ uses DCDBAS
+ uses ACPI_WMI
---help---
This provides support for the Dell SMBIOS calling interface.
If you have a Dell computer you should enable this option.
@@ -354,8 +354,8 @@ config DELL_LAPTOP
tristate "Dell Laptop Extras"
depends on DMI
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
- depends on RFKILL || RFKILL = n
+ uses ACPI_VIDEO
+ uses RFKILL
depends on SERIO_I8042
depends on DELL_SMBIOS
select POWER_SUPPLY
@@ -410,7 +410,7 @@ config DELL_WMI
depends on ACPI_WMI
depends on DMI
depends on INPUT
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
depends on DELL_SMBIOS
select DELL_WMI_DESCRIPTOR
select INPUT_SPARSEKMAP
@@ -457,7 +457,7 @@ config FUJITSU_LAPTOP
depends on ACPI
depends on INPUT
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
select INPUT_SPARSEKMAP
select LEDS_CLASS
---help---
@@ -534,7 +534,7 @@ config HP_WMI
tristate "HP WMI extras"
depends on ACPI_WMI
depends on INPUT
- depends on RFKILL || RFKILL = n
+ uses RFKILL
select INPUT_SPARSEKMAP
help
Say Y here if you want to support WMI-based hotkeys on HP laptops and
@@ -574,8 +574,8 @@ config IDEAPAD_LAPTOP
depends on RFKILL && INPUT
depends on SERIO_I8042
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
- depends on ACPI_WMI || ACPI_WMI = n
+ uses ACPI_VIDEO
+ uses ACPI_WMI
select INPUT_SPARSEKMAP
help
This is a driver for Lenovo IdeaPad netbooks contains drivers for
@@ -604,8 +604,8 @@ config THINKPAD_ACPI
depends on ACPI
depends on ACPI_BATTERY
depends on INPUT
- depends on RFKILL || RFKILL = n
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses RFKILL
+ uses ACPI_VIDEO
depends on BACKLIGHT_CLASS_DEVICE
select HWMON
select NVRAM
@@ -818,7 +818,7 @@ config INTEL_MENLOW
config INTEL_OAKTRAIL
tristate "Intel Oaktrail Platform Extras"
depends on ACPI
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
depends on RFKILL && BACKLIGHT_CLASS_DEVICE && ACPI
---help---
Intel Oaktrail platform need this driver to provide interfaces to
@@ -872,7 +872,7 @@ config MSI_LAPTOP
tristate "MSI Laptop Extras"
depends on ACPI
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
depends on RFKILL
depends on INPUT && SERIO_I8042
select INPUT_SPARSEKMAP
@@ -895,7 +895,7 @@ config MSI_WMI
depends on ACPI_WMI
depends on INPUT
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
select INPUT_SPARSEKMAP
help
Say Y here if you want to support WMI-based hotkeys on MSI laptops.
@@ -937,8 +937,8 @@ config PCENGINES_APU2

config SAMSUNG_LAPTOP
tristate "Samsung Laptop driver"
- depends on RFKILL || RFKILL = n
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses RFKILL
+ uses ACPI_VIDEO
depends on BACKLIGHT_CLASS_DEVICE
select LEDS_CLASS
select NEW_LEDS
@@ -969,9 +969,9 @@ config ACPI_TOSHIBA
select NEW_LEDS
depends on BACKLIGHT_CLASS_DEVICE
depends on INPUT
- depends on SERIO_I8042 || SERIO_I8042 = n
- depends on ACPI_VIDEO || ACPI_VIDEO = n
- depends on RFKILL || RFKILL = n
+ uses SERIO_I8042
+ uses ACPI_VIDEO
+ uses RFKILL
depends on IIO
select INPUT_SPARSEKMAP
---help---
@@ -1000,7 +1000,7 @@ config ACPI_TOSHIBA
config TOSHIBA_BT_RFKILL
tristate "Toshiba Bluetooth RFKill switch support"
depends on ACPI
- depends on RFKILL || RFKILL = n
+ uses RFKILL
---help---
This driver adds support for Bluetooth events for the RFKill
switch on modern Toshiba laptops with full ACPI support and
@@ -1052,7 +1052,7 @@ config TOSHIBA_WMI
config ACPI_CMPC
tristate "CMPC Laptop Extras"
depends on ACPI && INPUT
- depends on RFKILL || RFKILL=n
+ uses RFKILL
select BACKLIGHT_CLASS_DEVICE
help
Support for Intel Classmate PC ACPI devices, including some
@@ -1063,7 +1063,7 @@ config COMPAL_LAPTOP
tristate "Compal (and others) Laptop Extras"
depends on ACPI
depends on BACKLIGHT_CLASS_DEVICE
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
depends on RFKILL
depends on HWMON
depends on POWER_SUPPLY
@@ -1103,7 +1103,7 @@ config PANASONIC_LAPTOP
config SONY_LAPTOP
tristate "Sony Laptop Extras"
depends on ACPI
- depends on ACPI_VIDEO || ACPI_VIDEO = n
+ uses ACPI_VIDEO
depends on BACKLIGHT_CLASS_DEVICE
depends on INPUT
depends on RFKILL
diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
index f3424fdce341..9ad2218b2c59 100644
--- a/drivers/power/supply/Kconfig
+++ b/drivers/power/supply/Kconfig
@@ -436,7 +436,7 @@ config CHARGER_CPCAP
config CHARGER_ISP1704
tristate "ISP1704 USB Charger Detection"
depends on USB_PHY
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
help
Say Y to enable support for USB Charger Detection with
ISP1707/ISP1704 USB transceivers.
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index fbaed079b299..b9c1c92db1bc 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -120,8 +120,8 @@ config QCOM_Q6V5_ADSP
depends on OF && ARCH_QCOM
depends on QCOM_SMEM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
- depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
- depends on QCOM_SYSMON || QCOM_SYSMON=n
+ uses RPMSG_QCOM_GLINK_SMEM
+ uses QCOM_SYSMON
select MFD_SYSCON
select QCOM_MDT_LOADER
select QCOM_Q6V5_COMMON
@@ -135,8 +135,8 @@ config QCOM_Q6V5_MSS
depends on OF && ARCH_QCOM
depends on QCOM_SMEM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
- depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
- depends on QCOM_SYSMON || QCOM_SYSMON=n
+ uses RPMSG_QCOM_GLINK_SMEM
+ uses QCOM_SYSMON
select MFD_SYSCON
select QCOM_MDT_LOADER
select QCOM_Q6V5_COMMON
@@ -152,8 +152,8 @@ config QCOM_Q6V5_PAS
depends on OF && ARCH_QCOM
depends on QCOM_SMEM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
- depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
- depends on QCOM_SYSMON || QCOM_SYSMON=n
+ uses RPMSG_QCOM_GLINK_SMEM
+ uses QCOM_SYSMON
select MFD_SYSCON
select QCOM_MDT_LOADER
select QCOM_Q6V5_COMMON
@@ -169,8 +169,8 @@ config QCOM_Q6V5_WCSS
depends on OF && ARCH_QCOM
depends on QCOM_SMEM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
- depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
- depends on QCOM_SYSMON || QCOM_SYSMON=n
+ uses RPMSG_QCOM_GLINK_SMEM
+ uses QCOM_SYSMON
select MFD_SYSCON
select QCOM_MDT_LOADER
select QCOM_Q6V5_COMMON
@@ -202,9 +202,9 @@ config QCOM_WCNSS_PIL
tristate "Qualcomm WCNSS Peripheral Image Loader"
depends on OF && ARCH_QCOM
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
- depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
+ uses RPMSG_QCOM_GLINK_SMEM
depends on QCOM_SMEM
- depends on QCOM_SYSMON || QCOM_SYSMON=n
+ uses QCOM_SYSMON
select QCOM_MDT_LOADER
select QCOM_RPROC_COMMON
select QCOM_SCM
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 17feff174f57..86cf1b5aaf0f 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1155,8 +1155,8 @@ config SCSI_LPFC
tristate "Emulex LightPulse Fibre Channel Support"
depends on PCI && SCSI
depends on SCSI_FC_ATTRS
- depends on NVME_TARGET_FC || NVME_TARGET_FC=n
- depends on NVME_FC || NVME_FC=n
+ uses NVME_TARGET_FC
+ uses NVME_FC
select CRC_T10DIF
---help---
This lpfc driver supports the Emulex LightPulse
diff --git a/drivers/scsi/cxgbi/cxgb4i/Kconfig b/drivers/scsi/cxgbi/cxgb4i/Kconfig
index d1f1baba3285..69daae0fff1f 100644
--- a/drivers/scsi/cxgbi/cxgb4i/Kconfig
+++ b/drivers/scsi/cxgbi/cxgb4i/Kconfig
@@ -2,7 +2,7 @@
config SCSI_CXGB4_ISCSI
tristate "Chelsio T4 iSCSI support"
depends on PCI && INET && (IPV6 || IPV6=n)
- depends on THERMAL || !THERMAL
+ uses THERMAL
depends on ETHERNET
select NET_VENDOR_CHELSIO
select CHELSIO_T4
diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
index 764501838e21..909d4213d947 100644
--- a/drivers/scsi/qla2xxx/Kconfig
+++ b/drivers/scsi/qla2xxx/Kconfig
@@ -3,7 +3,7 @@ config SCSI_QLA_FC
tristate "QLogic QLA2XXX Fibre Channel Support"
depends on PCI && SCSI
depends on SCSI_FC_ATTRS
- depends on NVME_FC || !NVME_FC
+ uses NVME_FC
select FW_LOADER
select BTREE
---help---
diff --git a/drivers/staging/wfx/Kconfig b/drivers/staging/wfx/Kconfig
index 83ee4d0ca8c6..cc2dadfbf0b7 100644
--- a/drivers/staging/wfx/Kconfig
+++ b/drivers/staging/wfx/Kconfig
@@ -1,7 +1,7 @@
config WFX
tristate "Silicon Labs wireless chips WF200 and further"
depends on MAC80211
- depends on MMC || !MMC # do not allow WFX=y if MMC=m
+ uses MMC # do not allow WFX=y if MMC=m
depends on (SPI || MMC)
help
This is a driver for Silicons Labs WFxxx series (WF200 and further)
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 91af271e9bb0..c53ec95afdef 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -243,7 +243,7 @@ config HISI_THERMAL
config IMX_THERMAL
tristate "Temperature sensor driver for Freescale i.MX SoCs"
depends on ARCH_MXC || COMPILE_TEST
- depends on NVMEM || !NVMEM
+ uses NVMEM
depends on MFD_SYSCON
depends on OF
help
@@ -396,7 +396,7 @@ config MTK_THERMAL
tristate "Temperature sensor driver for mediatek SoCs"
depends on ARCH_MEDIATEK || COMPILE_TEST
depends on HAS_IOMEM
- depends on NVMEM || NVMEM=n
+ uses NVMEM
depends on RESET_CONTROLLER
default y
help
diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig
index 16e1aa304edc..717794bf28ad 100644
--- a/drivers/usb/dwc2/Kconfig
+++ b/drivers/usb/dwc2/Kconfig
@@ -57,7 +57,7 @@ endchoice
config USB_DWC2_PCI
tristate "DWC2 PCI"
depends on USB_PCI
- depends on USB_GADGET || !USB_GADGET
+ uses USB_GADGET
select NOP_USB_XCEIV
help
The Designware USB2.0 PCI interface module for controllers
diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index 206caa0ea1c6..41b7bfc56bbf 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -55,7 +55,7 @@ comment "Platform Glue Driver Support"
config USB_DWC3_OMAP
tristate "Texas Instruments OMAP5 and similar Platforms"
depends on ARCH_OMAP2PLUS || COMPILE_TEST
- depends on EXTCON || !EXTCON
+ uses EXTCON
depends on OF
default USB_DWC3
help
@@ -128,7 +128,7 @@ config USB_DWC3_ST
config USB_DWC3_QCOM
tristate "Qualcomm Platform"
depends on ARCH_QCOM || COMPILE_TEST
- depends on EXTCON || !EXTCON
+ uses EXTCON
depends on (OF || ACPI)
default USB_DWC3
help
diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig
index 3a7179e90f4e..4ab9c120ac0c 100644
--- a/drivers/usb/gadget/udc/Kconfig
+++ b/drivers/usb/gadget/udc/Kconfig
@@ -276,7 +276,7 @@ config USB_SNP_CORE
config USB_SNP_UDC_PLAT
tristate "Synopsys USB 2.0 Device controller"
depends on USB_GADGET && OF && HAS_DMA
- depends on EXTCON || EXTCON=n
+ uses EXTCON
select USB_SNP_CORE
default ARCH_BCM_IPROC
help
diff --git a/drivers/usb/mtu3/Kconfig b/drivers/usb/mtu3/Kconfig
index bf98fd36341d..ca299de89485 100644
--- a/drivers/usb/mtu3/Kconfig
+++ b/drivers/usb/mtu3/Kconfig
@@ -6,7 +6,7 @@ config USB_MTU3
tristate "MediaTek USB3 Dual Role controller"
depends on USB || USB_GADGET
depends on ARCH_MEDIATEK || COMPILE_TEST
- depends on EXTCON || !EXTCON
+ uses EXTCON
select USB_XHCI_MTK if USB_SUPPORT && USB_XHCI_HCD
help
Say Y or M here if your system runs on MediaTek SoCs with
diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
index 3b0d1c20ebe6..6e90462f258c 100644
--- a/drivers/usb/musb/Kconfig
+++ b/drivers/usb/musb/Kconfig
@@ -91,7 +91,7 @@ config USB_MUSB_TUSB6010
config USB_MUSB_OMAP2PLUS
tristate "OMAP2430 and onwards"
depends on ARCH_OMAP2PLUS && USB
- depends on OMAP_CONTROL_PHY || !OMAP_CONTROL_PHY
+ uses OMAP_CONTROL_PHY
select GENERIC_PHY

config USB_MUSB_AM35X
diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
index 4b3fa78995cf..4270bce85eda 100644
--- a/drivers/usb/phy/Kconfig
+++ b/drivers/usb/phy/Kconfig
@@ -23,7 +23,7 @@ config AB8500_USB
config FSL_USB2_OTG
tristate "Freescale USB OTG Transceiver Driver"
depends on USB_EHCI_FSL && USB_FSL_USB2 && USB_OTG_FSM=y && PM
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
select USB_PHY
help
Enable this to support Freescale USB OTG transceiver.
@@ -32,7 +32,7 @@ config ISP1301_OMAP
tristate "Philips ISP1301 with OMAP OTG"
depends on I2C && ARCH_OMAP_OTG
depends on USB
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
select USB_PHY
help
If you say yes here you get support for the Philips ISP1301
@@ -55,7 +55,7 @@ config KEYSTONE_USB_PHY

config NOP_USB_XCEIV
tristate "NOP USB Transceiver Driver"
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, NOP can't be built-in
+ uses USB_GADGET # if USB_GADGET=m, NOP can't be built-in
select USB_PHY
help
This driver is to be used by all the usb transceiver which are either
@@ -91,7 +91,7 @@ config TWL6030_USB
config USB_GPIO_VBUS
tristate "GPIO based peripheral-only VBUS sensing 'transceiver'"
depends on GPIOLIB || COMPILE_TEST
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
select USB_PHY
help
Provides simple GPIO VBUS sensing for controllers with an
@@ -112,7 +112,7 @@ config OMAP_OTG
config TAHVO_USB
tristate "Tahvo USB transceiver driver"
depends on MFD_RETU
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
select USB_PHY
help
Enable this to support USB transceiver on Tahvo. This is used
@@ -141,7 +141,7 @@ config USB_ISP1301
config USB_MV_OTG
tristate "Marvell USB OTG support"
depends on USB_EHCI_MV && USB_MV_UDC && PM && USB_OTG
- depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y'
+ uses USB_GADGET # if USB_GADGET=m, this can't be 'y'
select USB_PHY
help
Say Y here if you want to build Marvell USB OTG transciever
diff --git a/drivers/usb/renesas_usbhs/Kconfig b/drivers/usb/renesas_usbhs/Kconfig
index d6b3fef3e55b..d9313450c81b 100644
--- a/drivers/usb/renesas_usbhs/Kconfig
+++ b/drivers/usb/renesas_usbhs/Kconfig
@@ -7,7 +7,7 @@ config USB_RENESAS_USBHS
tristate 'Renesas USBHS controller'
depends on USB_GADGET
depends on ARCH_RENESAS || SUPERH || COMPILE_TEST
- depends on EXTCON || !EXTCON # if EXTCON=m, USBHS cannot be built-in
+ uses EXTCON # if EXTCON=m, USBHS cannot be built-in
help
Renesas USBHS is a discrete USB host and peripheral controller chip
that supports both full and high speed USB 2.0 data transfers.
diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig
index 5b986d6c801d..9b50593559c5 100644
--- a/drivers/usb/typec/tcpm/Kconfig
+++ b/drivers/usb/typec/tcpm/Kconfig
@@ -32,7 +32,7 @@ endif # TYPEC_TCPCI
config TYPEC_FUSB302
tristate "Fairchild FUSB302 Type-C chip driver"
depends on I2C
- depends on EXTCON || !EXTCON
+ uses EXTCON
help
The Fairchild FUSB302 Type-C chip driver that works with
Type-C Port Controller Manager to provide USB PD and USB
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 0663c604bd64..3f5e354515fb 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -319,7 +319,7 @@ config ZIIRAVE_WATCHDOG
config RAVE_SP_WATCHDOG
tristate "RAVE SP Watchdog timer"
depends on RAVE_SP_CORE
- depends on NVMEM || !NVMEM
+ uses NVMEM
select WATCHDOG_CORE
help
Support for the watchdog on RAVE SP device.
@@ -1216,7 +1216,7 @@ config ITCO_WDT
tristate "Intel TCO Timer/Watchdog"
depends on (X86 || IA64) && PCI
select WATCHDOG_CORE
- depends on I2C || I2C=n
+ uses I2C
select LPC_ICH if !EXPERT
select I2C_I801 if !EXPERT && I2C
---help---
diff --git a/lib/crypto/Kconfig b/lib/crypto/Kconfig
index 14c032de276e..b88ef7adeb02 100644
--- a/lib/crypto/Kconfig
+++ b/lib/crypto/Kconfig
@@ -26,7 +26,7 @@ config CRYPTO_LIB_BLAKE2S_GENERIC

config CRYPTO_LIB_BLAKE2S
tristate "BLAKE2s hash function library"
- depends on CRYPTO_ARCH_HAVE_LIB_BLAKE2S || !CRYPTO_ARCH_HAVE_LIB_BLAKE2S
+ uses CRYPTO_ARCH_HAVE_LIB_BLAKE2S
select CRYPTO_LIB_BLAKE2S_GENERIC if CRYPTO_ARCH_HAVE_LIB_BLAKE2S=n
help
Enable the Blake2s library interface. This interface may be fulfilled
@@ -52,7 +52,7 @@ config CRYPTO_LIB_CHACHA_GENERIC

config CRYPTO_LIB_CHACHA
tristate "ChaCha library interface"
- depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
+ uses CRYPTO_ARCH_HAVE_LIB_CHACHA
select CRYPTO_LIB_CHACHA_GENERIC if CRYPTO_ARCH_HAVE_LIB_CHACHA=n
help
Enable the ChaCha library interface. This interface may be fulfilled
@@ -77,7 +77,7 @@ config CRYPTO_LIB_CURVE25519_GENERIC

config CRYPTO_LIB_CURVE25519
tristate "Curve25519 scalar multiplication library"
- depends on CRYPTO_ARCH_HAVE_LIB_CURVE25519 || !CRYPTO_ARCH_HAVE_LIB_CURVE25519
+ uses CRYPTO_ARCH_HAVE_LIB_CURVE25519
select CRYPTO_LIB_CURVE25519_GENERIC if CRYPTO_ARCH_HAVE_LIB_CURVE25519=n
help
Enable the Curve25519 library interface. This interface may be
@@ -112,7 +112,7 @@ config CRYPTO_LIB_POLY1305_GENERIC

config CRYPTO_LIB_POLY1305
tristate "Poly1305 library interface"
- depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
+ uses CRYPTO_ARCH_HAVE_LIB_POLY1305
select CRYPTO_LIB_POLY1305_GENERIC if CRYPTO_ARCH_HAVE_LIB_POLY1305=n
help
Enable the Poly1305 library interface. This interface may be fulfilled
@@ -121,8 +121,8 @@ config CRYPTO_LIB_POLY1305

config CRYPTO_LIB_CHACHA20POLY1305
tristate "ChaCha20-Poly1305 AEAD support (8-byte nonce library version)"
- depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
- depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
+ uses CRYPTO_ARCH_HAVE_LIB_CHACHA
+ uses CRYPTO_ARCH_HAVE_LIB_POLY1305
select CRYPTO_LIB_CHACHA
select CRYPTO_LIB_POLY1305

diff --git a/net/bluetooth/Kconfig b/net/bluetooth/Kconfig
index 165148c7c4ce..3ee130c770ce 100644
--- a/net/bluetooth/Kconfig
+++ b/net/bluetooth/Kconfig
@@ -6,7 +6,7 @@
menuconfig BT
tristate "Bluetooth subsystem support"
depends on NET && !S390
- depends on RFKILL || !RFKILL
+ uses RFKILL
select CRC16
select CRYPTO
select CRYPTO_SKCIPHER
diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig
index e4fb050e2078..0a4fb1076cb3 100644
--- a/net/bridge/Kconfig
+++ b/net/bridge/Kconfig
@@ -7,7 +7,7 @@ config BRIDGE
tristate "802.1d Ethernet Bridging"
select LLC
select STP
- depends on IPV6 || IPV6=n
+ uses IPV6
---help---
If you say Y here, then your Linux box will be able to act as an
Ethernet bridge, which means that the different Ethernet segments it
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
index 92663dcb3aa2..2ca052a59a52 100644
--- a/net/dsa/Kconfig
+++ b/net/dsa/Kconfig
@@ -8,7 +8,7 @@ config HAVE_NET_DSA
menuconfig NET_DSA
tristate "Distributed Switch Architecture"
depends on HAVE_NET_DSA
- depends on BRIDGE || BRIDGE=n
+ uses BRIDGE
select NET_SWITCHDEV
select PHYLINK
select NET_DEVLINK
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index 25a8888826b8..d173c882ddf1 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -303,7 +303,7 @@ config SYN_COOKIES

config NET_IPVTI
tristate "Virtual (secure) IP: tunneling"
- depends on IPV6 || IPV6=n
+ uses IPV6
select INET_TUNNEL
select NET_IP_TUNNEL
select XFRM
diff --git a/net/mpls/Kconfig b/net/mpls/Kconfig
index d1ad69b7942a..1b6ede06a594 100644
--- a/net/mpls/Kconfig
+++ b/net/mpls/Kconfig
@@ -25,7 +25,7 @@ config NET_MPLS_GSO

config MPLS_ROUTING
tristate "MPLS: routing support"
- depends on NET_IP_TUNNEL || NET_IP_TUNNEL=n
+ uses NET_IP_TUNNEL
depends on PROC_SYSCTL
---help---
Add support for forwarding of mpls packets.
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index 468fea1aebba..38433805e499 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -228,7 +228,7 @@ config NF_CONNTRACK_FTP

config NF_CONNTRACK_H323
tristate "H.323 protocol support"
- depends on IPV6 || IPV6=n
+ uses IPV6
depends on NETFILTER_ADVANCED
help
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
@@ -617,7 +617,7 @@ config NFT_XFRM

config NFT_SOCKET
tristate "Netfilter nf_tables socket match support"
- depends on IPV6 || IPV6=n
+ uses IPV6
select NF_SOCKET_IPV4
select NF_SOCKET_IPV6 if NF_TABLES_IPV6
help
@@ -633,7 +633,7 @@ config NFT_OSF

config NFT_TPROXY
tristate "Netfilter nf_tables tproxy support"
- depends on IPV6 || IPV6=n
+ uses IPV6
select NF_DEFRAG_IPV4
select NF_DEFRAG_IPV6 if NF_TABLES_IPV6
select NF_TPROXY_IPV4
@@ -861,7 +861,7 @@ config NETFILTER_XT_TARGET_HL

config NETFILTER_XT_TARGET_HMARK
tristate '"HMARK" target support'
- depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
+ uses IP6_NF_IPTABLES
depends on NETFILTER_ADVANCED
---help---
This option adds the "HMARK" target.
@@ -1016,9 +1016,9 @@ config NETFILTER_XT_TARGET_MASQUERADE
config NETFILTER_XT_TARGET_TEE
tristate '"TEE" - packet cloning to alternate destination'
depends on NETFILTER_ADVANCED
- depends on IPV6 || IPV6=n
+ uses IPV6
depends on !NF_CONNTRACK || NF_CONNTRACK
- depends on IP6_NF_IPTABLES || !IP6_NF_IPTABLES
+ uses IP6_NF_IPTABLES
select NF_DUP_IPV4
select NF_DUP_IPV6 if IP6_NF_IPTABLES
---help---
@@ -1029,8 +1029,8 @@ config NETFILTER_XT_TARGET_TPROXY
tristate '"TPROXY" target transparent proxying support'
depends on NETFILTER_XTABLES
depends on NETFILTER_ADVANCED
- depends on IPV6 || IPV6=n
- depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
+ uses IPV6
+ uses IP6_NF_IPTABLES
depends on IP_NF_MANGLE
select NF_DEFRAG_IPV4
select NF_DEFRAG_IPV6 if IP6_NF_IPTABLES != n
@@ -1071,7 +1071,7 @@ config NETFILTER_XT_TARGET_SECMARK

config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support'
- depends on IPV6 || IPV6=n
+ uses IPV6
default m if NETFILTER_ADVANCED=n
---help---
This option adds a `TCPMSS' target, which allows you to alter the
@@ -1284,7 +1284,7 @@ config NETFILTER_XT_MATCH_ESP

config NETFILTER_XT_MATCH_HASHLIMIT
tristate '"hashlimit" match support'
- depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
+ uses IP6_NF_IPTABLES
depends on NETFILTER_ADVANCED
help
This option adds a `hashlimit' match.
@@ -1526,8 +1526,8 @@ config NETFILTER_XT_MATCH_SOCKET
tristate '"socket" match support'
depends on NETFILTER_XTABLES
depends on NETFILTER_ADVANCED
- depends on IPV6 || IPV6=n
- depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
+ uses IPV6
+ uses IP6_NF_IPTABLES
select NF_SOCKET_IPV4
select NF_SOCKET_IPV6 if IP6_NF_IPTABLES
select NF_DEFRAG_IPV4
diff --git a/net/nfc/Kconfig b/net/nfc/Kconfig
index 9b27599870e3..751c2011da4a 100644
--- a/net/nfc/Kconfig
+++ b/net/nfc/Kconfig
@@ -5,7 +5,7 @@

menuconfig NFC
depends on NET
- depends on RFKILL || !RFKILL
+ uses RFKILL
tristate "NFC subsystem support"
default n
help
diff --git a/net/rds/Kconfig b/net/rds/Kconfig
index c64e154bc18f..ff5fc0380b3d 100644
--- a/net/rds/Kconfig
+++ b/net/rds/Kconfig
@@ -17,7 +17,7 @@ config RDS_RDMA
config RDS_TCP
tristate "RDS over TCP"
depends on RDS
- depends on IPV6 || !IPV6
+ uses IPV6
---help---
Allow RDS to use TCP as a transport.
This transport does not support RDMA operations.
diff --git a/net/sctp/Kconfig b/net/sctp/Kconfig
index 6e2eb1dd64ed..9843ec78f9d6 100644
--- a/net/sctp/Kconfig
+++ b/net/sctp/Kconfig
@@ -6,7 +6,7 @@
menuconfig IP_SCTP
tristate "The SCTP Protocol"
depends on INET
- depends on IPV6 || IPV6=n
+ uses IPV6
select CRYPTO
select CRYPTO_HMAC
select CRYPTO_SHA1
diff --git a/net/wimax/Kconfig b/net/wimax/Kconfig
index d13762bc4abc..8c79eed1ba67 100644
--- a/net/wimax/Kconfig
+++ b/net/wimax/Kconfig
@@ -5,7 +5,7 @@

menuconfig WIMAX
tristate "WiMAX Wireless Broadband support"
- depends on RFKILL || !RFKILL
+ uses RFKILL
help

Select to configure support for devices that provide
diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
index 63cf7131f601..e07801f56010 100644
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -19,7 +19,7 @@ config WEXT_PRIV

config CFG80211
tristate "cfg80211 - wireless configuration API"
- depends on RFKILL || !RFKILL
+ uses RFKILL
select FW_LOADER
# may need to update this when certificates are changed and are
# using a different algorithm, though right now they shouldn't
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index 65e8cd4be930..d521fdc5930b 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -303,7 +303,7 @@ config SND_SOC_FSL_ASOC_CARD
tristate "Generic ASoC Sound Card with ASRC support"
depends on OF && I2C
# enforce SND_SOC_FSL_ASOC_CARD=m if SND_AC97_CODEC=m:
- depends on SND_AC97_CODEC || SND_AC97_CODEC=n
+ uses SND_AC97_CODEC
select SND_SOC_IMX_AUDMUX
select SND_SOC_IMX_PCM_DMA
select SND_SOC_FSL_ESAI
--
2.25.2

2020-04-17 20:31:06

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [RFC PATCH v2 1/3] Kconfig: Introduce "uses" keyword

On Fri, Apr 17, 2020 at 10:07 PM Saeed Mahameed <[email protected]> wrote:

> V2: - Fix double free due to single allocation of sym expr.
> - Added a 3rd patch to convert to new keyword treewide.

I've applied on my randconfig test tree, I'll let you know if something
breaks over the weekend, the initial few builds went fine.

Arnd