1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/renesas,rzv2m-usb3drd.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Renesas RZ/V2M USB 3.1 DRD controller
8
9maintainers:
10  - Biju Das <biju.das.jz@bp.renesas.com>
11
12description: |
13  The RZ/V2{M, MA} USB3.1 DRD module supports the following functions
14  * Role swapping function by the ID pin of the Micro-AB receptacle
15  * Battery Charging Specification Revision 1.2
16
17properties:
18  compatible:
19    items:
20      - enum:
21          - renesas,r9a09g011-usb3drd  # RZ/V2M
22          - renesas,r9a09g055-usb3drd  # RZ/V2MA
23      - const: renesas,rzv2m-usb3drd
24
25  reg:
26    maxItems: 1
27
28  interrupts:
29    items:
30      - description: Dual Role Device (DRD)
31      - description: Battery Charging
32      - description: Global Purpose Input
33
34  interrupt-names:
35    items:
36      - const: drd
37      - const: bc
38      - const: gpi
39
40  clocks:
41    items:
42      - description: Peripheral AXI clock
43      - description: APB clock
44
45  clock-names:
46    items:
47      - const: axi
48      - const: reg
49
50  power-domains:
51    maxItems: 1
52
53  resets:
54    maxItems: 1
55
56  ranges: true
57
58  '#address-cells':
59    enum: [ 1, 2 ]
60
61  '#size-cells':
62    enum: [ 1, 2 ]
63
64patternProperties:
65  "^usb3peri@[0-9a-f]+$":
66    type: object
67    $ref: /schemas/usb/renesas,usb3-peri.yaml
68
69  "^usb@[0-9a-f]+$":
70    type: object
71    $ref: renesas,usb-xhci.yaml#
72
73required:
74  - compatible
75  - reg
76  - interrupts
77  - interrupt-names
78  - clocks
79  - clock-names
80  - power-domains
81  - resets
82
83additionalProperties: false
84
85examples:
86  - |
87    #include <dt-bindings/clock/r9a09g011-cpg.h>
88    #include <dt-bindings/interrupt-controller/arm-gic.h>
89
90    usb3drd: usb@85070400 {
91        compatible = "renesas,r9a09g011-usb3drd", "renesas,rzv2m-usb3drd";
92        reg = <0x85070400 0x100>;
93        interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
94                     <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
95                     <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
96        interrupt-names = "drd", "bc", "gpi";
97        clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
98                 <&cpg CPG_MOD R9A09G011_USB_PCLK>;
99        clock-names = "axi", "reg";
100        power-domains = <&cpg>;
101        resets = <&cpg R9A09G011_USB_DRD_RESET>;
102        ranges;
103        #address-cells = <1>;
104        #size-cells = <1>;
105
106        usb3host: usb@85060000 {
107           compatible = "renesas,r9a09g011-xhci",
108                        "renesas,rzv2m-xhci";
109           reg = <0x85060000 0x2000>;
110           interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
111           clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_H>,
112                    <&cpg CPG_MOD R9A09G011_USB_PCLK>;
113           clock-names = "axi", "reg";
114           power-domains = <&cpg>;
115           resets = <&cpg R9A09G011_USB_ARESETN_H>;
116        };
117
118        usb3peri: usb3peri@85070000 {
119           compatible = "renesas,r9a09g011-usb3-peri",
120                        "renesas,rzv2m-usb3-peri";
121           reg = <0x85070000 0x400>;
122           interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
123           clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
124                    <&cpg CPG_MOD R9A09G011_USB_PCLK>;
125           clock-names = "axi", "reg";
126           power-domains = <&cpg>;
127           resets = <&cpg R9A09G011_USB_ARESETN_P>;
128        };
129    };
130