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