2020-12-25 07:52:48 +00:00
|
|
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
|
|
%YAML 1.2
|
|
|
|
---
|
|
|
|
$id: http://devicetree.org/schemas/usb/usb-device.yaml#
|
|
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
|
2022-12-16 16:38:15 +00:00
|
|
|
title: Generic USB Device
|
2020-12-25 07:52:48 +00:00
|
|
|
|
|
|
|
maintainers:
|
|
|
|
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
|
|
|
|
description: |
|
|
|
|
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.
|
|
|
|
|
|
|
|
properties:
|
|
|
|
compatible:
|
|
|
|
pattern: "^usb[0-9a-f]{1,4},[0-9a-f]{1,4}$"
|
|
|
|
description: Device nodes or combined nodes.
|
|
|
|
"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:
|
|
|
|
description: the number of the USB hub port or the USB host-controller
|
|
|
|
port to which this device is attached. The range is 1-255.
|
|
|
|
maxItems: 1
|
|
|
|
|
|
|
|
"#address-cells":
|
|
|
|
description: should be 1 for hub nodes with device nodes,
|
|
|
|
should be 2 for device nodes with interface nodes.
|
|
|
|
enum: [1, 2]
|
|
|
|
|
|
|
|
"#size-cells":
|
|
|
|
const: 0
|
|
|
|
|
|
|
|
patternProperties:
|
|
|
|
"^interface@[0-9a-f]{1,2}(,[0-9a-f]{1,2})$":
|
|
|
|
type: object
|
|
|
|
description: USB interface nodes.
|
|
|
|
The configuration component is not included in the textual
|
|
|
|
representation of an interface-node unit address for configuration 1.
|
|
|
|
|
|
|
|
properties:
|
|
|
|
compatible:
|
|
|
|
pattern: "^usbif[0-9a-f]{1,4},[0-9a-f]{1,4}.config[0-9a-f]{1,2}.[0-9a-f]{1,2}$"
|
|
|
|
description: Interface nodes.
|
|
|
|
"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:
|
|
|
|
description: should be 2 cells long, the first cell represents
|
|
|
|
the interface number and the second cell represents the
|
|
|
|
configuration value.
|
|
|
|
maxItems: 1
|
|
|
|
|
|
|
|
required:
|
|
|
|
- reg
|
|
|
|
|
|
|
|
additionalProperties: true
|
|
|
|
|
|
|
|
examples:
|
2021-03-08 05:37:34 +00:00
|
|
|
# hub connected to port 1
|
|
|
|
# device connected to port 2
|
|
|
|
# device connected to port 3
|
2020-12-25 07:52:48 +00:00
|
|
|
# interface 0 of configuration 1
|
|
|
|
# interface 0 of configuration 2
|
|
|
|
- |
|
|
|
|
usb@11270000 {
|
|
|
|
reg = <0x11270000 0x1000>;
|
|
|
|
interrupts = <0x0 0x4e 0x0>;
|
|
|
|
#address-cells = <1>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
hub@1 {
|
|
|
|
compatible = "usb5e3,608";
|
|
|
|
reg = <1>;
|
|
|
|
};
|
|
|
|
|
|
|
|
device@2 {
|
|
|
|
compatible = "usb123,4567";
|
|
|
|
reg = <2>;
|
|
|
|
};
|
|
|
|
|
|
|
|
device@3 {
|
|
|
|
compatible = "usb123,abcd";
|
|
|
|
reg = <3>;
|
|
|
|
|
|
|
|
#address-cells = <2>;
|
|
|
|
#size-cells = <0>;
|
|
|
|
|
|
|
|
interface@0 {
|
|
|
|
compatible = "usbif123,abcd.config1.0";
|
|
|
|
reg = <0 1>;
|
|
|
|
};
|
|
|
|
|
|
|
|
interface@0,2 {
|
|
|
|
compatible = "usbif123,abcd.config2.0";
|
|
|
|
reg = <0 2>;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|