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