Thread (1 message) 1 message, 1 author, 2016-01-25

Re: [PATCH v3 1/1] USB: core: let USB device know device node

From: Peter Chen <hidden>
Date: 2016-01-25 01:55:23
Also in: linux-arm-kernel

On Fri, Jan 22, 2016 at 11:55 PM, Alan Stern [off-list ref] wrote:
On Fri, 22 Jan 2016, Arnd Bergmann wrote:
quoted
quoted
quoted
          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

quoted
quoted
quoted
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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help