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,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...
312