Skip to content

Commit 42ca4f0

Browse files
committed
Merge tag 'samsung-clk-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into clk-samsung
Pull Samsung SoC clock driver updates from Krzysztof Kozlowski: - Axis ARTPEC-9: Add new PLL clocks and new drivers for eight clock controllers on the SoC - ExynosAutov920: Add G3D (GPU) clock controller - Exynos850: Define missing clock for the APM mailbox * tag 'samsung-clk-7.1' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: clk: samsung: exynos850: Add APM-to-AP mailbox clock dt-bindings: clock: exynos850: Add APM_AP MAILBOX clock clk: samsung: Use %pe format to simplify clk: samsung: pll: Fix possible truncation in a9fraco recalc rate clk: samsung: exynosautov920: add block G3D clock support dt-bindings: clock: exynosautov920: add G3D clock definitions clk: samsung: gs101: harmonise symbol names (clock arrays) clk: samsung: artpec-9: Add initial clock support for ARTPEC-9 SoC clk: samsung: Add clock PLL support for ARTPEC-9 SoC dt-bindings: clock: Add ARTPEC-9 clock controller
2 parents c369299 + e57c36b commit 42ca4f0

13 files changed

Lines changed: 1960 additions & 37 deletions

File tree

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/clock/axis,artpec9-clock.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Axis ARTPEC-9 SoC clock controller
8+
9+
maintainers:
10+
- Jesper Nilsson <[email protected]>
11+
12+
description: |
13+
ARTPEC-9 clock controller is comprised of several CMU (Clock Management Unit)
14+
units, generating clocks for different domains. Those CMU units are modeled
15+
as separate device tree nodes, and might depend on each other.
16+
The root clock in that root tree is an external clock: OSCCLK (25 MHz).
17+
This external clock must be defined as a fixed-rate clock in dts.
18+
19+
CMU_CMU is a top-level CMU, where all base clocks are prepared using PLLs and
20+
dividers, all other clocks of function blocks (other CMUs) are usually
21+
derived from CMU_CMU.
22+
23+
Each clock is assigned an identifier and client nodes can use this identifier
24+
to specify the clock which they consume. All clocks available for usage
25+
in clock consumer nodes are defined as preprocessor macros in
26+
'include/dt-bindings/clock/axis,artpec9-clk.h' header.
27+
28+
properties:
29+
compatible:
30+
enum:
31+
- axis,artpec9-cmu-cmu
32+
- axis,artpec9-cmu-bus
33+
- axis,artpec9-cmu-core
34+
- axis,artpec9-cmu-cpucl
35+
- axis,artpec9-cmu-fsys0
36+
- axis,artpec9-cmu-fsys1
37+
- axis,artpec9-cmu-imem
38+
- axis,artpec9-cmu-peri
39+
40+
reg:
41+
maxItems: 1
42+
43+
clocks:
44+
minItems: 1
45+
maxItems: 5
46+
47+
clock-names:
48+
minItems: 1
49+
maxItems: 5
50+
51+
"#clock-cells":
52+
const: 1
53+
54+
required:
55+
- compatible
56+
- reg
57+
- clocks
58+
- clock-names
59+
- "#clock-cells"
60+
61+
allOf:
62+
- if:
63+
properties:
64+
compatible:
65+
const: axis,artpec9-cmu-cmu
66+
67+
then:
68+
properties:
69+
clocks:
70+
items:
71+
- description: External reference clock (25 MHz)
72+
73+
clock-names:
74+
items:
75+
- const: fin_pll
76+
77+
- if:
78+
properties:
79+
compatible:
80+
const: axis,artpec9-cmu-bus
81+
82+
then:
83+
properties:
84+
clocks:
85+
items:
86+
- description: External reference clock (25 MHz)
87+
- description: CMU_BUS bus clock (from CMU_CMU)
88+
89+
clock-names:
90+
items:
91+
- const: fin_pll
92+
- const: bus
93+
94+
- if:
95+
properties:
96+
compatible:
97+
const: axis,artpec9-cmu-core
98+
99+
then:
100+
properties:
101+
clocks:
102+
items:
103+
- description: External reference clock (25 MHz)
104+
- description: CMU_CORE main clock (from CMU_CMU)
105+
106+
clock-names:
107+
items:
108+
- const: fin_pll
109+
- const: main
110+
111+
- if:
112+
properties:
113+
compatible:
114+
const: axis,artpec9-cmu-cpucl
115+
116+
then:
117+
properties:
118+
clocks:
119+
items:
120+
- description: External reference clock (25 MHz)
121+
- description: CMU_CPUCL switch clock (from CMU_CMU)
122+
123+
clock-names:
124+
items:
125+
- const: fin_pll
126+
- const: switch
127+
128+
- if:
129+
properties:
130+
compatible:
131+
const: axis,artpec9-cmu-fsys0
132+
133+
then:
134+
properties:
135+
clocks:
136+
items:
137+
- description: External reference clock (25 MHz)
138+
- description: CMU_FSYS0 bus clock (from CMU_CMU)
139+
- description: CMU_FSYS0 IP clock (from CMU_CMU)
140+
141+
clock-names:
142+
items:
143+
- const: fin_pll
144+
- const: bus
145+
- const: ip
146+
147+
- if:
148+
properties:
149+
compatible:
150+
const: axis,artpec9-cmu-fsys1
151+
152+
then:
153+
properties:
154+
clocks:
155+
items:
156+
- description: External reference clock (25 MHz)
157+
- description: CMU_FSYS1 scan0 clock (from CMU_CMU)
158+
- description: CMU_FSYS1 scan1 clock (from CMU_CMU)
159+
- description: CMU_FSYS1 bus clock (from CMU_CMU)
160+
161+
clock-names:
162+
items:
163+
- const: fin_pll
164+
- const: scan0
165+
- const: scan1
166+
- const: bus
167+
168+
- if:
169+
properties:
170+
compatible:
171+
const: axis,artpec9-cmu-imem
172+
173+
then:
174+
properties:
175+
clocks:
176+
items:
177+
- description: External reference clock (25 MHz)
178+
- description: CMU_IMEM ACLK clock (from CMU_CMU)
179+
- description: CMU_IMEM CA5 clock (from CMU_CMU)
180+
- description: CMU_IMEM JPEG clock (from CMU_CMU)
181+
- description: CMU_IMEM SSS clock (from CMU_CMU)
182+
183+
clock-names:
184+
items:
185+
- const: fin_pll
186+
- const: aclk
187+
- const: ca5
188+
- const: jpeg
189+
- const: sss
190+
191+
- if:
192+
properties:
193+
compatible:
194+
const: axis,artpec9-cmu-peri
195+
196+
then:
197+
properties:
198+
clocks:
199+
items:
200+
- description: External reference clock (25 MHz)
201+
- description: CMU_PERI IP clock (from CMU_CMU)
202+
- description: CMU_PERI DISP clock (from CMU_CMU)
203+
204+
clock-names:
205+
items:
206+
- const: fin_pll
207+
- const: ip
208+
- const: disp
209+
210+
additionalProperties: false
211+
212+
examples:
213+
# Clock controller node for CMU_FSYS1
214+
- |
215+
#include <dt-bindings/clock/axis,artpec9-clk.h>
216+
217+
soc {
218+
#address-cells = <2>;
219+
#size-cells = <2>;
220+
221+
cmu_fsys1: clock-controller@14c10000 {
222+
compatible = "axis,artpec9-cmu-fsys1";
223+
reg = <0x0 0x14c10000 0x0 0x4000>;
224+
#clock-cells = <1>;
225+
clocks = <&fin_pll>,
226+
<&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN0>,
227+
<&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN1>,
228+
<&cmu_cmu CLK_DOUT_CMU_FSYS1_BUS>;
229+
clock-names = "fin_pll", "scan0", "scan1", "bus";
230+
};
231+
};
232+
...

