On Fri, Jan 22, 2016 at 11:55 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Fri, 22 Jan 2016, Arnd Bergmann wrote: > >> > > hub@3 { /* same external hub, highspeed mode */ >> > > compatible = "usb2109,0812.591", >> > > "usb2109,0812", >> > > "usb2109,class9.0.1", >> > > "usb2109,class9.0", >> > > "usb2109,class9"; >> > > >> > > #address-cells = <1>; >> > > #size-cells = <0>; >> > > reg = <3>; >> > > >> > >> > Why "reg" is 3 here? >> >> My mistake. It should be hub@1 and reg=<1>; >> >> I accidentally confused the port number and the device number. > > I thought you did it this way because you were numbering the SS > root-hub ports 1-2 and the HS root-hub ports 3-4. > In Arnd's example, there is only one port under root hub. And there are more than one ports under non-root hubs. > There's something I should have made clear earlier. This scheme for > putting SS and HS USB-3 root-hub ports in the same number space is part > of the xHCI spec. It's not AFAIK required (or even mentioned) by the > USB-3 spec, which means other types of USB-3 host controllers might do > it differently. > > The scheme which numbers SS and HS ports separately, both starting from > 1, is mandated by the USB-3 spec for non-root hubs. But since that > spec doesn't say much about root hubs, the OS is free to treat them > however it likes. We have chosen to make root hubs appear as similar > as possible to non-root hubs; however I believe that Windows (for > example) may do things differently. > > At any rate, since DT strives to reflect the actual hardware > properties, you probably should use the xHCI numbering scheme when > describing the ports of an xHCI root hub. > > I will do these differently between root hub and non-root hub. Thanks. Peter >> > > Is it possible to have a hub in an interface of a multifunction device >> > > or are they always single-configuration single-interface devices? >> > > >> > >> > I have not seen such kinds of devices, but it is possible in theory. >> >> Ok, so if the USB spec allows it, we should probably try to handle it too. > > No, the spec does not allow it. In fact, the spec divides all USB > devices into two classes: hubs and functions. A function is anything > that isn't a hub. And a hub is never allowed to contain more than one > configuration and interface. > > The spec does allow for multiple functions to be packaged in the same > physical device. In this case, the physical device contains a hub > along with various functions permanently connected to it. > > For example, the old Apple USB keyboards are compound devices. They > contain an internal 3-port hub; one of the ports is permanently wired > to the keyboard controller and the other two are exposed to the user, > allowing a mouse and something else to be attached. > > Alan Stern > -- BR, 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