30.12.2021 23:17, Matthias Kaehlcke пишет: > On Mon, Dec 20, 2021 at 11:05:28PM +0300, Dmitry Osipenko wrote: >> 16.11.2021 23:07, Matthias Kaehlcke пишет: >>> +static const struct usb_device_id onboard_hub_id_table[] = { >>> + { USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS0411 USB 3.0 */ >>> + { USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.0 */ >>> + {}, >>> +}; >> >> RTS5411 two times in the comments? > > One time, the other is RTS0511 > >> Internet suggests that RTS5411 is USB 3.0 > > Correct, however the chip internally has two hubs, one for USB2 and one for > USB3: > > Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. 4-Port USB 3.1 Hub > Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. 4-Port USB 2.1 Hub Alright, thanks. >> Are these hubs expected to be powered-on only when upstream port is >> enabled? Shouldn't runtime PM be used for that somehow? > > In the general case I would expect that a onboard hub is connected to a port > that is enabled. For now I think it's fine to power the hub always when the > system is running (which is also the current situation with using always-on > regulators). If someone has an actual use case where the upstream port can > be disabled they can add support for that later. > I see that you're handling the wakeup-capable devices during the driver's suspend, perhaps it should work okay then. BTW, shouldn't the "companion-hub" need to be turned into a generic USB property? The onboard-usb-hub looks like a generic thing, but "companion-hub" is specific to the RTS5411 binding.