^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) Generic USB Device Properties
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Usually, we only use device tree for hard wired USB device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) The reference binding doc is from:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) http://www.devicetree.org/open-firmware/bindings/usb/usb-1_0.ps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Four types of device-tree nodes are defined: "host-controller nodes"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) representing USB host controllers, "device nodes" representing USB devices,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) "interface nodes" representing USB interfaces and "combined nodes"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) representing simple USB devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) A combined node shall be used instead of a device node and an interface node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) for devices of class 0 or 9 (hub) with a single configuration and a single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) A "hub node" is a combined node or an interface node that represents a USB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) hub.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Required properties for device nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) - compatible: "usbVID,PID", where VID is the vendor id and PID the product id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) The textual representation of VID and PID shall be in lower case hexadecimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) with leading zeroes suppressed. The other compatible strings from the above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) standard binding could also be used, but a device adhering to this binding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) may leave out all except for "usbVID,PID".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) - reg: the number of the USB hub port or the USB host-controller port to which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) this device is attached. The range is 1-255.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) Required properties for device nodes with interface nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) - #address-cells: shall be 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) - #size-cells: shall be 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Required properties for interface nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - compatible: "usbifVID,PID.configCN.IN", where VID is the vendor id, PID is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) the product id, CN is the configuration value and IN is the interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) number. The textual representation of VID, PID, CN and IN shall be in lower
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) case hexadecimal with leading zeroes suppressed. The other compatible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) strings from the above standard binding could also be used, but a device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) adhering to this binding may leave out all except for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) "usbifVID,PID.configCN.IN".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) - reg: the interface number and configuration value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) The configuration component is not included in the textual representation of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) an interface-node unit address for configuration 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) Required properties for combined nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) - compatible: "usbVID,PID", where VID is the vendor id and PID the product id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) The textual representation of VID and PID shall be in lower case hexadecimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) with leading zeroes suppressed. The other compatible strings from the above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) standard binding could also be used, but a device adhering to this binding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) may leave out all except for "usbVID,PID".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) - reg: the number of the USB hub port or the USB host-controller port to which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) this device is attached. The range is 1-255.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) Required properties for hub nodes with device nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - #address-cells: shall be 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) - #size-cells: shall be 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) Required properties for host-controller nodes with device nodes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) - #address-cells: shall be 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) - #size-cells: shall be 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) &usb1 { /* host controller */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) hub@1 { /* hub connected to port 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) compatible = "usb5e3,608";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) reg = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) device@2 { /* device connected to port 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) compatible = "usb123,4567";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) reg = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) device@3 { /* device connected to port 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) compatible = "usb123,abcd";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) reg = <3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #address-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) interface@0 { /* interface 0 of configuration 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) compatible = "usbif123,abcd.config1.0";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) reg = <0 1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) interface@0,2 { /* interface 0 of configuration 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) compatible = "usbif123,abcd.config2.0";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) reg = <0 2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) };