GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / usb / renesas,usb3-peri.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/usb/renesas,usb3-peri.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Renesas USB 3.0 Peripheral controller
8
9 maintainers:
10   - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
11
12 properties:
13   compatible:
14     oneOf:
15       - items:
16           - enum:
17               - renesas,r8a774a1-usb3-peri # RZ/G2M
18               - renesas,r8a774b1-usb3-peri # RZ/G2N
19               - renesas,r8a774c0-usb3-peri # RZ/G2E
20               - renesas,r8a774e1-usb3-peri # RZ/G2H
21               - renesas,r8a7795-usb3-peri  # R-Car H3
22               - renesas,r8a7796-usb3-peri  # R-Car M3-W
23               - renesas,r8a77961-usb3-peri # R-Car M3-W+
24               - renesas,r8a77965-usb3-peri # R-Car M3-N
25               - renesas,r8a77990-usb3-peri # R-Car E3
26           - const: renesas,rcar-gen3-usb3-peri
27
28       - items:
29           - enum:
30               - renesas,r9a09g011-usb3-peri # RZ/V2M
31           - const: renesas,rzv2m-usb3-peri
32
33   reg:
34     maxItems: 1
35
36   interrupts:
37     minItems: 1
38     items:
39       - description: Combined interrupt for DMA, SYS and ERR
40       - description: Dual Role Device (DRD)
41       - description: Battery Charging
42       - description: Global Purpose Input
43
44   interrupt-names:
45     minItems: 1
46     items:
47       - const: all_p
48       - const: drd
49       - const: bc
50       - const: gpi
51
52   clocks:
53     minItems: 1
54     items:
55       - description: Main clock
56       - description: Register access clock
57
58   clock-names:
59     minItems: 1
60     items:
61       - const: aclk
62       - const: reg
63
64   phys:
65     maxItems: 1
66
67   phy-names:
68     const: usb
69
70   power-domains:
71     maxItems: 1
72
73   resets:
74     minItems: 1
75     items:
76       - description: Peripheral reset
77       - description: DRD reset
78
79   reset-names:
80     items:
81       - const: aresetn_p
82       - const: drd_reset
83
84   usb-role-switch:
85     $ref: /schemas/types.yaml#/definitions/flag
86     description: Support role switch.
87
88   companion:
89     $ref: /schemas/types.yaml#/definitions/phandle
90     description: phandle of a companion.
91
92   ports:
93     $ref: /schemas/graph.yaml#/properties/ports
94     description: |
95       any connector to the data bus of this controller should be modelled
96       using the OF graph bindings specified, if the "usb-role-switch"
97       property is used.
98
99     properties:
100       port@0:
101         $ref: /schemas/graph.yaml#/properties/port
102         description: High Speed (HS) data bus.
103
104       port@1:
105         $ref: /schemas/graph.yaml#/properties/port
106         description: Super Speed (SS) data bus.
107
108     required:
109       - port@0
110       - port@1
111
112 required:
113   - compatible
114   - interrupts
115   - clocks
116
117 allOf:
118   - if:
119       properties:
120         compatible:
121           contains:
122             enum:
123               - renesas,rzv2m-usb3-peri
124     then:
125       properties:
126         clocks:
127           minItems: 2
128         clock-names:
129           minItems: 2
130         interrupts:
131           minItems: 4
132         interrupt-names:
133           minItems: 4
134         resets:
135           minItems: 2
136       required:
137         - clock-names
138         - interrupt-names
139         - resets
140         - reset-names
141     else:
142       properties:
143         clocks:
144           maxItems: 1
145         interrupts:
146           maxItems: 1
147         resets:
148           maxItems: 1
149
150 additionalProperties: false
151
152 examples:
153   - |
154     #include <dt-bindings/clock/r8a774c0-cpg-mssr.h>
155     #include <dt-bindings/interrupt-controller/arm-gic.h>
156     #include <dt-bindings/power/r8a774c0-sysc.h>
157
158     usb3_peri0: usb@ee020000 {
159         compatible = "renesas,r8a774c0-usb3-peri", "renesas,rcar-gen3-usb3-peri";
160         reg = <0xee020000 0x400>;
161         interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
162         clocks = <&cpg CPG_MOD 328>;
163         companion = <&xhci0>;
164         usb-role-switch;
165
166         ports {
167                 #address-cells = <1>;
168                 #size-cells = <0>;
169                 port@0 {
170                         reg = <0>;
171                         usb3_hs_ep: endpoint {
172                                 remote-endpoint = <&hs_ep>;
173                         };
174                 };
175                 port@1 {
176                         reg = <1>;
177                         usb3_role_switch: endpoint {
178                                 remote-endpoint = <&hd3ss3220_out_ep>;
179                         };
180                 };
181         };
182     };