Re: [RFC PATCH 1/2] USB: core: let USB device know device node
flat view
From: Rob Herring <hidden>
Date: 2016-01-09 15:20:21
Also in:
linux-arm-kernel
On Sat, Jan 9, 2016 at 3:05 AM, Peter Chen [off-list ref] wrote:
On Fri, Jan 08, 2016 at 08:32:45AM -0600, Rob Herring wrote:quoted
On Thu, Jan 7, 2016 at 11:44 PM, Peter Chen [off-list ref] wrote:quoted
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 descirbe these at device tree. In this commit, it uses "reg" in dts as port number to match the 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> --- .../devicetree/bindings/usb/usb-device.txt | 8 ++++ drivers/usb/core/Makefile | 2 +- drivers/usb/core/of.c | 48 ++++++++++++++++++++++ drivers/usb/core/usb.c | 8 +++- include/linux/usb.h | 2 + include/linux/usb/of.h | 6 +++ 6 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/usb/usb-device.txt create mode 100644 drivers/usb/core/of.cdiff --git a/Documentation/devicetree/bindings/usb/usb-device.txt b/Documentation/devicetree/bindings/usb/usb-device.txt new file mode 100644 index 0000000..d35facd --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-device.txt@@ -0,0 +1,8 @@ +Generic USB Device Properties + +Usually, we only use device tree for hard wired USB device. +The reference binding doc is from: +http://playground.sun.com/1275/bindings/usb/usb-1_0.ps.This path doesn't exist anymore. Use http://www.firmware.org/1275/bindings/usb/usb-1_0.psOk.quoted
quoted
+ +Required properties: +- reg: the port number which this device is connecting to.At least compatible should also be here.What format for USB device compatible string has still not been decided. Would you suggest something? At my example, I use "vid,pid".
Yes, it is. They are defined in OpenFirmware USB binding doc above. However, the compatible strings and nodes are supposed to reflect the USB descriptors and interfaces. I don't think we need that much detail here, so I'd suggest we limit it to a subset such as: usbVID.PID.REV usbVID.PID usbVID.classDC usb.classDC usbifVID.classIC usbif.classIC
quoted
quoted
+struct device_node *usb_of_find_node(struct device_node *parent, int portnum) +{ + struct device_node *node; + u32 port; + + for_each_child_of_node(parent, node) { + if (!of_property_read_u32(node, "reg", &port)) { + if (port == portnum) + return node;This needs to match on the compatible string too. Otherwise, this could match in lots of cases.No, the port number is unique under the USB HUB (including host controller, which is roothub), and there are some many compatible string for USB devices.
Assuming the parent node pointer is correct. You could pass a SPI host node to this function and it will return a valid device node pointer. Rob -- 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