On Wednesday 20 January 2016 20:50:26 Peter Chen wrote: > On Wed, Jan 20, 2016 at 10:07:13AM +0100, Arnd Bergmann wrote: > > On Wednesday 20 January 2016 11:48:39 Peter Chen wrote: > > > > > > > > > Alternatively, you could use one of the high bits of the 'reg' value > > > > > to indicate which root hub is used. I'm sure that would work as > > > > > well, but be less obvious. > > > > > > > > It's probably best to stick with the same numbering that the hardware > > > > uses. > > > > > > Seems we are talking about root hub, not the device in the > > > root hub. So for multiple ports controller, we have to own node for > > > root hub. Assume your example, there is a genesys HUB at physical > > > port 1, I suggest a dts node description like below, please correct > > > me if anything wrong. > > > > > > &usb1 { > > > roothub_1: nxp@1 { > > > compatible = "usb15a2,007d"; > > > reg = <0x01>; > > > > > > hub: genesys@1 { > > > compatible = "usb05e3,0608"; > > > reg = <0x01>; > > > }; > > > }; > > > > > > roothub_2: nxp@2 { > > > compatible = "usb15a2,007d"; > > > reg = <0x02>; > > > }; > > > > > > ... > > > > > > roothub_7: nxp@7 { > > > compatible = "usb15a2,007d"; > > > reg = <0x07>; > > > > > > hub: genesys@1 { > > > compatible = "usb05e3,0608"; > > > reg = <0x01>; > > > }; > > > }; > > > > > > ... > > > > > > roothub_9: nxp@9 { > > > compatible = "usb15a2,007d"; > > > reg = <0x09>; > > > }; > > > }; > > > > This looks wrong to me: if I understand it right, you are now modeling > > each port of the root hub as a separate hub, so you end up with > > a total of 11 hub nodes when there should only be one or two. > > > > How about below from both driver and device tree view: > > 1. From the USB driver view > > USB Controller > | > | > ---------------------|---------------- > | | > root hub(HS) root hub(SS, optional) > | | > --------------------- ------------------------- > | | ... | | | | > port 1 port 2 port 6 port 1 port 2 port 3 > | | > genesys hub (if HS) genesys hub (if SS) > > 2. dts node: > > &usb1 { > port_1: nxp@1 { > compatible = "usb15a2,007d"; > reg = <0x01>; > > hub: genesys@1 { > compatible = "usb05e3,0608"; > reg = <0x01>; > }; > }; > > port_2: nxp@2 { > compatible = "usb15a2,007d"; > reg = <0x02>; > }; > > ... > > port_7: nxp@7 { > compatible = "usb15a2,007d"; > reg = <0x07>; > > hub: genesys@1 { > compatible = "usb05e3,0608"; > reg = <0x01>; > }; > }; > > ... > > port_9: nxp@9 { > compatible = "usb15a2,007d"; > reg = <0x09>; > }; > }; > > - If the above are ok, is it ok we add two nodes for the same device > in case the speed negotiation is different at some situations? > - Usually, it should be ok we only add nodes at device tree which > the hard wired device on it, like port_1 and port 7 at above, right? This looks identical to the version before, what is the difference? You still list 11 hubs here, I'm completely puzzled what the meaning of those should be. Arnd -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html