Re: [RFC PATCH 1/2] USB: core: let USB device know device node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Sat, Jan 9, 2016 at 3:05 AM, Peter Chen <hzpeterchen@xxxxxxxxx> wrote:
> On Fri, Jan 08, 2016 at 08:32:45AM -0600, Rob Herring wrote:
>> On Thu, Jan 7, 2016 at 11:44 PM, Peter Chen <peter.chen@xxxxxxxxxxxxx> wrote:
>> > 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 <peter.chen@xxxxxxxxxxxxx>
>> > ---
>> >  .../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.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..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.ps
>>
>
> Ok.
>
>> > +
>> > +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

>> > +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 devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux