On Mon, 2020-12-21 at 12:09 -0700, Rob Herring wrote:
On Wed, Dec 16, 2020 at 05:30:02PM +0800, Chunfeng Yun wrote:
Convert usb-device.txt to YAML schema usb-device.yaml
Signed-off-by: Chunfeng Yun chunfeng.yun@mediatek.com
v4: no changes, update dependent series: https://patchwork.kernel.org/project/linux-usb/list/?series=399561 [v6,00/19] dt-bindings: usb: Add generic USB HCD, xHCI, DWC USB3 DT schema
[...]
diff --git a/Documentation/devicetree/bindings/usb/usb-device.yaml b/Documentation/devicetree/bindings/usb/usb-device.yaml new file mode 100644 index 000000000000..f31d8a85d3e6 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-device.yaml @@ -0,0 +1,125 @@ +# 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#
+title: The device tree bindings for the Generic USB Device
+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]+,[0-9a-f]+$"
You can refine the length allowed a bit: [0-9a-f]{1,4}
Same applies elsewhere.
Ok
- 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".
[...]
diff --git a/Documentation/devicetree/bindings/usb/usb-hcd.yaml b/Documentation/devicetree/bindings/usb/usb-hcd.yaml index 9881ac10380d..5d0c6b5500d6 100755 --- a/Documentation/devicetree/bindings/usb/usb-hcd.yaml +++ b/Documentation/devicetree/bindings/usb/usb-hcd.yaml @@ -23,6 +23,32 @@ properties: targeted hosts (non-PC hosts). type: boolean
- "#address-cells":
- const: 1
- "#size-cells":
- const: 0
+patternProperties:
- "@[0-9a-f]+$":
- type: object
- description: The hard wired USB devices
- properties:
compatible:
pattern: "^usb[0-9a-f]+,[0-9a-f]+$"
$ref: /usb/usb-device.yaml
This is wrong. It should be up a level.
Ok
And no need to define 'compatible' or 'reg' here because those are defined within usb-device.yaml.
will drop it
description: the string is 'usbVID,PID', where VID is the vendor id
and PID is the product id
reg:
$ref: /usb/usb-device.yaml
maxItems: 1
- required:
- compatible
- reg
additionalProperties: true
examples: @@ -30,4 +56,11 @@ examples: usb { phys = <&usb2_phy1>, <&usb3_phy1>; phy-names = "usb";
#address-cells = <1>;
#size-cells = <0>;
hub@1 {
compatible = "usb5e3,610";
reg = <1>;
};};
-- 2.18.0