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