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 Virtual Hub supports 7 downstream
21  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
30  reg:
31    maxItems: 1
32
33  clocks:
34    maxItems: 1
35
36  interrupts:
37    maxItems: 1
38
39  aspeed,vhub-downstream-ports:
40    description: Number of downstream ports supported by the Virtual Hub
41    $ref: /schemas/types.yaml#/definitions/uint32
42    default: 5
43    minimum: 1
44    maximum: 7
45
46  aspeed,vhub-generic-endpoints:
47    description: Number of generic endpoints supported by the Virtual Hub
48    $ref: /schemas/types.yaml#/definitions/uint32
49    default: 15
50    minimum: 1
51    maximum: 21
52
53  vhub-vendor-id:
54    description: vhub Vendor ID
55    $ref: /schemas/types.yaml#/definitions/uint32
56    maximum: 65535
57
58  vhub-product-id:
59    description: vhub Product ID
60    $ref: /schemas/types.yaml#/definitions/uint32
61    maximum: 65535
62
63  vhub-device-revision:
64    description: vhub Device Revision in binary-coded decimal
65    $ref: /schemas/types.yaml#/definitions/uint32
66    maximum: 65535
67
68  vhub-strings:
69    type: object
70    additionalProperties: false
71
72    properties:
73      '#address-cells':
74        const: 1
75
76      '#size-cells':
77        const: 0
78
79    patternProperties:
80      '^string@[0-9a-f]+$':
81        type: object
82        additionalProperties: false
83        description: string descriptors of the specific language
84
85        properties:
86          reg:
87            maxItems: 1
88            description: 16-bit Language Identifier defined by USB-IF
89
90          manufacturer:
91            description: vhub manufacturer
92            $ref: /schemas/types.yaml#/definitions/string
93
94          product:
95            description: vhub product name
96            $ref: /schemas/types.yaml#/definitions/string
97
98          serial-number:
99            description: vhub device serial number
100            $ref: /schemas/types.yaml#/definitions/string
101
102required:
103  - compatible
104  - reg
105  - clocks
106  - interrupts
107  - aspeed,vhub-downstream-ports
108  - aspeed,vhub-generic-endpoints
109
110additionalProperties: false
111
112examples:
113  - |
114    #include <dt-bindings/clock/aspeed-clock.h>
115    vhub: usb-vhub@1e6a0000 {
116            compatible = "aspeed,ast2500-usb-vhub";
117            reg = <0x1e6a0000 0x300>;
118            interrupts = <5>;
119            clocks = <&syscon ASPEED_CLK_GATE_USBPORT1CLK>;
120            aspeed,vhub-downstream-ports = <5>;
121            aspeed,vhub-generic-endpoints = <15>;
122            pinctrl-names = "default";
123            pinctrl-0 = <&pinctrl_usb2ad_default>;
124
125            vhub-vendor-id = <0x1d6b>;
126            vhub-product-id = <0x0107>;
127            vhub-device-revision = <0x0100>;
128            vhub-strings {
129                #address-cells = <1>;
130                #size-cells = <0>;
131
132                string@409 {
133                        reg = <0x409>;
134                        manufacturer = "ASPEED";
135                        product = "USB Virtual Hub";
136                        serial-number = "0000";
137                };
138            };
139    };
140