Skip to content

Commit 4defb93

Browse files
committed
Merge tag 'samsung-clk-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into clk-samsung
Pull Samsung clk driver updates from Krzysztof Kozlowski: - Samsung Exynos990: Add support for the PERIS clock controller in existing driver - Samsung Exynos2200: Add new driver for several clock controllers (Alive, CMGP, HSI, PERIC/PERIS, TOP, UFS and VFS) - Samsung Exynos7870: Add new driver for several clock controllers (Alive, MIF, DISP AUD, FSYS, G3D, ISP, MFC and PERI) - Correct undefined behavior / runtime array bounds check of flexible array member (last 'hws' element in 'struct clk_hw_onecell_data'). The code was logically correct for normal case, but not for the clang/GCC runtime bounds checking of flexible array member. - Spelling and header inclusion cleanups * tag 'samsung-clk-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: clk: samsung: Drop unused clk.h and of.h headers clk: samsung: Add missing mod_devicetable.h header clk: samsung: add initial exynos7870 clock driver clk: samsung: introduce Exynos2200 clock driver clk: samsung: clk-pll: add support for pll_4311 dt-bindings: clock: add clock definitions and documentation for exynos7870 CMU dt-bindings: clock: add Exynos2200 SoC clk: samsung: Fix UBSAN panic in samsung_clk_init() clk: samsung: Fix spelling mistake "stablization" -> "stabilization" clk: samsung: exynos990: Add CMU_PERIS block dt-bindings: clock: exynos990: Add CMU_PERIS block
2 parents 2014c95 + 017bbc9 commit 4defb93

37 files changed

