Thread (1 message) 1 message, 1 author, 2016-02-19

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

From: p.zabel@pengutronix.de (Philipp Zabel)
Date: 2016-02-19 08:51:07
Also in: linux-devicetree

Hi Peter,

Am Dienstag, den 16.02.2016, 16:42 +0800 schrieb Peter Chen:
quoted hunk
From: Peter Chen <redacted>

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 <redacted>
---
Changes for v5:
- Refine the code how to get the device node at usb_alloc_dev according
  to Alan's comment.
- Point out "usbVID,PID" is the recommented compatible, and others
  compatibles at binding doc could also be used.

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         | 26 ++++++++++++
 drivers/usb/core/Makefile                          |  2 +-
 drivers/usb/core/of.c                              | 47 ++++++++++++++++++++++
 drivers/usb/core/usb.c                             | 10 +++++
 include/linux/usb/of.h                             |  7 ++++
 5 files changed, 91 insertions(+), 1 deletion(-)
 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..a997a23
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/usb-device.txt
@@ -0,0 +1,26 @@
+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 other compatible strings from the above
+  standard binding could also be used, but a device adhering to this
+  binding may leave out all except for usbVID,PID.
I asked to document the format of VID and PID ("lower case hexadecimal
with leading zeroes suppressed") here.
+- 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 at 1 {
+		compatible = "usb05e3,0608";
This should be:
		compatible = "usb5e3,608";

After those two issues are fixed,
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>

best regards
Philipp
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help