Documentation/devicetree/bindings/clock/samsung,exynosautov920-clock.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ properties:
3535
- samsung,exynosautov920-cmu-cpucl0
3636
- samsung,exynosautov920-cmu-cpucl1
3737
- samsung,exynosautov920-cmu-cpucl2
38+
- samsung,exynosautov920-cmu-g3d
3839
- samsung,exynosautov920-cmu-hsi0
3940
- samsung,exynosautov920-cmu-hsi1
4041
- samsung,exynosautov920-cmu-hsi2
@@ -287,6 +288,26 @@ allOf:
287288
- const: oscclk
288289
- const: noc
289290

291+
- if:
292+
properties:
293+
compatible:
294+
contains:
295+
const: samsung,exynosautov920-cmu-g3d
296+
297+
then:
298+
properties:
299+
clocks:
300+
items:
301+
- description: External reference clock (38.4 MHz)
302+
- description: CMU_G3D SWITCH clock (from CMU_TOP)
303+
- description: CMU_G3D NOCP clock (from CMU_TOP)
304+
305+
clock-names:
306+
items:
307+
- const: oscclk
308+
- const: switch
309+
- const: nocp
310+
290311
required:
291312
- compatible
292313
- "#clock-cells"

drivers/clk/samsung/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ obj-$(CONFIG_EXYNOS_5410_COMMON_CLK) += clk-exynos5410.o
1414
obj-$(CONFIG_EXYNOS_5420_COMMON_CLK) += clk-exynos5420.o
1515
obj-$(CONFIG_EXYNOS_5420_COMMON_CLK) += clk-exynos5-subcmu.o
1616
obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-artpec8.o
17+
obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-artpec9.o
1718
obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos5433.o
1819
obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o
1920
obj-$(CONFIG_EXYNOS_CLKOUT) += clk-exynos-clkout.o

0 commit comments

Comments
 (0)