+7231
-28
lines changed
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
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,exynos2200-cmu.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Samsung Exynos2200 SoC clock controller
8+
9+
maintainers:
10+
- Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
11+
- Chanwoo Choi <cw00.choi@samsung.com>
12+
- Krzysztof Kozlowski <krzk@kernel.org>
13+
14+
description: |
15+
Exynos2200 clock controller is comprised of several CMU units, generating
16+
clocks for different domains. Those CMU units are modeled as separate device
17+
tree nodes, and might depend on each other. The root clocks in that root tree
18+
are two external clocks: XTCXO (76.8 MHz) and RTCCLK (32768 Hz). XTCXO must be
19+
defined as a fixed-rate clock in dts, whereas RTCCLK originates from PMIC.
20+
21+
CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
22+
dividers; all other clocks of function blocks (other CMUs) are usually
23+
derived from CMU_TOP.
24+
25+
Each clock is assigned an identifier and client nodes can use this identifier
26+
to specify the clock which they consume. All clocks available for usage
27+
in clock consumer nodes are defined as preprocessor macros in
28+
'include/dt-bindings/clock/samsung,exynos2200-cmu.h' header.
29+
30+
properties:
31+
compatible:
32+
enum:
33+
- samsung,exynos2200-cmu-alive
34+
- samsung,exynos2200-cmu-cmgp
35+
- samsung,exynos2200-cmu-hsi0
36+
- samsung,exynos2200-cmu-peric0
37+
- samsung,exynos2200-cmu-peric1
38+
- samsung,exynos2200-cmu-peric2
39+
- samsung,exynos2200-cmu-peris
40+
- samsung,exynos2200-cmu-top
41+
- samsung,exynos2200-cmu-ufs
42+
- samsung,exynos2200-cmu-vts
43+
44+
clocks:
45+
minItems: 1
46+
maxItems: 6
47+
48+
clock-names:
49+
minItems: 1
50+
maxItems: 6
51+
52+
"#clock-cells":
53+
const: 1
54+
55+
reg:
56+
maxItems: 1
57+
58+
required:
59+
- compatible
60+
- clocks
61+
- clock-names
62+
- reg
63+
- "#clock-cells"
64+
65+
allOf:
66+
- if:
67+
properties:
68+
compatible:
69+
contains:
70+
const: samsung,exynos2200-cmu-alive
71+
72+
then:
73+
properties:
74+
clocks:
75+
items:
76+
- description: External reference clock (76.8 MHz)
77+
- description: CMU_ALIVE NOC clock (from CMU_TOP)
78+
79+
clock-names:
80+
items:
81+
- const: oscclk
82+
- const: noc
83+
84+
- if:
85+
properties:
86+
compatible:
87+
contains:
88+
const: samsung,exynos2200-cmu-cmgp
89+
90+
then:
91+
properties:
92+
clocks:
93+
items:
94+
- description: External reference clock (76.8 MHz)
95+
- description: CMU_CMGP NOC clock (from CMU_TOP)
96+
- description: CMU_CMGP PERI clock (from CMU_TOP)
97+
98+
clock-names:
99+
items:
100+
- const: oscclk
101+
- const: noc
102+
- const: peri
103+
104+
- if:
105+
properties:
106+
compatible:
107+
contains:
108+
const: samsung,exynos2200-cmu-hsi0
109+
110+
then:
111+
properties:
112+
clocks:
113+
items:
114+
- description: External reference clock (76.8 MHz)
115+
- description: External RTC clock (32768 Hz)
116+
- description: CMU_HSI0 NOC clock (from CMU_TOP)
117+
- description: CMU_HSI0 DPGTC clock (from CMU_TOP)
118+
- description: CMU_HSI0 DPOSC clock (from CMU_TOP)
119+
- description: CMU_HSI0 USB32DRD clock (from CMU_TOP)
120+
121+
clock-names:
122+
items:
123+
- const: oscclk
124+
- const: rtcclk
125+
- const: noc
126+
- const: dpgtc
127+
- const: dposc
128+
- const: usb
129+
130+
- if:
131+
properties:
132+
compatible:
133+
contains:
134+
enum:
135+
- samsung,exynos2200-cmu-peric0
136+
- samsung,exynos2200-cmu-peric1
137+
- samsung,exynos2200-cmu-peric2
138+
139+
then:
140+
properties:
141+
clocks:
142+
items:
143+
- description: External reference clock (76.8 MHz)
144+
- description: CMU_PERICn NOC clock (from CMU_TOP)
145+
- description: CMU_PERICn IP0 clock (from CMU_TOP)
146+
- description: CMU_PERICn IP1 clock (from CMU_TOP)
147+
148+
clock-names:
149+
items:
150+
- const: oscclk
151+
- const: noc
152+
- const: ip0
153+
- const: ip1
154+
155+
- if:
156+
properties:
157+
compatible:
158+
contains:
159+
const: samsung,exynos2200-cmu-peris
160+
161+
then:
162+
properties:
163+
clocks:
164+
items:
165+
- description: External reference clock (25.6 MHz)
166+
- description: CMU_PERIS NOC clock (from CMU_TOP)
167+
- description: CMU_PERIS GIC clock (from CMU_TOP)
168+
169+
clock-names:
170+
items:
171+
- const: tcxo_div3
172+
- const: noc
173+
- const: gic
174+
175+
- if:
176+
properties:
177+
compatible:
178+
contains:
179+
const: samsung,exynos2200-cmu-top
180+
181+
then:
182+
properties:
183+
clocks:
184+
items:
185+
- description: External reference clock (76.8 MHz)
186+
187+
clock-names:
188+
items:
189+
- const: oscclk
190+
191+
- if:
192+
properties:
193+
compatible:
194+
contains:
195+
const: samsung,exynos2200-cmu-ufs
196+
197+
then:
198+
properties:
199+
clocks:
200+
items:
201+
- description: External reference clock (76.8 MHz)
202+
- description: CMU_UFS NOC clock (from CMU_TOP)
203+
- description: CMU_UFS MMC clock (from CMU_TOP)
204+
- description: CMU_UFS UFS clock (from CMU_TOP)
205+
206+
clock-names:
207+
items:
208+
- const: oscclk
209+
- const: noc
210+
- const: mmc
211+
- const: ufs
212+
213+
- if:
214+
properties:
215+
compatible:
216+
contains:
217+
const: samsung,exynos2200-cmu-vts
218+
219+
then:
220+
properties:
221+
clocks:
222+
items:
223+
- description: External reference clock (76.8 MHz)
224+
- description: CMU_VTS DMIC clock (from CMU_TOP)
225+
226+
clock-names:
227+
items:
228+
- const: oscclk
229+
- const: dmic
230+
231+
additionalProperties: false
232+
233+
examples:
234+
- |
235+
#include <dt-bindings/clock/samsung,exynos2200-cmu.h>
236+
237+
cmu_vts: clock-controller@15300000 {
238+
compatible = "samsung,exynos2200-cmu-vts";
239+
reg = <0x15300000 0x8000>;
240+
#clock-cells = <1>;
241+
242+
clocks = <&oscclk>,
243+
<&cmu_top CLK_DOUT_CMU_VTS_DMIC>;
244+
clock-names = "oscclk", "dmic";
245+
};
246+
247+
...

0 commit comments

Comments
 (0)