linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: hzpeterchen@gmail.com (Peter Chen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/1] USB: core: let USB device know device node
Date: Thu, 21 Jan 2016 11:15:24 +0800	[thread overview]
Message-ID: <20160121031524.GA29893@shlinux2> (raw)
In-Reply-To: <5639398.uJHXq6DsMC@wuerfel>

On Wed, Jan 20, 2016 at 03:19:36PM +0100, Arnd Bergmann wrote:
> 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 at 1 {
> > > >                 compatible = "usb15a2,007d";
> > > >                 reg = <0x01>;
> > > > 
> > > >                 hub: genesys at 1 {
> > > >                         compatible = "usb05e3,0608";
> > > >                         reg = <0x01>;
> > > >                 };
> > > >         };
> > > > 
> > > >         roothub_2: nxp at 2 {
> > > >                 compatible = "usb15a2,007d";
> > > >                 reg = <0x02>;
> > > >         };
> > > > 
> > > >         ...
> > > > 
> > > >         roothub_7: nxp at 7 {
> > > >                 compatible = "usb15a2,007d";
> > > >                 reg = <0x07>;
> > > > 
> > > >                 hub: genesys at 1 {
> > > >                         compatible = "usb05e3,0608";
> > > >                         reg = <0x01>;
> > > >                 };
> > > >         };
> > > > 
> > > >         ...
> > > > 
> > > >         roothub_9: nxp at 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 at 1 {
> >                 compatible = "usb15a2,007d";
> >                 reg = <0x01>;
> > 
> >                 hub: genesys at 1 {
> >                         compatible = "usb05e3,0608";
> >                         reg = <0x01>;
> >                 };
> >         };
> > 
> >         port_2: nxp at 2 {
> >                 compatible = "usb15a2,007d";
> >                 reg = <0x02>;
> >         };
> > 
> >         ...
> > 
> >         port_7: nxp at 7 {
> >                 compatible = "usb15a2,007d";
> >                 reg = <0x07>;
> > 
> >                 hub: genesys at 1 {
> >                         compatible = "usb05e3,0608";
> >                         reg = <0x01>;
> >                 };
> >         };
> > 
> >         ...
> > 
> >         port_9: nxp at 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?
> 

Just adding from device driver view and change the name from "roohub" to
"port".

It is the port number (1-9), but not the root hub number.

At the most of embedded platforms, we have only one port per controller.
For example, at the non-hub boards, if there are two Standard-A ports,
there are from two different USB controllers.
But for Alan's case, it has six ports, and all from the one USB controller,
port 1 to port 6 are from the HS root hub, port 7 to port 9 are from the SS
root hub.

For the single port controller platform, the dts will be like below, port_1 is
under the HS root hub, port_2 is under the SS root hub.

&usb1 {
        port_1: nxp at 1 {
                compatible = "usb15a2,007d";
                reg = <0x01>;

                hub: genesys at 1 {
                        compatible = "usb05e3,0608";
                        reg = <0x01>;
                };
        };

        port_2: nxp at 2 {
                compatible = "usb15a2,007d";
                reg = <0x02>;

                hub: genesys at 1 {
                        compatible = "usb05e3,0608";
                        reg = <0x01>;
                };
        };
};


-- 

Best Regards,
Peter Chen

  reply	other threads:[~2016-01-21  3:15 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-15  9:17 [PATCH v3 1/1] USB: core: let USB device know device node Peter Chen
2016-01-15 11:11 ` Arnd Bergmann
2016-01-15 15:11   ` Alan Stern
2016-01-15 23:03     ` Arnd Bergmann
2016-01-16 16:40       ` Alan Stern
2016-01-18  8:15         ` Peter Chen
2016-01-18 16:46           ` Alan Stern
2016-01-19  3:08             ` Peter Chen
2016-01-19 11:33               ` Arnd Bergmann
2016-01-19 15:12                 ` Alan Stern
2016-01-20  3:48                   ` Peter Chen
2016-01-20  9:07                     ` Arnd Bergmann
2016-01-20 12:50                       ` Peter Chen
2016-01-20 14:19                         ` Arnd Bergmann
2016-01-21  3:15                           ` Peter Chen [this message]
2016-01-21  8:41                             ` Arnd Bergmann
2016-01-21  9:48                               ` Peter Chen
2016-01-21 10:10                                 ` Arnd Bergmann
2016-01-21 15:21                                   ` Alan Stern
2016-01-21 22:24                                     ` Arnd Bergmann
2016-01-22  6:59                                       ` Peter Chen
2016-01-22 10:18                                         ` Arnd Bergmann
2016-01-22 15:55                                           ` Alan Stern
2016-01-22 16:23                                             ` Arnd Bergmann
2016-01-22 19:29                                               ` Alan Stern
2016-01-25  1:55                                             ` Peter Chen
2016-01-25  3:57                                           ` Peter Chen
2016-01-25  8:50                                             ` Arnd Bergmann
2016-01-25  9:31                                               ` Peter Chen
2016-01-25 15:23                                                 ` Alan Stern
2016-01-18 10:24         ` Arnd Bergmann
2016-01-18  7:44     ` Peter Chen
2016-01-18  7:42   ` Peter Chen
2016-01-15 17:07 ` Philipp Zabel
2016-01-15 17:30   ` Alan Stern
2016-01-18  7:13     ` Peter Chen
2016-01-18 16:39       ` Alan Stern
2016-01-19  2:52         ` Peter Chen
2016-01-18  7:10   ` Peter Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160121031524.GA29893@shlinux2 \
    --to=hzpeterchen@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).