Skip to content

Commit 6974ae5

Browse files
GyoungBo Minkrzk
authored andcommitted
dt-bindings: clock: Add ARTPEC-9 clock controller
Add dt-schema for Axis ARTPEC-9 SoC clock controller. The Clock Management Unit (CMU) has a top-level block CMU_CMU which generates clocks for other blocks. Add device-tree binding definitions for following CMU blocks: - CMU_CMU - CMU_BUS - CMU_CORE - CMU_CPUCL - CMU_FSYS0 - CMU_FSYS1 - CMU_IMEM - CMU_PERI Signed-off-by: GyoungBo Min <mingyoungbo@coasia.com> Reviewed-by: Kyunghwan Kim <kenkim@coasia.com> Signed-off-by: Ravi Patel <ravi.patel@samsung.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Link: https://patch.msgid.link/20251029130731.51305-2-ravi.patel@samsung.com Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
1 parent 6de23f8 commit 6974ae5

2 files changed

Lines changed: 427 additions & 0 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 <jesper.nilsson@axis.com>
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+
...

0 commit comments

Comments
 (0)