1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*c66ec88fSEmmanuel Vadot%YAML 1.2
3*c66ec88fSEmmanuel Vadot---
4*c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/clock/renesas,cpg-clocks.yaml#
5*c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel Vadottitle: Renesas Clock Pulse Generator (CPG)
8*c66ec88fSEmmanuel Vadot
9*c66ec88fSEmmanuel Vadotmaintainers:
10*c66ec88fSEmmanuel Vadot  - Geert Uytterhoeven <geert+renesas@glider.be>
11*c66ec88fSEmmanuel Vadot
12*c66ec88fSEmmanuel Vadotdescription:
13*c66ec88fSEmmanuel Vadot  The Clock Pulse Generator (CPG) generates core clocks for the SoC.  It
14*c66ec88fSEmmanuel Vadot  includes PLLs, and fixed and variable ratio dividers.
15*c66ec88fSEmmanuel Vadot
16*c66ec88fSEmmanuel Vadot  The CPG may also provide a Clock Domain for SoC devices, in combination with
17*c66ec88fSEmmanuel Vadot  the CPG Module Stop (MSTP) Clocks.
18*c66ec88fSEmmanuel Vadot
19*c66ec88fSEmmanuel Vadotproperties:
20*c66ec88fSEmmanuel Vadot  compatible:
21*c66ec88fSEmmanuel Vadot    oneOf:
22*c66ec88fSEmmanuel Vadot      - const: renesas,r8a73a4-cpg-clocks     # R-Mobile APE6
23*c66ec88fSEmmanuel Vadot      - const: renesas,r8a7740-cpg-clocks     # R-Mobile A1
24*c66ec88fSEmmanuel Vadot      - const: renesas,r8a7778-cpg-clocks     # R-Car M1
25*c66ec88fSEmmanuel Vadot      - const: renesas,r8a7779-cpg-clocks     # R-Car H1
26*c66ec88fSEmmanuel Vadot      - items:
27*c66ec88fSEmmanuel Vadot          - enum:
28*c66ec88fSEmmanuel Vadot              - renesas,r7s72100-cpg-clocks   # RZ/A1H
29*c66ec88fSEmmanuel Vadot          - const: renesas,rz-cpg-clocks      # RZ/A1
30*c66ec88fSEmmanuel Vadot      - const: renesas,sh73a0-cpg-clocks      # SH-Mobile AG5
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel Vadot  reg:
33*c66ec88fSEmmanuel Vadot    maxItems: 1
34*c66ec88fSEmmanuel Vadot
35*c66ec88fSEmmanuel Vadot  clocks: true
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel Vadot  '#clock-cells':
38*c66ec88fSEmmanuel Vadot    const: 1
39*c66ec88fSEmmanuel Vadot
40*c66ec88fSEmmanuel Vadot  clock-output-names: true
41*c66ec88fSEmmanuel Vadot
42*c66ec88fSEmmanuel Vadot  renesas,mode:
43*c66ec88fSEmmanuel Vadot    description: Board-specific settings of the MD_CK* bits on R-Mobile A1
44*c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
45*c66ec88fSEmmanuel Vadot    minimum: 0
46*c66ec88fSEmmanuel Vadot    maximum: 7
47*c66ec88fSEmmanuel Vadot
48*c66ec88fSEmmanuel Vadot  '#power-domain-cells':
49*c66ec88fSEmmanuel Vadot    const: 0
50*c66ec88fSEmmanuel Vadot
51*c66ec88fSEmmanuel Vadotrequired:
52*c66ec88fSEmmanuel Vadot  - compatible
53*c66ec88fSEmmanuel Vadot  - reg
54*c66ec88fSEmmanuel Vadot  - clocks
55*c66ec88fSEmmanuel Vadot  - '#clock-cells'
56*c66ec88fSEmmanuel Vadot  - clock-output-names
57*c66ec88fSEmmanuel Vadot
58*c66ec88fSEmmanuel VadotallOf:
59*c66ec88fSEmmanuel Vadot  - if:
60*c66ec88fSEmmanuel Vadot      properties:
61*c66ec88fSEmmanuel Vadot        compatible:
62*c66ec88fSEmmanuel Vadot          contains:
63*c66ec88fSEmmanuel Vadot            const: renesas,r8a73a4-cpg-clocks
64*c66ec88fSEmmanuel Vadot    then:
65*c66ec88fSEmmanuel Vadot      properties:
66*c66ec88fSEmmanuel Vadot        clocks:
67*c66ec88fSEmmanuel Vadot          items:
68*c66ec88fSEmmanuel Vadot            - description: extal1
69*c66ec88fSEmmanuel Vadot            - description: extal2
70*c66ec88fSEmmanuel Vadot
71*c66ec88fSEmmanuel Vadot        clock-output-names:
72*c66ec88fSEmmanuel Vadot          items:
73*c66ec88fSEmmanuel Vadot            - const: main
74*c66ec88fSEmmanuel Vadot            - const: pll0
75*c66ec88fSEmmanuel Vadot            - const: pll1
76*c66ec88fSEmmanuel Vadot            - const: pll2
77*c66ec88fSEmmanuel Vadot            - const: pll2s
78*c66ec88fSEmmanuel Vadot            - const: pll2h
79*c66ec88fSEmmanuel Vadot            - const: z
80*c66ec88fSEmmanuel Vadot            - const: z2
81*c66ec88fSEmmanuel Vadot            - const: i
82*c66ec88fSEmmanuel Vadot            - const: m3
83*c66ec88fSEmmanuel Vadot            - const: b
84*c66ec88fSEmmanuel Vadot            - const: m1
85*c66ec88fSEmmanuel Vadot            - const: m2
86*c66ec88fSEmmanuel Vadot            - const: zx
87*c66ec88fSEmmanuel Vadot            - const: zs
88*c66ec88fSEmmanuel Vadot            - const: hp
89*c66ec88fSEmmanuel Vadot
90*c66ec88fSEmmanuel Vadot  - if:
91*c66ec88fSEmmanuel Vadot      properties:
92*c66ec88fSEmmanuel Vadot        compatible:
93*c66ec88fSEmmanuel Vadot          contains:
94*c66ec88fSEmmanuel Vadot            const: renesas,r8a7740-cpg-clocks
95*c66ec88fSEmmanuel Vadot    then:
96*c66ec88fSEmmanuel Vadot      properties:
97*c66ec88fSEmmanuel Vadot        clocks:
98*c66ec88fSEmmanuel Vadot          items:
99*c66ec88fSEmmanuel Vadot            - description: extal1
100*c66ec88fSEmmanuel Vadot            - description: extal2
101*c66ec88fSEmmanuel Vadot            - description: extalr
102*c66ec88fSEmmanuel Vadot
103*c66ec88fSEmmanuel Vadot        clock-output-names:
104*c66ec88fSEmmanuel Vadot          items:
105*c66ec88fSEmmanuel Vadot            - const: system
106*c66ec88fSEmmanuel Vadot            - const: pllc0
107*c66ec88fSEmmanuel Vadot            - const: pllc1
108*c66ec88fSEmmanuel Vadot            - const: pllc2
109*c66ec88fSEmmanuel Vadot            - const: r
110*c66ec88fSEmmanuel Vadot            - const: usb24s
111*c66ec88fSEmmanuel Vadot            - const: i
112*c66ec88fSEmmanuel Vadot            - const: zg
113*c66ec88fSEmmanuel Vadot            - const: b
114*c66ec88fSEmmanuel Vadot            - const: m1
115*c66ec88fSEmmanuel Vadot            - const: hp
116*c66ec88fSEmmanuel Vadot            - const: hpp
117*c66ec88fSEmmanuel Vadot            - const: usbp
118*c66ec88fSEmmanuel Vadot            - const: s
119*c66ec88fSEmmanuel Vadot            - const: zb
120*c66ec88fSEmmanuel Vadot            - const: m3
121*c66ec88fSEmmanuel Vadot            - const: cp
122*c66ec88fSEmmanuel Vadot
123*c66ec88fSEmmanuel Vadot      required:
124*c66ec88fSEmmanuel Vadot        - renesas,mode
125*c66ec88fSEmmanuel Vadot
126*c66ec88fSEmmanuel Vadot  - if:
127*c66ec88fSEmmanuel Vadot      properties:
128*c66ec88fSEmmanuel Vadot        compatible:
129*c66ec88fSEmmanuel Vadot          contains:
130*c66ec88fSEmmanuel Vadot            const: renesas,r8a7778-cpg-clocks
131*c66ec88fSEmmanuel Vadot    then:
132*c66ec88fSEmmanuel Vadot      properties:
133*c66ec88fSEmmanuel Vadot        clocks:
134*c66ec88fSEmmanuel Vadot          maxItems: 1
135*c66ec88fSEmmanuel Vadot
136*c66ec88fSEmmanuel Vadot        clock-output-names:
137*c66ec88fSEmmanuel Vadot          items:
138*c66ec88fSEmmanuel Vadot            - const: plla
139*c66ec88fSEmmanuel Vadot            - const: pllb
140*c66ec88fSEmmanuel Vadot            - const: b
141*c66ec88fSEmmanuel Vadot            - const: out
142*c66ec88fSEmmanuel Vadot            - const: p
143*c66ec88fSEmmanuel Vadot            - const: s
144*c66ec88fSEmmanuel Vadot            - const: s1
145*c66ec88fSEmmanuel Vadot
146*c66ec88fSEmmanuel Vadot  - if:
147*c66ec88fSEmmanuel Vadot      properties:
148*c66ec88fSEmmanuel Vadot        compatible:
149*c66ec88fSEmmanuel Vadot          contains:
150*c66ec88fSEmmanuel Vadot            const: renesas,r8a7779-cpg-clocks
151*c66ec88fSEmmanuel Vadot    then:
152*c66ec88fSEmmanuel Vadot      properties:
153*c66ec88fSEmmanuel Vadot        clocks:
154*c66ec88fSEmmanuel Vadot          maxItems: 1
155*c66ec88fSEmmanuel Vadot
156*c66ec88fSEmmanuel Vadot        clock-output-names:
157*c66ec88fSEmmanuel Vadot          items:
158*c66ec88fSEmmanuel Vadot            - const: plla
159*c66ec88fSEmmanuel Vadot            - const: z
160*c66ec88fSEmmanuel Vadot            - const: zs
161*c66ec88fSEmmanuel Vadot            - const: s
162*c66ec88fSEmmanuel Vadot            - const: s1
163*c66ec88fSEmmanuel Vadot            - const: p
164*c66ec88fSEmmanuel Vadot            - const: b
165*c66ec88fSEmmanuel Vadot            - const: out
166*c66ec88fSEmmanuel Vadot
167*c66ec88fSEmmanuel Vadot  - if:
168*c66ec88fSEmmanuel Vadot      properties:
169*c66ec88fSEmmanuel Vadot        compatible:
170*c66ec88fSEmmanuel Vadot          contains:
171*c66ec88fSEmmanuel Vadot            const: renesas,r7s72100-cpg-clocks
172*c66ec88fSEmmanuel Vadot    then:
173*c66ec88fSEmmanuel Vadot      properties:
174*c66ec88fSEmmanuel Vadot        clocks:
175*c66ec88fSEmmanuel Vadot          items:
176*c66ec88fSEmmanuel Vadot            - description: extal1
177*c66ec88fSEmmanuel Vadot            - description: usb_x1
178*c66ec88fSEmmanuel Vadot
179*c66ec88fSEmmanuel Vadot        clock-output-names:
180*c66ec88fSEmmanuel Vadot          items:
181*c66ec88fSEmmanuel Vadot            - const: pll
182*c66ec88fSEmmanuel Vadot            - const: i
183*c66ec88fSEmmanuel Vadot            - const: g
184*c66ec88fSEmmanuel Vadot
185*c66ec88fSEmmanuel Vadot  - if:
186*c66ec88fSEmmanuel Vadot      properties:
187*c66ec88fSEmmanuel Vadot        compatible:
188*c66ec88fSEmmanuel Vadot          contains:
189*c66ec88fSEmmanuel Vadot            const: renesas,sh73a0-cpg-clocks
190*c66ec88fSEmmanuel Vadot    then:
191*c66ec88fSEmmanuel Vadot      properties:
192*c66ec88fSEmmanuel Vadot        clocks:
193*c66ec88fSEmmanuel Vadot          items:
194*c66ec88fSEmmanuel Vadot            - description: extal1
195*c66ec88fSEmmanuel Vadot            - description: extal2
196*c66ec88fSEmmanuel Vadot
197*c66ec88fSEmmanuel Vadot        clock-output-names:
198*c66ec88fSEmmanuel Vadot          items:
199*c66ec88fSEmmanuel Vadot            - const: main
200*c66ec88fSEmmanuel Vadot            - const: pll0
201*c66ec88fSEmmanuel Vadot            - const: pll1
202*c66ec88fSEmmanuel Vadot            - const: pll2
203*c66ec88fSEmmanuel Vadot            - const: pll3
204*c66ec88fSEmmanuel Vadot            - const: dsi0phy
205*c66ec88fSEmmanuel Vadot            - const: dsi1phy
206*c66ec88fSEmmanuel Vadot            - const: zg
207*c66ec88fSEmmanuel Vadot            - const: m3
208*c66ec88fSEmmanuel Vadot            - const: b
209*c66ec88fSEmmanuel Vadot            - const: m1
210*c66ec88fSEmmanuel Vadot            - const: m2
211*c66ec88fSEmmanuel Vadot            - const: z
212*c66ec88fSEmmanuel Vadot            - const: zx
213*c66ec88fSEmmanuel Vadot            - const: hp
214*c66ec88fSEmmanuel Vadot
215*c66ec88fSEmmanuel Vadot  - if:
216*c66ec88fSEmmanuel Vadot      properties:
217*c66ec88fSEmmanuel Vadot        compatible:
218*c66ec88fSEmmanuel Vadot          contains:
219*c66ec88fSEmmanuel Vadot            enum:
220*c66ec88fSEmmanuel Vadot              - renesas,r8a7778-cpg-clocks
221*c66ec88fSEmmanuel Vadot              - renesas,r8a7779-cpg-clocks
222*c66ec88fSEmmanuel Vadot              - renesas,rz-cpg-clocks
223*c66ec88fSEmmanuel Vadot    then:
224*c66ec88fSEmmanuel Vadot      required:
225*c66ec88fSEmmanuel Vadot        - '#power-domain-cells'
226*c66ec88fSEmmanuel Vadot
227*c66ec88fSEmmanuel VadotadditionalProperties: false
228*c66ec88fSEmmanuel Vadot
229*c66ec88fSEmmanuel Vadotexamples:
230*c66ec88fSEmmanuel Vadot  - |
231*c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/r8a7740-clock.h>
232*c66ec88fSEmmanuel Vadot    cpg_clocks: cpg_clocks@e6150000 {
233*c66ec88fSEmmanuel Vadot            compatible = "renesas,r8a7740-cpg-clocks";
234*c66ec88fSEmmanuel Vadot            reg = <0xe6150000 0x10000>;
235*c66ec88fSEmmanuel Vadot            clocks = <&extal1_clk>, <&extal2_clk>, <&extalr_clk>;
236*c66ec88fSEmmanuel Vadot            #clock-cells = <1>;
237*c66ec88fSEmmanuel Vadot            clock-output-names = "system", "pllc0", "pllc1", "pllc2", "r",
238*c66ec88fSEmmanuel Vadot                                 "usb24s", "i", "zg", "b", "m1", "hp", "hpp",
239*c66ec88fSEmmanuel Vadot                                 "usbp", "s", "zb", "m3", "cp";
240*c66ec88fSEmmanuel Vadot            renesas,mode = <0x05>;
241*c66ec88fSEmmanuel Vadot    };
242