xref: /linux/Documentation/devicetree/bindings/usb/aspeed,usb-vhub.yaml (revision be1ca3ee8f97067fee87fda73ea5959d5ab75bbf)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright (c) 2020 Facebook Inc.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/usb/aspeed,usb-vhub.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: ASPEED USB 2.0 Virtual Hub Controller
9
10maintainers:
11  - Benjamin Herrenschmidt <benh@kernel.crashing.org>
12
13description: |+
14  The ASPEED USB 2.0 Virtual Hub Controller implements 1 set of USB Hub
15  register and several sets of Device and Endpoint registers to support
16  the Virtual Hub's downstream USB devices.
17
18  Supported number of devices and endpoints vary depending on hardware
19  revisions. AST2400 and AST2500 Virtual Hub supports 5 downstream devices
20  and 15 generic endpoints, while AST2600 and AST2700 Virtual Hub supports
21  7 downstream devices and 21 generic endpoints.
22
23properties:
24  compatible:
25    enum:
26      - aspeed,ast2400-usb-vhub
27      - aspeed,ast2500-usb-vhub
28      - aspeed,ast2600-usb-vhub
29      - aspeed,ast2700-usb-vhub
30
31  reg:
32    maxItems: 1
33
34  clocks:
35    maxItems: 1
36
37  resets:
38    maxItems: 1
39
40  interrupts:
41    maxItems: 1
42
43  aspeed,vhub-downstream-ports:
44    description: Number of downstream ports supported by the Virtual Hub
45    $ref: /schemas/types.yaml#/definitions/uint32
46    default: 5
47    minimum: 1
48    maximum: 7
49
50  aspeed,vhub-generic-endpoints:
51    description: Number of generic endpoints supported by the Virtual Hub
52    $ref: /schemas/types.yaml#/definitions/uint32
53    default: 15
54    minimum: 1
55    maximum: 21
56
57  vhub-vendor-id:
58    description: vhub Vendor ID
59    $ref: /schemas/types.yaml#/definitions/uint32
60    maximum: 65535
61
62  vhub-product-id:
63    description: vhub Product ID
64    $ref: /schemas/types.yaml#/definitions/uint32
65    maximum: 65535
66
67  vhub-device-revision:
68    description: vhub Device Revision in binary-coded decimal
69    $ref: /schemas/types.yaml#/definitions/uint32
70    maximum: 65535
71
72  vhub-strings:
73    type: object
74    additionalProperties: false
75
76    properties:
77      '#address-cells':
78        const: 1
79
80      '#size-cells':
81        const: 0
82
83    patternProperties:
84      '^string@[0-9a-f]+$':
85        type: object
86        additionalProperties: false
87        description: string descriptors of the specific language
88
89        properties:
90          reg:
91            maxItems: 1
92            description: 16-bit Language Identifier defined by USB-IF
93
94          manufacturer:
95            description: vhub manufacturer
96            $ref: /schemas/types.yaml#/definitions/string
97
98          product:
99            description: vhub product name
100            $ref: /schemas/types.yaml#/definitions/string
101
102          serial-number:
103            description: vhub device serial number
104            $ref: /schemas/types.yaml#/definitions/string
105
106required:
107  - compatible
108  - reg
109  - clocks
110  - interrupts
111  - aspeed,vhub-downstream-ports
112  - aspeed,vhub-generic-endpoints
113
114if:
115  properties:
116    compatible:
117      contains:
118        const: aspeed,ast2700-usb-vhub
119
120then:
121  required:
122    - resets
123
124else:
125  properties:
126    resets: false
127
128additionalProperties: false
129
130examples:
131  - |
132    #include <dt-bindings/clock/aspeed-clock.h>
133    vhub: usb-vhub@1e6a0000 {
134        compatible = "aspeed,ast2500-usb-vhub";
135        reg = <0x1e6a0000 0x300>;
136        interrupts = <5>;
137        clocks = <&syscon ASPEED_CLK_GATE_USBPORT1CLK>;
138        aspeed,vhub-downstream-ports = <5>;
139        aspeed,vhub-generic-endpoints = <15>;
140        pinctrl-names = "default";
141        pinctrl-0 = <&pinctrl_usb2ad_default>;
142
143        vhub-vendor-id = <0x1d6b>;
144        vhub-product-id = <0x0107>;
145        vhub-device-revision = <0x0100>;
146        vhub-strings {
147            #address-cells = <1>;
148            #size-cells = <0>;
149
150            string@409 {
151                reg = <0x409>;
152                manufacturer = "ASPEED";
153                product = "USB Virtual Hub";
154                serial-number = "0000";
155            };
156        };
157    };
158