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