On Tue, Sep 13, 2016 at 09:04:08AM +0200, Arnd Bergmann wrote: > On Tuesday, September 13, 2016 9:48:55 AM CEST Peter Chen wrote: > > On Mon, Sep 12, 2016 at 05:36:23PM +0200, Arnd Bergmann wrote: > > > Moving the CONFIG_USB_ULPI_BUS option to the top-level Kconfig file > > > means that we can enable it without any of the other USB support, > > > leading to a build error because Kbuild never enters the > > > drivers/usb/common/ directory without CONFIG_USB_COMMON: > > > > > > ERROR: "ulpi_unregister_driver" [drivers/phy/phy-tusb1210.ko] undefined! > > > ERROR: "__ulpi_register_driver" [drivers/phy/phy-tusb1210.ko] undefined! > > > ERROR: "ulpi_write" [drivers/phy/phy-tusb1210.ko] undefined! > > > > > > > Thanks, Arnd. I have submitted the fix. > > > > https://git.kernel.org/cgit/linux/kernel/git/gregkh/usb.git/commit/?h=usb-next&id=6406c3d226374c28d452b11db3b5ac241ce26191 > > I see you used 'depends on USB_COMMON' though instead of 'select USB_COMMON'. > > This seems inconsistent with how we handle the other places after the patch > I did earlier this year [see below]. > > It probably works fine for now, but having a mix of 'depends on' and 'select' > can be confusing for users as well as create dependency loops that break > the build. > > Arnd I just see below Kconfig entry at the same Kconfig (drivers/usb/Kconfig), and forget your changes. config USB_LED_TRIG bool "USB LED Triggers" depends on LEDS_CLASS && USB_COMMON && LEDS_TRIGGERS help This option adds LED triggers for USB host and/or gadget activity. Say Y here if you are working on a system with led-class supported LEDs and you want to use them as activity indicators for USB host or gadget. Just grep it, some Kconfig still uses depends on for USB_COMMON, let me change it together. b29397@b29397-desktop:~/work/projects/usb$ find . -name Kconfig | xargs grep -nr "USB_COMMON" ./drivers/phy/Kconfig:274: select USB_COMMON ./drivers/usb/phy/Kconfig:72: select USB_COMMON ./drivers/usb/Kconfig:32:config USB_COMMON ./drivers/usb/Kconfig:42: select USB_COMMON ./drivers/usb/Kconfig:155: depends on LEDS_CLASS && USB_COMMON && LEDS_TRIGGERS ./drivers/usb/gadget/Kconfig:18: select USB_COMMON ./drivers/usb/usbip/Kconfig:3: depends on USB_COMMON && NET Peter > > commit badf6d47f8a93098c6e05fdeb735b44b61877451 > Author: Arnd Bergmann <arnd@xxxxxxxx> > Date: Wed Mar 23 17:45:08 2016 +0100 > > usb: common: rework CONFIG_USB_COMMON logic > > The phy-am335x driver selects 'USB_COMMON', but all other drivers > use 'depends on' for that symbol, and it depends on USB || USB_GADGET > itself, which causes a Kconfig warning: > > warning: (AM335X_PHY_USB) selects USB_COMMON which has unmet direct dependencies (USB_SUPPORT && (USB || USB_GADGET)) > > As suggested by Felipe Balbi, this turns the logic around, and makes > 'USB_COMMON' selected by everything else that needs it, so we can > remove the dependencies. > > Fixes: 59f042f644c5 ("usb: phy: phy-am335x: bypass first VBUS sensing for host-only mode") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > Acked-by: Felipe Balbi <balbi@xxxxxxxxxx> > Reviewed-by: Peter Chen <peter.chen@xxxxxxx> > Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> > > diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig > index 26566db09de0..e92b97cd6056 100644 > --- a/drivers/phy/Kconfig > +++ b/drivers/phy/Kconfig > @@ -250,7 +250,8 @@ config PHY_SUN9I_USB > tristate "Allwinner sun9i SoC USB PHY driver" > depends on ARCH_SUNXI && HAS_IOMEM && OF > depends on RESET_CONTROLLER > - depends on USB_COMMON > + depends on USB_SUPPORT > + select USB_COMMON > select GENERIC_PHY > help > Enable this to support the transceiver that is part of Allwinner > diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig > index 8ed451dd651e..8689dcba5201 100644 > --- a/drivers/usb/Kconfig > +++ b/drivers/usb/Kconfig > @@ -31,8 +31,6 @@ if USB_SUPPORT > > config USB_COMMON > tristate > - default y > - depends on USB || USB_GADGET > > config USB_ARCH_HAS_HCD > def_bool y > @@ -41,6 +39,7 @@ config USB_ARCH_HAS_HCD > config USB > tristate "Support for Host-side USB" > depends on USB_ARCH_HAS_HCD > + select USB_COMMON > select NLS # for UTF-8 strings > ---help--- > Universal Serial Bus (USB) is a specification for a serial bus > diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig > index af5d922a8f5d..2057add439f0 100644 > --- a/drivers/usb/gadget/Kconfig > +++ b/drivers/usb/gadget/Kconfig > @@ -15,6 +15,7 @@ > > menuconfig USB_GADGET > tristate "USB Gadget Support" > + select USB_COMMON > select NLS > help > USB is a master/slave protocol, organized with one master > -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html