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