mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 21:33:00 +00:00
e96bd39708
Add a new binding for USB interface nodes, which are child nodes of USB device nodes and addressed by interface number and configuration value tuples. Also add a new binding for USB combined nodes, which are special case nodes for simple USB devices for which they replace the device and interface nodes. For completeness, define the already used terms "host-controller node", "device node" and "hub node". Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
103 lines
3.3 KiB
Plaintext
103 lines
3.3 KiB
Plaintext
Generic USB Device Properties
|
|
|
|
Usually, we only use device tree for hard wired USB device.
|
|
The reference binding doc is from:
|
|
http://www.devicetree.org/open-firmware/bindings/usb/usb-1_0.ps
|
|
|
|
Four types of device-tree nodes are defined: "host-controller nodes"
|
|
representing USB host controllers, "device nodes" representing USB devices,
|
|
"interface nodes" representing USB interfaces and "combined nodes"
|
|
representing simple USB devices.
|
|
|
|
A combined node shall be used instead of a device node and an interface node
|
|
for devices of class 0 or 9 (hub) with a single configuration and a single
|
|
interface.
|
|
|
|
A "hub node" is a combined node or an interface node that represents a USB
|
|
hub.
|
|
|
|
|
|
Required properties for device nodes:
|
|
- compatible: "usbVID,PID", where VID is the vendor id and PID the product id.
|
|
The textual representation of VID and PID shall be in lower case hexadecimal
|
|
with leading zeroes suppressed. 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".
|
|
- reg: the number of the USB hub port or the USB host-controller port to which
|
|
this device is attached. The range is 1-255.
|
|
|
|
|
|
Required properties for device nodes with interface nodes:
|
|
- #address-cells: shall be 2
|
|
- #size-cells: shall be 0
|
|
|
|
|
|
Required properties for interface nodes:
|
|
- compatible: "usbifVID,PID.configCN.IN", where VID is the vendor id, PID is
|
|
the product id, CN is the configuration value and IN is the interface
|
|
number. The textual representation of VID, PID, CN and IN shall be in lower
|
|
case hexadecimal with leading zeroes suppressed. 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
|
|
"usbifVID,PID.configCN.IN".
|
|
- reg: the interface number and configuration value
|
|
|
|
The configuration component is not included in the textual representation of
|
|
an interface-node unit address for configuration 1.
|
|
|
|
|
|
Required properties for combined nodes:
|
|
- compatible: "usbVID,PID", where VID is the vendor id and PID the product id.
|
|
The textual representation of VID and PID shall be in lower case hexadecimal
|
|
with leading zeroes suppressed. 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".
|
|
- reg: the number of the USB hub port or the USB host-controller port to which
|
|
this device is attached. The range is 1-255.
|
|
|
|
|
|
Required properties for hub nodes with device nodes:
|
|
- #address-cells: shall be 1
|
|
- #size-cells: shall be 0
|
|
|
|
|
|
Required properties for host-controller nodes with device nodes:
|
|
- #address-cells: shall be 1
|
|
- #size-cells: shall be 0
|
|
|
|
|
|
Example:
|
|
|
|
&usb1 { /* host controller */
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
hub@1 { /* hub connected to port 1 */
|
|
compatible = "usb5e3,608";
|
|
reg = <1>;
|
|
};
|
|
|
|
device@2 { /* device connected to port 2 */
|
|
compatible = "usb123,4567";
|
|
reg = <2>;
|
|
};
|
|
|
|
device@3 { /* device connected to port 3 */
|
|
compatible = "usb123,abcd";
|
|
reg = <3>;
|
|
|
|
#address-cells = <2>;
|
|
#size-cells = <0>;
|
|
|
|
interface@0 { /* interface 0 of configuration 1 */
|
|
compatible = "usbif123,abcd.config1.0";
|
|
reg = <0 1>;
|
|
};
|
|
|
|
interface@0,2 { /* interface 0 of configuration 2 */
|
|
compatible = "usbif123,abcd.config2.0";
|
|
reg = <0 2>;
|
|
};
|
|
};
|
|
};
|