blob: c752c8985a536e9868492223746170300aa5c8ad [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/samsung,exynos850-clock.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos850 SoC clock controller
8
9maintainers:
10 - Sam Protsenko <semen.protsenko@linaro.org>
11 - Chanwoo Choi <cw00.choi@samsung.com>
12 - Krzysztof Kozlowski <krzk@kernel.org>
13 - Sylwester Nawrocki <s.nawrocki@samsung.com>
14 - Tomasz Figa <tomasz.figa@gmail.com>
15
16description: |
17 Exynos850 clock controller is comprised of several CMU units, generating
18 clocks for different domains. Those CMU units are modeled as separate device
19 tree nodes, and might depend on each other. Root clocks in that clock tree are
20 two external clocks:: OSCCLK (26 MHz) and RTCCLK (32768 Hz). Those external
21 clocks must be defined as fixed-rate clocks in dts.
22
23 CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
24 dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
25
26 Each clock is assigned an identifier and client nodes can use this identifier
27 to specify the clock which they consume. All clocks available for usage
28 in clock consumer nodes are defined as preprocessor macros in
29 'dt-bindings/clock/exynos850.h' header.
30
31properties:
32 compatible:
33 enum:
34 - samsung,exynos850-cmu-top
35 - samsung,exynos850-cmu-apm
36 - samsung,exynos850-cmu-aud
37 - samsung,exynos850-cmu-cmgp
38 - samsung,exynos850-cmu-core
39 - samsung,exynos850-cmu-dpu
40 - samsung,exynos850-cmu-g3d
41 - samsung,exynos850-cmu-hsi
42 - samsung,exynos850-cmu-is
43 - samsung,exynos850-cmu-mfcmscl
44 - samsung,exynos850-cmu-peri
45
46 clocks:
47 minItems: 1
48 maxItems: 5
49
50 clock-names:
51 minItems: 1
52 maxItems: 5
53
54 "#clock-cells":
55 const: 1
56
57 reg:
58 maxItems: 1
59
60allOf:
61 - if:
62 properties:
63 compatible:
64 contains:
65 const: samsung,exynos850-cmu-top
66
67 then:
68 properties:
69 clocks:
70 items:
71 - description: External reference clock (26 MHz)
72
73 clock-names:
74 items:
75 - const: oscclk
76
77 - if:
78 properties:
79 compatible:
80 contains:
81 const: samsung,exynos850-cmu-apm
82
83 then:
84 properties:
85 clocks:
86 items:
87 - description: External reference clock (26 MHz)
88 - description: CMU_APM bus clock (from CMU_TOP)
89
90 clock-names:
91 items:
92 - const: oscclk
93 - const: dout_clkcmu_apm_bus
94
95 - if:
96 properties:
97 compatible:
98 contains:
99 const: samsung,exynos850-cmu-aud
100
101 then:
102 properties:
103 clocks:
104 items:
105 - description: External reference clock (26 MHz)
106 - description: AUD clock (from CMU_TOP)
107
108 clock-names:
109 items:
110 - const: oscclk
111 - const: dout_aud
112
113 - if:
114 properties:
115 compatible:
116 contains:
117 const: samsung,exynos850-cmu-cmgp
118
119 then:
120 properties:
121 clocks:
122 items:
123 - description: External reference clock (26 MHz)
124 - description: CMU_CMGP bus clock (from CMU_APM)
125
126 clock-names:
127 items:
128 - const: oscclk
129 - const: gout_clkcmu_cmgp_bus
130
131 - if:
132 properties:
133 compatible:
134 contains:
135 const: samsung,exynos850-cmu-core
136
137 then:
138 properties:
139 clocks:
140 items:
141 - description: External reference clock (26 MHz)
142 - description: CMU_CORE bus clock (from CMU_TOP)
143 - description: CCI clock (from CMU_TOP)
144 - description: eMMC clock (from CMU_TOP)
145 - description: SSS clock (from CMU_TOP)
146
147 clock-names:
148 items:
149 - const: oscclk
150 - const: dout_core_bus
151 - const: dout_core_cci
152 - const: dout_core_mmc_embd
153 - const: dout_core_sss
154
155 - if:
156 properties:
157 compatible:
158 contains:
159 const: samsung,exynos850-cmu-dpu
160
161 then:
162 properties:
163 clocks:
164 items:
165 - description: External reference clock (26 MHz)
166 - description: DPU clock (from CMU_TOP)
167
168 clock-names:
169 items:
170 - const: oscclk
171 - const: dout_dpu
172
173 - if:
174 properties:
175 compatible:
176 contains:
177 const: samsung,exynos850-cmu-g3d
178
179 then:
180 properties:
181 clocks:
182 items:
183 - description: External reference clock (26 MHz)
184 - description: G3D clock (from CMU_TOP)
185
186 clock-names:
187 items:
188 - const: oscclk
189 - const: dout_g3d_switch
190
191 - if:
192 properties:
193 compatible:
194 contains:
195 const: samsung,exynos850-cmu-hsi
196
197 then:
198 properties:
199 clocks:
200 items:
201 - description: External reference clock (26 MHz)
202 - description: External RTC clock (32768 Hz)
203 - description: CMU_HSI bus clock (from CMU_TOP)
204 - description: SD card clock (from CMU_TOP)
205 - description: USB 2.0 DRD clock (from CMU_TOP)
206
207 clock-names:
208 items:
209 - const: oscclk
210 - const: rtcclk
211 - const: dout_hsi_bus
212 - const: dout_hsi_mmc_card
213 - const: dout_hsi_usb20drd
214
215 - if:
216 properties:
217 compatible:
218 contains:
219 const: samsung,exynos850-cmu-is
220
221 then:
222 properties:
223 clocks:
224 items:
225 - description: External reference clock (26 MHz)
226 - description: CMU_IS bus clock (from CMU_TOP)
227 - description: Image Texture Processing core clock (from CMU_TOP)
228 - description: Visual Recognition Accelerator clock (from CMU_TOP)
229 - description: Geometric Distortion Correction clock (from CMU_TOP)
230
231 clock-names:
232 items:
233 - const: oscclk
234 - const: dout_is_bus
235 - const: dout_is_itp
236 - const: dout_is_vra
237 - const: dout_is_gdc
238
239 - if:
240 properties:
241 compatible:
242 contains:
243 const: samsung,exynos850-cmu-mfcmscl
244
245 then:
246 properties:
247 clocks:
248 items:
249 - description: External reference clock (26 MHz)
250 - description: Multi-Format Codec clock (from CMU_TOP)
251 - description: Memory to Memory Scaler clock (from CMU_TOP)
252 - description: Multi-Channel Scaler clock (from CMU_TOP)
253 - description: JPEG codec clock (from CMU_TOP)
254
255 clock-names:
256 items:
257 - const: oscclk
258 - const: dout_mfcmscl_mfc
259 - const: dout_mfcmscl_m2m
260 - const: dout_mfcmscl_mcsc
261 - const: dout_mfcmscl_jpeg
262
263 - if:
264 properties:
265 compatible:
266 contains:
267 const: samsung,exynos850-cmu-peri
268
269 then:
270 properties:
271 clocks:
272 items:
273 - description: External reference clock (26 MHz)
274 - description: CMU_PERI bus clock (from CMU_TOP)
275 - description: UART clock (from CMU_TOP)
276 - description: Parent clock for HSI2C and SPI (from CMU_TOP)
277
278 clock-names:
279 items:
280 - const: oscclk
281 - const: dout_peri_bus
282 - const: dout_peri_uart
283 - const: dout_peri_ip
284
285required:
286 - compatible
287 - "#clock-cells"
288 - clocks
289 - clock-names
290 - reg
291
292additionalProperties: false
293
294examples:
295 # Clock controller node for CMU_PERI
296 - |
297 #include <dt-bindings/clock/exynos850.h>
298
299 cmu_peri: clock-controller@10030000 {
300 compatible = "samsung,exynos850-cmu-peri";
301 reg = <0x10030000 0x8000>;
302 #clock-cells = <1>;
303
304 clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
305 <&cmu_top CLK_DOUT_PERI_UART>,
306 <&cmu_top CLK_DOUT_PERI_IP>;
307 clock-names = "oscclk", "dout_peri_bus",
308 "dout_peri_uart", "dout_peri_ip";
309 };
310
311...