On 19/04/2019 13:24, Greg Kroah-Hartman wrote: > On Fri, Apr 19, 2019 at 11:59:08AM +0200, Marc Gonzalez wrote: > >> Keep EXTCON support optional, since some platforms do not need it. >> >> Fixes: 3def4031b3e3 ("usb: dwc3: add EXTCON dependency for qcom") >> Signed-off-by: Marc Gonzalez <marc.w.gonzalez@xxxxxxx> >> --- >> drivers/usb/dwc3/Kconfig | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig >> index 2b1494460d0c..6bd1a28c535f 100644 >> --- a/drivers/usb/dwc3/Kconfig >> +++ b/drivers/usb/dwc3/Kconfig >> @@ -115,7 +115,8 @@ config USB_DWC3_ST >> >> config USB_DWC3_QCOM >> tristate "Qualcomm Platform" >> - depends on EXTCON && (ARCH_QCOM || COMPILE_TEST) >> + depends on ARCH_QCOM || COMPILE_TEST >> + depends on EXTCON || !EXTCON > > Why is this last line needed? Does it really do anything? For the record, there are 42 instances of this unintuitive kconfig syntax: $ git grep 'depends on [A-Z_]* || !' | wc 42 342 2965 https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt An expression can have a value of 'n', 'm' or 'y' (0, 1, 2 respectively for calculations). "BAR depends on FOO" means (FOO=m && BAR=m) || (FOO=y && BAR=m) || (FOO=y && BAR=y) || BAR=n NB: (FOO=m && BAR=y) is explicitly forbidden by kconfig (special-cased?) ("This feature depends on another which has been configured as a module. As a result, this feature will be built as a module.") "BAR depends on !FOO" means (FOO=n && BAR=m) || (FOO=n && BAR=y) Thus "BAR depends on FOO || !FOO" means ALL 9 combinations EXCEPT (FOO=m && BAR=y) Regards.