Re: [PATCH v4 1/2] dt-bindings: usb: Add binding for discrete onboard USB hubs

From: Alan Stern
Date: Tue Oct 06 2020 - 10:18:23 EST


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