GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / clock / samsung,exynos850-clock.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/samsung,exynos850-clock.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Samsung Exynos850 SoC clock controller
8
9 maintainers:
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
16 description: |
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
31 properties:
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-hsi
41       - samsung,exynos850-cmu-is
42       - samsung,exynos850-cmu-mfcmscl
43       - samsung,exynos850-cmu-peri
44
45   clocks:
46     minItems: 1
47     maxItems: 5
48
49   clock-names:
50     minItems: 1
51     maxItems: 5
52
53   "#clock-cells":
54     const: 1
55
56   reg:
57     maxItems: 1
58
59 allOf:
60   - if:
61       properties:
62         compatible:
63           contains:
64             const: samsung,exynos850-cmu-top
65
66     then:
67       properties:
68         clocks:
69           items:
70             - description: External reference clock (26 MHz)
71
72         clock-names:
73           items:
74             - const: oscclk
75
76   - if:
77       properties:
78         compatible:
79           contains:
80             const: samsung,exynos850-cmu-apm
81
82     then:
83       properties:
84         clocks:
85           items:
86             - description: External reference clock (26 MHz)
87             - description: CMU_APM bus clock (from CMU_TOP)
88
89         clock-names:
90           items:
91             - const: oscclk
92             - const: dout_clkcmu_apm_bus
93
94   - if:
95       properties:
96         compatible:
97           contains:
98             const: samsung,exynos850-cmu-aud
99
100     then:
101       properties:
102         clocks:
103           items:
104             - description: External reference clock (26 MHz)
105             - description: AUD clock (from CMU_TOP)
106
107         clock-names:
108           items:
109             - const: oscclk
110             - const: dout_aud
111
112   - if:
113       properties:
114         compatible:
115           contains:
116             const: samsung,exynos850-cmu-cmgp
117
118     then:
119       properties:
120         clocks:
121           items:
122             - description: External reference clock (26 MHz)
123             - description: CMU_CMGP bus clock (from CMU_APM)
124
125         clock-names:
126           items:
127             - const: oscclk
128             - const: gout_clkcmu_cmgp_bus
129
130   - if:
131       properties:
132         compatible:
133           contains:
134             const: samsung,exynos850-cmu-core
135
136     then:
137       properties:
138         clocks:
139           items:
140             - description: External reference clock (26 MHz)
141             - description: CMU_CORE bus clock (from CMU_TOP)
142             - description: CCI clock (from CMU_TOP)
143             - description: eMMC clock (from CMU_TOP)
144             - description: SSS clock (from CMU_TOP)
145
146         clock-names:
147           items:
148             - const: oscclk
149             - const: dout_core_bus
150             - const: dout_core_cci
151             - const: dout_core_mmc_embd
152             - const: dout_core_sss
153
154   - if:
155       properties:
156         compatible:
157           contains:
158             const: samsung,exynos850-cmu-dpu
159
160     then:
161       properties:
162         clocks:
163           items:
164             - description: External reference clock (26 MHz)
165             - description: DPU clock (from CMU_TOP)
166
167         clock-names:
168           items:
169             - const: oscclk
170             - const: dout_dpu
171
172   - if:
173       properties:
174         compatible:
175           contains:
176             const: samsung,exynos850-cmu-hsi
177
178     then:
179       properties:
180         clocks:
181           items:
182             - description: External reference clock (26 MHz)
183             - description: External RTC clock (32768 Hz)
184             - description: CMU_HSI bus clock (from CMU_TOP)
185             - description: SD card clock (from CMU_TOP)
186             - description: "USB 2.0 DRD clock (from CMU_TOP)"
187
188         clock-names:
189           items:
190             - const: oscclk
191             - const: rtcclk
192             - const: dout_hsi_bus
193             - const: dout_hsi_mmc_card
194             - const: dout_hsi_usb20drd
195
196   - if:
197       properties:
198         compatible:
199           contains:
200             const: samsung,exynos850-cmu-is
201
202     then:
203       properties:
204         clocks:
205           items:
206             - description: External reference clock (26 MHz)
207             - description: CMU_IS bus clock (from CMU_TOP)
208             - description: Image Texture Processing core clock (from CMU_TOP)
209             - description: Visual Recognition Accelerator clock (from CMU_TOP)
210             - description: Geometric Distortion Correction clock (from CMU_TOP)
211
212         clock-names:
213           items:
214             - const: oscclk
215             - const: dout_is_bus
216             - const: dout_is_itp
217             - const: dout_is_vra
218             - const: dout_is_gdc
219
220   - if:
221       properties:
222         compatible:
223           contains:
224             const: samsung,exynos850-cmu-mfcmscl
225
226     then:
227       properties:
228         clocks:
229           items:
230             - description: External reference clock (26 MHz)
231             - description: Multi-Format Codec clock (from CMU_TOP)
232             - description: Memory to Memory Scaler clock (from CMU_TOP)
233             - description: Multi-Channel Scaler clock (from CMU_TOP)
234             - description: JPEG codec clock (from CMU_TOP)
235
236         clock-names:
237           items:
238             - const: oscclk
239             - const: dout_mfcmscl_mfc
240             - const: dout_mfcmscl_m2m
241             - const: dout_mfcmscl_mcsc
242             - const: dout_mfcmscl_jpeg
243
244   - if:
245       properties:
246         compatible:
247           contains:
248             const: samsung,exynos850-cmu-peri
249
250     then:
251       properties:
252         clocks:
253           items:
254             - description: External reference clock (26 MHz)
255             - description: CMU_PERI bus clock (from CMU_TOP)
256             - description: UART clock (from CMU_TOP)
257             - description: Parent clock for HSI2C and SPI (from CMU_TOP)
258
259         clock-names:
260           items:
261             - const: oscclk
262             - const: dout_peri_bus
263             - const: dout_peri_uart
264             - const: dout_peri_ip
265
266 required:
267   - compatible
268   - "#clock-cells"
269   - clocks
270   - clock-names
271   - reg
272
273 additionalProperties: false
274
275 examples:
276   # Clock controller node for CMU_PERI
277   - |
278     #include <dt-bindings/clock/exynos850.h>
279
280     cmu_peri: clock-controller@10030000 {
281         compatible = "samsung,exynos850-cmu-peri";
282         reg = <0x10030000 0x8000>;
283         #clock-cells = <1>;
284
285         clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
286                  <&cmu_top CLK_DOUT_PERI_UART>,
287                  <&cmu_top CLK_DOUT_PERI_IP>;
288         clock-names = "oscclk", "dout_peri_bus",
289                       "dout_peri_uart", "dout_peri_ip";
290     };
291
292 ...