On Mon, Oct 05, 2020 at 05:45:10PM -0700, Matthias Kaehlcke wrote: > I did some prototyping, it seems a binding like this would work for > case a) or b): > > &usb_1_dwc3 { > hub_2_0: hub@1 { > compatible = "usbbda,5411"; > reg = <1>; > }; > > hub_3_0: hub@2 { > compatible = "usbbda,411"; > reg = <2>; > vdd-supply = <&pp3300_hub>; > companion-hubs = <&hub_2_0>; > }; > }; > > It still requires specifying both hubs (which reflects the actual wiring). > Supporting something like "reg = <1 2>" seems more complex due to the need to > obtain the hub USB device at runtime (a DT node makes that trivial), possibly > this could be solved by adding new APIs. > > In terms of implementation would I envision to keep a platform driver. This > would keep the hubby parts out of xhci-plat (except for populating the platform > devices), support systems with cascaded hubs and provide a device for the sysfs > attribute. What will you do if a system has more than one of these power-regulated hubs? That is, how will the user know which platform device handles the power control for a particular hub (and vice versa)? You'd probably have to create a pair of symlinks going back and forth in the sysfs directories. Wouldn't it be easier to put the power-control attribute directly in the hub's sysfs directory (or .../power subdirectory)? Alan Stern