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
7title: Renesas USB 3.0 Peripheral controller
8
9maintainers:
10  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
11
12properties:
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              - renesas,r9a09g055-usb3-peri # RZ/V2MA
32          - const: renesas,rzv2m-usb3-peri
33
34  reg:
35    maxItems: 1
36
37  interrupts:
38    maxItems: 1
39
40  clocks:
41    minItems: 1
42    items:
43      - description: Main clock
44      - description: Register access clock
45
46  clock-names:
47    minItems: 1
48    items:
49      - const: axi
50      - const: reg
51
52  phys:
53    maxItems: 1
54
55  phy-names:
56    const: usb
57
58  power-domains:
59    maxItems: 1
60
61  resets:
62    maxItems: 1
63
64  usb-role-switch:
65    $ref: /schemas/types.yaml#/definitions/flag
66    description: Support role switch.
67
68  companion:
69    $ref: /schemas/types.yaml#/definitions/phandle
70    description: phandle of a companion.
71
72  ports:
73    $ref: /schemas/graph.yaml#/properties/ports
74    description: |
75      any connector to the data bus of this controller should be modelled
76      using the OF graph bindings specified, if the "usb-role-switch"
77      property is used.
78
79    properties:
80      port@0:
81        $ref: /schemas/graph.yaml#/properties/port
82        description: High Speed (HS) data bus.
83
84      port@1:
85        $ref: /schemas/graph.yaml#/properties/port
86        description: Super Speed (SS) data bus.
87
88    required:
89      - port@0
90      - port@1
91
92required:
93  - compatible
94  - interrupts
95  - clocks
96
97allOf:
98  - if:
99      properties:
100        compatible:
101          contains:
102            enum:
103              - renesas,rzv2m-usb3-peri
104    then:
105      properties:
106        clocks:
107          minItems: 2
108        clock-names:
109          minItems: 2
110      required:
111        - clock-names
112        - resets
113    else:
114      properties:
115        clocks:
116          maxItems: 1
117
118additionalProperties: false
119
120examples:
121  - |
122    #include <dt-bindings/clock/r8a774c0-cpg-mssr.h>
123    #include <dt-bindings/interrupt-controller/arm-gic.h>
124    #include <dt-bindings/power/r8a774c0-sysc.h>
125
126    usb3_peri0: usb@ee020000 {
127        compatible = "renesas,r8a774c0-usb3-peri", "renesas,rcar-gen3-usb3-peri";
128        reg = <0xee020000 0x400>;
129        interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
130        clocks = <&cpg CPG_MOD 328>;
131        companion = <&xhci0>;
132        usb-role-switch;
133
134        ports {
135                #address-cells = <1>;
136                #size-cells = <0>;
137                port@0 {
138                        reg = <0>;
139                        usb3_hs_ep: endpoint {
140                                remote-endpoint = <&hs_ep>;
141                        };
142                };
143                port@1 {
144                        reg = <1>;
145                        usb3_role_switch: endpoint {
146                                remote-endpoint = <&hd3ss3220_out_ep>;
147                        };
148                };
149        };
150    };
151