Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
[sfrench/cifs-2.6.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-cmgp
37       - samsung,exynos850-cmu-core
38       - samsung,exynos850-cmu-dpu
39       - samsung,exynos850-cmu-hsi
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
56 allOf:
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-cmgp
96
97     then:
98       properties:
99         clocks:
100           items:
101             - description: External reference clock (26 MHz)
102             - description: CMU_CMGP bus clock (from CMU_APM)
103
104         clock-names:
105           items:
106             - const: oscclk
107             - const: gout_clkcmu_cmgp_bus
108
109   - if:
110       properties:
111         compatible:
112           contains:
113             const: samsung,exynos850-cmu-core
114
115     then:
116       properties:
117         clocks:
118           items:
119             - description: External reference clock (26 MHz)
120             - description: CMU_CORE bus clock (from CMU_TOP)
121             - description: CCI clock (from CMU_TOP)
122             - description: eMMC clock (from CMU_TOP)
123             - description: SSS clock (from CMU_TOP)
124
125         clock-names:
126           items:
127             - const: oscclk
128             - const: dout_core_bus
129             - const: dout_core_cci
130             - const: dout_core_mmc_embd
131             - const: dout_core_sss
132
133   - if:
134       properties:
135         compatible:
136           contains:
137             const: samsung,exynos850-cmu-dpu
138
139     then:
140       properties:
141         clocks:
142           items:
143             - description: External reference clock (26 MHz)
144             - description: DPU clock (from CMU_TOP)
145
146         clock-names:
147           items:
148             - const: oscclk
149             - const: dout_dpu
150
151   - if:
152       properties:
153         compatible:
154           contains:
155             const: samsung,exynos850-cmu-hsi
156
157     then:
158       properties:
159         clocks:
160           items:
161             - description: External reference clock (26 MHz)
162             - description: External RTC clock (32768 Hz)
163             - description: CMU_HSI bus clock (from CMU_TOP)
164             - description: SD card clock (from CMU_TOP)
165             - description: "USB 2.0 DRD clock (from CMU_TOP)"
166
167         clock-names:
168           items:
169             - const: oscclk
170             - const: rtcclk
171             - const: dout_hsi_bus
172             - const: dout_hsi_mmc_card
173             - const: dout_hsi_usb20drd
174
175   - if:
176       properties:
177         compatible:
178           contains:
179             const: samsung,exynos850-cmu-peri
180
181     then:
182       properties:
183         clocks:
184           items:
185             - description: External reference clock (26 MHz)
186             - description: CMU_PERI bus clock (from CMU_TOP)
187             - description: UART clock (from CMU_TOP)
188             - description: Parent clock for HSI2C and SPI (from CMU_TOP)
189
190         clock-names:
191           items:
192             - const: oscclk
193             - const: dout_peri_bus
194             - const: dout_peri_uart
195             - const: dout_peri_ip
196
197 required:
198   - compatible
199   - "#clock-cells"
200   - clocks
201   - clock-names
202   - reg
203
204 additionalProperties: false
205
206 examples:
207   # Clock controller node for CMU_PERI
208   - |
209     #include <dt-bindings/clock/exynos850.h>
210
211     cmu_peri: clock-controller@10030000 {
212         compatible = "samsung,exynos850-cmu-peri";
213         reg = <0x10030000 0x8000>;
214         #clock-cells = <1>;
215
216         clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
217                  <&cmu_top CLK_DOUT_PERI_UART>,
218                  <&cmu_top CLK_DOUT_PERI_IP>;
219         clock-names = "oscclk", "dout_peri_bus",
220                       "dout_peri_uart", "dout_peri_ip";
221     };
222
223 ...