devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Chen <hzpeterchen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
	stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	pawel.moll-5wv7dgnIgG8@public.gmane.org,
	mark.rutland-5wv7dgnIgG8@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	balbi-l0cyMroinI0@public.gmane.org,
	arnd-r2nGTMty4D4@public.gmane.org,
	valentin.longchamp-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org,
	s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
	stillcompiling-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH v4 1/1] USB: core: let USB device know device node
Date: Fri, 5 Feb 2016 14:11:25 +0800	[thread overview]
Message-ID: <20160205061124.GB1858@shlinux2> (raw)
In-Reply-To: <1454582690.3356.18.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

On Thu, Feb 04, 2016 at 11:44:50AM +0100, Philipp Zabel wrote:
> Hi Peter,
> 
> Am Montag, den 25.01.2016, 15:24 +0800 schrieb Peter Chen:
> > Although most of USB devices are hot-plug's, there are still some devices
> > are hard wired on the board, eg, for HSIC and SSIC interface USB devices.
> > If these kinds of USB devices are multiple functions, and they can supply
> > other interfaces like i2c, gpios for other devices, we may need to
> > describe these at device tree.
> > 
> > In this commit, it uses "reg" in dts as physical port number to match
> > the phyiscal port number decided by USB core, if they are the same,
> > then the device node is for the device we are creating for USB core.
> > 
> > Signed-off-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> > ---
> > Changes for v4:
> > - The range of "reg" should be 1-31, changing device node address
> >   style as in lower case hexadecimal with leading zeroes suppressed
> >   [binding doc, usb-device.txt]
> > - Improve the example at binding doc, it describes node from the top
> >   (the controller)
> > - Delete the struct of_node * within struct usb_device
> > - Using usb_hcd_find_raw_port_number to get raw port number under root
> >   hub port
> > 
> > Changes for v3:
> > - typo: s/descirbe/describe/
> > 
> > Changes for v2:
> > - Fix build error reported by kbuild robot, lack of "static" for
> >   inline usb_of_get_child_node
> > - Fix typo, "devcie_node" -> "device_node"
> > - Add kernel-doc for of_node at struct usb_device
> > 
> > Changes from RFC:
> > - Fix the error address for binding doc, and add compatible for binding doc
> > - Change get child node API from "usb_of_find_node" to
> >   "usb_of_get_child_node"
> > - Delete unecessary header files
> > - One typo
> > 
> >  .../devicetree/bindings/usb/usb-device.txt         | 25 ++++++++++++
> >  drivers/usb/core/Makefile                          |  2 +-
> >  drivers/usb/core/of.c                              | 47 ++++++++++++++++++++++
> >  drivers/usb/core/usb.c                             | 14 ++++++-
> >  include/linux/usb/of.h                             |  7 ++++
> >  5 files changed, 92 insertions(+), 3 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/usb/usb-device.txt
> >  create mode 100644 drivers/usb/core/of.c
> > 
> > diff --git a/Documentation/devicetree/bindings/usb/usb-device.txt b/Documentation/devicetree/bindings/usb/usb-device.txt
> > new file mode 100644
> > index 0000000..c702885
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/usb/usb-device.txt
> > @@ -0,0 +1,25 @@
> > +Generic USB Device Properties
> > +
> > +Usually, we only use device tree for hard wired USB device.
> > +The reference binding doc is from:
> > +http://www.firmware.org/1275/bindings/usb/usb-1_0.ps
> > +
> > +Required properties:
> > +- compatible: usbVID,PID
> 
> The reference recommendation states that for single-configuration USB
> devices the compatible should contain all of the applicable strings from
> the list starting with 2) "usbVID,PID.REV" and ending with 11)
> "usb,device". Are we going to ignore this?
> 

I have not seen benefits if we write several compatibles in dts,
the information of compatibles listed in doc can be got during
the enumeration.

I suggest we use the simple pattern for this compatible, in that
case, every one can be easy to follow it, and will not be confused
which compatibles should be used, and the style can be unify.

> The document also states that "the textual representation of VID, PID
> [...] shall be in lower case hexadecimal with leading zeroes
> suppressed". This should be documented here.

I will change.

> 
> > +- reg: the port number which this device is connecting to, the range
> > +  is 1-31.
> > +
> > +
> > +Example:
> > +
> > +&usb1 {
> > +	status = "okay";
> > +
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> > +
> > +	hub: genesys@1 {
> 
> There are node names specified for hubs and mass storage devices:
> "hub", "storage", "cdrom", "tape", "solid-state", and "device" for
> everything else. Should we follow this recommendation?

I agree.

> 
> > +		compatible = "usb05e3,0608";
> > +		reg = <0x1>;
> > +	};
> 
> I'd have written this node as:
> 
> 	hub: hub@1 {
> 		compatible = "usb5e3,608", "usb5e3,class9",
> 			     "usb,class9", "usb,device";
> 		reg = <1>;
> 	};

The reg should be hexadecimal, do we need to add "0x" before the value?

> As another example, I'd like to introduce the USB WLAN Adapter soldered
> onto the imx6q-gk802 board to its power enable GPIO via the device tree:
> 
> /* Internal USB port (USBH1) */
> &usbh1 {
> 	#address-cells = <1>;
> 	#size-cells = <0>;
> 	status = "okay";
> 
> 	/* RTL8192CU 802.11n WLAN Adapter */
> 	device@1 {
> 		compatible = "usbbda,8176.200", "usbbda,8176",
> 			     "usb,device";
> 		reg = <1>;
> 
> 		enable-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
> 	};
> };
> 

It is okay to use your example, but I still insist like below:

/* Internal USB port (USBH1) */
&usbh1 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	/* RTL8192CU 802.11n WLAN Adapter */
	device@1 {
		compatible = "usbbda,8176";
		reg = <1>;

		enable-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
	};
};


-- 

Best Regards,
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

  parent reply	other threads:[~2016-02-05  6:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-25  7:24 [PATCH v4 1/1] USB: core: let USB device know device node Peter Chen
     [not found] ` <1453706679-18948-1-git-send-email-peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2016-02-04  1:59   ` Peter Chen
2016-02-04 16:36     ` Alan Stern
     [not found]       ` <Pine.LNX.4.44L0.1602041130590.1515-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2016-02-05 12:55         ` Peter Chen
     [not found]           ` <CAL411-oOgSYJy_cLVkGWkLbzBewKtj1jgfQqxCsjE_-3NLYcTA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-05 14:06             ` Alan Stern
2016-02-04 10:44 ` Philipp Zabel
     [not found]   ` <1454582690.3356.18.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2016-02-05  6:11     ` Peter Chen [this message]
2016-02-05  9:18       ` Arnd Bergmann
2016-02-05  9:37       ` Philipp Zabel
2016-02-05 13:03         ` 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=20160205061124.GB1858@shlinux2 \
    --to=hzpeterchen-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=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=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@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;
as well as URLs for NNTP newsgroup(s).