On 23.02.2022 03:10, Alan Stern wrote: > On Tue, Feb 22, 2022 at 10:13:09PM +0100, Heiner Kallweit wrote: >> I get the "hub doesn't have any ports" error message on a system with >> Amlogic S905W SoC. Seems the SoC has internal USB 3.0 supports but >> is crippled with regard to USB 3.0 ports. >> Maybe we shouldn't consider this scenario an error. So let's change >> the message to info level, but otherwise keep the handling of the >> scenario as it is today. With the patch it looks like this on my >> system. >> >> dwc2 c9100000.usb: supply vusb_d not found, using dummy regulator >> dwc2 c9100000.usb: supply vusb_a not found, using dummy regulator >> dwc2 c9100000.usb: EPs: 7, dedicated fifos, 712 entries in SPRAM >> xhci-hcd xhci-hcd.0.auto: xHCI Host Controller >> xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1 >> xhci-hcd xhci-hcd.0.auto: hcc params 0x0228f664 hci version 0x100 quirks 0x0000000002010010 >> xhci-hcd xhci-hcd.0.auto: irq 49, io mem 0xc9000000 >> hub 1-0:1.0: USB hub found >> hub 1-0:1.0: 2 ports detected >> xhci-hcd xhci-hcd.0.auto: xHCI Host Controller >> xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2 >> xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed >> usb usb2: We don't know the algorithms for LPM for this host, disabling LPM. >> hub 2-0:1.0: USB hub found >> hub 2-0:1.0: hub has no ports, exiting >> >> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> >> --- >> drivers/usb/core/hub.c | 5 ++--- >> 1 file changed, 2 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c >> index 83b5aff25..e3f40d1f4 100644 >> --- a/drivers/usb/core/hub.c >> +++ b/drivers/usb/core/hub.c >> @@ -1423,9 +1423,8 @@ static int hub_configure(struct usb_hub *hub, >> ret = -ENODEV; >> goto fail; >> } else if (hub->descriptor->bNbrPorts == 0) { >> - message = "hub doesn't have any ports!"; >> - ret = -ENODEV; >> - goto fail; >> + dev_info(hub_dev, "hub has no ports, exiting\n"); >> + return -ENODEV; >> } >> >> /* > > How about instead changing xhci-hcd so that it doesn't try to register > a USB-3 root hub if the controller doesn't have any USB-3 ports? I > think that would make more sense. > Right, this would be better. I checked and it seems to be a little bit bigger endeavor. If I let register_root_hub() fail, then this removes the USB3 bus/host (shared hcd), but also the USB2 bus/host. It took an additional change to xhci_plat_probe() to make it work on my system. Not sure what the impact could be on systems not using xhci_plat_probe(). Users may face the same issue like me, and having a USB3 hub with no ports may remove also the USB2 bus/host. What I can do: submit my patches as RFC, then there's a better basis for a discussion. > Alan Stern Heiner