From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: Peter Chen <hzpeterchen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
stillcompiling-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
valentin.longchamp-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
balbi-l0cyMroinI0@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
Alan Stern
<stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>,
Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org
Subject: Re: [PATCH v3 1/1] USB: core: let USB device know device node
Date: Fri, 22 Jan 2016 11:18:07 +0100 [thread overview]
Message-ID: <2404899.20LhULZo7N@wuerfel> (raw)
In-Reply-To: <20160122065901.GA31145@shlinux2>
On Friday 22 January 2016 14:59:01 Peter Chen wrote:
> On Thu, Jan 21, 2016 at 11:24:21PM +0100, Arnd Bergmann wrote:
> > On Thursday 21 January 2016 10:21:15 Alan Stern wrote:
> > > On Thu, 21 Jan 2016, Arnd Bergmann wrote:
> > > > On Thursday 21 January 2016 17:48:32 Peter Chen wrote:
> > hub@1 { /* external hub, superspeed mode class 9/subclass 0/proto 3 */
> > compatible = "usb2109,0812.591",
> > "usb2109,0812",
> > "usb2109,class9.0.3",
> > "usb2109,class9.0",
> > "usb2109,class9";
> > compatible = "usb2109,0812";
>
> Do we really need to write "compatible" so complicated?
The binding mandates it this way, but I guess we could decide to
make it a Linux-specific extension that we allow some of them to
be left out.
> > #address-cells = <1>;
> > #size-cells = <0>;
> > reg = <1>;
> >
> > communications@4 { /* superspeed ethernet device */
> > compatible = "usb0b95,1790.100",
> > "usb0b95,1790",
> > "usb0b95,class255.255.0",
> > "usb0b95,class255.255",
> > "usb0b95,class255",
> > "usbif0b95,1790.100",
> > "usbif0b95,1790",
> > "usbif0b95,class255.255.0",
> > "usbif0b95,class255.255,
> > "usbif0b95,class255";
> > reg = <4>;
> > };
> >
> > storage@1 { /* superspeed flash drive */
> > compatible = "usb1234,5678.600",
> > "usb1234,5678",
> > "usbif1234,class8.6.80",
> > "usbif1234,class8.6",
> > "usbif1234,class8",
> > "usbif,class8.6.80",
> > "usbif,class8.6",
> > "usbif,class8";
> > reg = <1>;
> > };
> > };
> >
> > 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.
> > wireless@0,1 { /* bluetooth config 0, if 1 */
> > compatible = "usbif0a12,0001.134.config0.1",
> > "usbif0a12,0001.config0.1",
> > "usbif0a12,class224.1.1",
> > "usbif0a12,class224.1",
> > "usbif0a12,class224",
> > "usbif,class224.1.1",
> > "usbif,class224.1",
> > "usbif,class224";
> > reg = <0 0>;
> > };
> > };
> > };
> > };
> >
> > In that description, I have included all four kinds of nodes from
> > the spec: host controller, device (wireless@2), interface (wireless@0.1,
> > wireless@0.2) and combined (hub@1, hub@3, storage@1, communications@4).
> >
> > Peter's example only contained hubs in combined nodes, no device or
> > interface nodes. I wonder if the code is able to parse all four
> > kinds of nodes though, and if we actually need that.
> >
>
> My proposal patch only handles the node under the USB device, not include
> the USB interfaces under such device, we can add it after finalize
> how to describe it at device tree.
We should at least handle the case of multiple hubs connected to one
another I think. No need to limit it to directly connected devices
when it's easy enough to do hubs as well.
> > Do we have a 'struct device' for each interface?
> >
>
> Yes, we have, but there are different 'struct device' between USB device
> and USB interfaces under this USB device. See usb_set_configuration,
> drivers/usb/core/message.c
Ok, got it. So we can set the of_node pointer of a struct usb_interface
to the child node of the usb->interface->usb_dev that matches the
configuration/interface tuple.
For combined device nodes (class 0 device, single configuration, single
interface), I suppose we have both a 'struct usb_device' and a 'struct
usb_interface' that we could attach the of_node to, but we can
decide to always just use one of the two, to avoid having the
same of_node pointer in multiple 'struct device' instances.
Or we simplify it so we always put the of_node just in the usb_device
or the usb_interface, even if both are listed.
> > 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.
Arnd
--
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
next prev parent reply other threads:[~2016-01-22 10:18 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
[not found] ` <1452849447-25025-1-git-send-email-peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2016-01-15 11:11 ` Arnd Bergmann
2016-01-15 15:11 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601151006330.1533-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-01-15 23:03 ` Arnd Bergmann
2016-01-16 16:40 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601161115050.11338-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-01-18 8:15 ` Peter Chen
2016-01-18 16:46 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601181139150.25155-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-01-19 3:08 ` Peter Chen
2016-01-19 11:33 ` Arnd Bergmann
2016-01-19 15:12 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601191009190.1727-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
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
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
[not found] ` <Pine.LNX.4.44L0.1601211015010.2275-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-01-21 22:24 ` Arnd Bergmann
2016-01-22 6:59 ` Peter Chen
2016-01-22 10:18 ` Arnd Bergmann [this message]
2016-01-22 15:55 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601221023350.1626-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
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
[not found] ` <CAL411-qfzcynzc=YrepzcA6EmFuxy-Ri4xRQ+R-QVBDEPZXtZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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
[not found] ` <1452877630.6067.97.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2016-01-15 17:30 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601151220020.1533-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-01-18 7:13 ` Peter Chen
2016-01-18 16:39 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1601181129340.25155-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
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=2404899.20LhULZo7N@wuerfel \
--to=arnd-r2ngtmty4d4@public.gmane.org \
--cc=balbi-l0cyMroinI0@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=hzpeterchen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
--cc=stillcompiling-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=valentin.longchamp-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.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