| # 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: 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: | |
| contains: | |
| 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. | |
| items: | |
| - minimum: 1 | |
| maximum: 255 | |
| "#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: | |
| # hub connected to port 1 | |
| # device connected to port 2 | |
| # device connected to port 3 | |
| # 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>; | |
| }; | |
| }; | |
| }; |