1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/samsung,exynos5433-clock.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos5433 SoC clock controller
8
9maintainers:
10  - Chanwoo Choi <cw00.choi@samsung.com>
11  - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
12  - Sylwester Nawrocki <s.nawrocki@samsung.com>
13  - Tomasz Figa <tomasz.figa@gmail.com>
14
15description: |
16  Expected external clocks, defined in DTS as fixed-rate clocks with a matching
17  name::
18    - "oscclk" - PLL input clock from XXTI
19
20  All available clocks are defined as preprocessor macros in
21  include/dt-bindings/clock/exynos5433.h header.
22
23properties:
24  compatible:
25    enum:
26        # CMU_TOP which generates clocks for
27        # IMEM/FSYS/G3D/GSCL/HEVC/MSCL/G2D/MFC/PERIC/PERIS domains and bus
28        # clocks
29      - samsung,exynos5433-cmu-top
30        # CMU_CPIF which generates clocks for LLI (Low Latency Interface) IP
31      - samsung,exynos5433-cmu-cpif
32        # CMU_MIF which generates clocks for DRAM Memory Controller domain
33      - samsung,exynos5433-cmu-mif
34        # CMU_PERIC which generates clocks for
35        # UART/I2C/SPI/I2S/PCM/SPDIF/PWM/SLIMBUS IPs
36      - samsung,exynos5433-cmu-peric
37        # CMU_PERIS which generates clocks for PMU/TMU/MCT/WDT/RTC/SECKEY/TZPC IPs
38      - samsung,exynos5433-cmu-peris
39        # CMU_FSYS which generates clocks for USB/UFS/SDMMC/TSI/PDMA IPs
40      - samsung,exynos5433-cmu-fsys
41      - samsung,exynos5433-cmu-g2d
42        # CMU_DISP which generates clocks for Display (DECON/HDMI/DSIM/MIXER) IPs
43      - samsung,exynos5433-cmu-disp
44      - samsung,exynos5433-cmu-aud
45      - samsung,exynos5433-cmu-bus0
46      - samsung,exynos5433-cmu-bus1
47      - samsung,exynos5433-cmu-bus2
48      - samsung,exynos5433-cmu-g3d
49      - samsung,exynos5433-cmu-gscl
50      - samsung,exynos5433-cmu-apollo
51        # CMU_ATLAS which generates clocks for Cortex-A57 Quad-core processor,
52        # CoreSight and  L2 cache controller
53      - samsung,exynos5433-cmu-atlas
54        # CMU_MSCL which generates clocks for M2M (Memory to Memory) scaler and
55        # JPEG IPs
56      - samsung,exynos5433-cmu-mscl
57      - samsung,exynos5433-cmu-mfc
58      - samsung,exynos5433-cmu-hevc
59        # CMU_ISP which generates clocks for FIMC-ISP/DRC/SCLC/DIS/3DNR IPs
60      - samsung,exynos5433-cmu-isp
61        # CMU_CAM0 which generates clocks for
62        # MIPI_CSIS{0|1}/FIMC_LITE_{A|B|D}/FIMC_3AA{0|1} IPs
63      - samsung,exynos5433-cmu-cam0
64        # CMU_CAM1 which generates clocks for
65        # Cortex-A5/MIPI_CSIS2/FIMC-LITE_C/FIMC-FD IPs
66      - samsung,exynos5433-cmu-cam1
67        # CMU_IMEM which generates clocks for SSS (Security SubSystem) and
68        # SlimSSS IPs
69      - samsung,exynos5433-cmu-imem
70
71  clocks:
72    minItems: 1
73    maxItems: 10
74
75  clock-names:
76    minItems: 1
77    maxItems: 10
78
79  "#clock-cells":
80    const: 1
81
82  power-domains:
83    maxItems: 1
84
85  reg:
86    maxItems: 1
87
88required:
89  - compatible
90  - "#clock-cells"
91  - reg
92
93allOf:
94  - if:
95      properties:
96        compatible:
97          contains:
98            const: samsung,exynos5433-cmu-top
99    then:
100      properties:
101        clocks:
102          minItems: 4
103          maxItems: 4
104        clock-names:
105          items:
106            - const: oscclk
107            - const: sclk_mphy_pll
108            - const: sclk_mfc_pll
109            - const: sclk_bus_pll
110      required:
111        - clock-names
112        - clocks
113
114  - if:
115      properties:
116        compatible:
117          contains:
118            const: samsung,exynos5433-cmu-cpif
119    then:
120      properties:
121        clocks:
122          minItems: 1
123          maxItems: 1
124        clock-names:
125          items:
126            - const: oscclk
127      required:
128        - clock-names
129        - clocks
130
131  - if:
132      properties:
133        compatible:
134          contains:
135            const: samsung,exynos5433-cmu-mif
136    then:
137      properties:
138        clocks:
139          minItems: 2
140          maxItems: 2
141        clock-names:
142          items:
143            - const: oscclk
144            - const: sclk_mphy_pll
145      required:
146        - clock-names
147        - clocks
148
149  - if:
150      properties:
151        compatible:
152          contains:
153            const: samsung,exynos5433-cmu-fsys
154    then:
155      properties:
156        clocks:
157          minItems: 10
158          maxItems: 10
159        clock-names:
160          items:
161            - const: oscclk
162            - const: sclk_ufs_mphy
163            - const: aclk_fsys_200
164            - const: sclk_pcie_100_fsys
165            - const: sclk_ufsunipro_fsys
166            - const: sclk_mmc2_fsys
167            - const: sclk_mmc1_fsys
168            - const: sclk_mmc0_fsys
169            - const: sclk_usbhost30_fsys
170            - const: sclk_usbdrd30_fsys
171      required:
172        - clock-names
173        - clocks
174
175  - if:
176      properties:
177        compatible:
178          contains:
179            const: samsung,exynos5433-cmu-g2d
180    then:
181      properties:
182        clocks:
183          minItems: 3
184          maxItems: 3
185        clock-names:
186          items:
187            - const: oscclk
188            - const: aclk_g2d_266
189            - const: aclk_g2d_400
190      required:
191        - clock-names
192        - clocks
193
194  - if:
195      properties:
196        compatible:
197          contains:
198            const: samsung,exynos5433-cmu-disp
199    then:
200      properties:
201        clocks:
202          minItems: 9
203          maxItems: 9
204        clock-names:
205          items:
206            - const: oscclk
207            - const: sclk_dsim1_disp
208            - const: sclk_dsim0_disp
209            - const: sclk_dsd_disp
210            - const: sclk_decon_tv_eclk_disp
211            - const: sclk_decon_vclk_disp
212            - const: sclk_decon_eclk_disp
213            - const: sclk_decon_tv_vclk_disp
214            - const: aclk_disp_333
215      required:
216        - clock-names
217        - clocks
218
219  - if:
220      properties:
221        compatible:
222          contains:
223            const: samsung,exynos5433-cmu-aud
224    then:
225      properties:
226        clocks:
227          minItems: 2
228          maxItems: 2
229        clock-names:
230          items:
231            - const: oscclk
232            - const: fout_aud_pll
233      required:
234        - clock-names
235        - clocks
236
237  - if:
238      properties:
239        compatible:
240          contains:
241            const: samsung,exynos5433-cmu-bus0
242    then:
243      properties:
244        clocks:
245          minItems: 1
246          maxItems: 1
247        clock-names:
248          items:
249            - const: aclk_bus0_400
250      required:
251        - clock-names
252        - clocks
253
254  - if:
255      properties:
256        compatible:
257          contains:
258            const: samsung,exynos5433-cmu-bus1
259    then:
260      properties:
261        clocks:
262          minItems: 1
263          maxItems: 1
264        clock-names:
265          items:
266            - const: aclk_bus1_400
267      required:
268        - clock-names
269        - clocks
270
271  - if:
272      properties:
273        compatible:
274          contains:
275            const: samsung,exynos5433-cmu-bus2
276    then:
277      properties:
278        clocks:
279          minItems: 2
280          maxItems: 2
281        clock-names:
282          items:
283            - const: oscclk
284            - const: aclk_bus2_400
285      required:
286        - clock-names
287        - clocks
288
289  - if:
290      properties:
291        compatible:
292          contains:
293            const: samsung,exynos5433-cmu-g3d
294    then:
295      properties:
296        clocks:
297          minItems: 2
298          maxItems: 2
299        clock-names:
300          items:
301            - const: oscclk
302            - const: aclk_g3d_400
303      required:
304        - clock-names
305        - clocks
306
307  - if:
308      properties:
309        compatible:
310          contains:
311            const: samsung,exynos5433-cmu-gscl
312    then:
313      properties:
314        clocks:
315          minItems: 3
316          maxItems: 3
317        clock-names:
318          items:
319            - const: oscclk
320            - const: aclk_gscl_111
321            - const: aclk_gscl_333
322      required:
323        - clock-names
324        - clocks
325
326  - if:
327      properties:
328        compatible:
329          contains:
330            const: samsung,exynos5433-cmu-apollo
331    then:
332      properties:
333        clocks:
334          minItems: 2
335          maxItems: 2
336        clock-names:
337          items:
338            - const: oscclk
339            - const: sclk_bus_pll_apollo
340      required:
341        - clock-names
342        - clocks
343
344  - if:
345      properties:
346        compatible:
347          contains:
348            const: samsung,exynos5433-cmu-atlas
349    then:
350      properties:
351        clocks:
352          minItems: 2
353          maxItems: 2
354        clock-names:
355          items:
356            - const: oscclk
357            - const: sclk_bus_pll_atlas
358      required:
359        - clock-names
360        - clocks
361
362  - if:
363      properties:
364        compatible:
365          contains:
366            const: samsung,exynos5433-cmu-mscl
367    then:
368      properties:
369        clocks:
370          minItems: 3
371          maxItems: 3
372        clock-names:
373          items:
374            - const: oscclk
375            - const: sclk_jpeg_mscl
376            - const: aclk_mscl_400
377      required:
378        - clock-names
379        - clocks
380
381  - if:
382      properties:
383        compatible:
384          contains:
385            const: samsung,exynos5433-cmu-mfc
386    then:
387      properties:
388        clocks:
389          minItems: 2
390          maxItems: 2
391        clock-names:
392          items:
393            - const: oscclk
394            - const: aclk_mfc_400
395      required:
396        - clock-names
397        - clocks
398
399  - if:
400      properties:
401        compatible:
402          contains:
403            const: samsung,exynos5433-cmu-hevc
404    then:
405      properties:
406        clocks:
407          minItems: 2
408          maxItems: 2
409        clock-names:
410          items:
411            - const: oscclk
412            - const: aclk_hevc_400
413      required:
414        - clock-names
415        - clocks
416
417  - if:
418      properties:
419        compatible:
420          contains:
421            const: samsung,exynos5433-cmu-isp
422    then:
423      properties:
424        clocks:
425          minItems: 3
426          maxItems: 3
427        clock-names:
428          items:
429            - const: oscclk
430            - const: aclk_isp_dis_400
431            - const: aclk_isp_400
432      required:
433        - clock-names
434        - clocks
435
436  - if:
437      properties:
438        compatible:
439          contains:
440            const: samsung,exynos5433-cmu-cam0
441    then:
442      properties:
443        clocks:
444          minItems: 4
445          maxItems: 4
446        clock-names:
447          items:
448            - const: oscclk
449            - const: aclk_cam0_333
450            - const: aclk_cam0_400
451            - const: aclk_cam0_552
452      required:
453        - clock-names
454        - clocks
455
456  - if:
457      properties:
458        compatible:
459          contains:
460            const: samsung,exynos5433-cmu-cam1
461    then:
462      properties:
463        clocks:
464          minItems: 7
465          maxItems: 7
466        clock-names:
467          items:
468            - const: oscclk
469            - const: sclk_isp_uart_cam1
470            - const: sclk_isp_spi1_cam1
471            - const: sclk_isp_spi0_cam1
472            - const: aclk_cam1_333
473            - const: aclk_cam1_400
474            - const: aclk_cam1_552
475      required:
476        - clock-names
477        - clocks
478
479  - if:
480      properties:
481        compatible:
482          contains:
483            const: samsung,exynos5433-cmu-imem
484    then:
485      properties:
486        clocks:
487          minItems: 4
488          maxItems: 4
489        clock-names:
490          items:
491            - const: oscclk
492            - const: aclk_imem_sssx_266
493            - const: aclk_imem_266
494            - const: aclk_imem_200
495      required:
496        - clock-names
497        - clocks
498
499additionalProperties: false
500
501examples:
502  - |
503    #include <dt-bindings/clock/exynos5433.h>
504    xxti: clock {
505        compatible = "fixed-clock";
506        clock-output-names = "oscclk";
507        #clock-cells = <0>;
508        clock-frequency = <24000000>;
509    };
510
511    clock-controller@10030000 {
512        compatible = "samsung,exynos5433-cmu-top";
513        reg = <0x10030000 0x1000>;
514        #clock-cells = <1>;
515
516        clock-names = "oscclk",
517                      "sclk_mphy_pll",
518                      "sclk_mfc_pll",
519                      "sclk_bus_pll";
520        clocks = <&xxti>,
521                 <&cmu_cpif CLK_SCLK_MPHY_PLL>,
522                 <&cmu_mif CLK_SCLK_MFC_PLL>,
523                 <&cmu_mif CLK_SCLK_BUS_PLL>;
524    };
525