blob: 8598effd6c0164b7f91d7b6dbbedc9d046c4f9ba [file] [log] [blame]
Patrice Chotard51cb23d2017-02-21 13:37:11 +01001/*
2 * Copyright (C) 2014 STMicroelectronics R&D Limited
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8#include <dt-bindings/clock/stih410-clks.h>
9/ {
10 clocks {
11 #address-cells = <1>;
12 #size-cells = <1>;
13 ranges;
14
15 compatible = "st,stih410-clk", "simple-bus";
16
17 /*
18 * Fixed 30MHz oscillator inputs to SoC
19 */
20 clk_sysin: clk-sysin {
21 #clock-cells = <0>;
22 compatible = "fixed-clock";
23 clock-frequency = <30000000>;
24 clock-output-names = "CLK_SYSIN";
25 };
26
27 /*
28 * ARM Peripheral clock for timers
29 */
30 arm_periph_clk: clk-m-a9-periphs {
31 #clock-cells = <0>;
32 compatible = "fixed-factor-clock";
33 clocks = <&clk_m_a9>;
34 clock-div = <2>;
35 clock-mult = <1>;
36 };
37
38 /*
39 * A9 PLL.
40 */
41 clockgen-a9@92b0000 {
42 compatible = "st,clkgen-c32";
43 reg = <0x92b0000 0xffff>;
44
45 clockgen_a9_pll: clockgen-a9-pll {
46 #clock-cells = <1>;
47 compatible = "st,stih407-clkgen-plla9";
48
49 clocks = <&clk_sysin>;
50
51 clock-output-names = "clockgen-a9-pll-odf";
52 };
53 };
54
55 /*
56 * ARM CPU related clocks.
57 */
58 clk_m_a9: clk-m-a9@92b0000 {
59 #clock-cells = <0>;
60 compatible = "st,stih407-clkgen-a9-mux", "st,clkgen-mux";
61 reg = <0x92b0000 0x10000>;
62
63 clocks = <&clockgen_a9_pll 0>,
64 <&clockgen_a9_pll 0>,
65 <&clk_s_c0_flexgen 13>,
66 <&clk_m_a9_ext2f_div2>;
67 };
68
69 /*
70 * ARM Peripheral clock for timers
71 */
72 clk_m_a9_ext2f_div2: clk-m-a9-ext2f-div2s {
73 #clock-cells = <0>;
74 compatible = "fixed-factor-clock";
75
76 clocks = <&clk_s_c0_flexgen 13>;
77
78 clock-output-names = "clk-m-a9-ext2f-div2";
79
80 clock-div = <2>;
81 clock-mult = <1>;
82 };
83
84 /*
85 * Bootloader initialized system infrastructure clock for
86 * serial devices.
87 */
88 clk_ext2f_a9: clockgen-c0@13 {
89 #clock-cells = <0>;
90 compatible = "fixed-clock";
91 clock-frequency = <200000000>;
92 clock-output-names = "clk-s-icn-reg-0";
93 };
94
95 clockgen-a@090ff000 {
96 compatible = "st,clkgen-c32";
97 reg = <0x90ff000 0x1000>;
98
99 clk_s_a0_pll: clk-s-a0-pll {
100 #clock-cells = <1>;
101 compatible = "st,clkgen-pll0";
102
103 clocks = <&clk_sysin>;
104
105 clock-output-names = "clk-s-a0-pll-ofd-0";
106 clock-critical = <0>; /* clk-s-a0-pll-ofd-0 */
107 };
108
109 clk_s_a0_flexgen: clk-s-a0-flexgen {
110 compatible = "st,flexgen";
111
112 #clock-cells = <1>;
113
114 clocks = <&clk_s_a0_pll 0>,
115 <&clk_sysin>;
116
117 clock-output-names = "clk-ic-lmi0",
118 "clk-ic-lmi1";
119 clock-critical = <CLK_IC_LMI0>;
120 };
121 };
122
123 clk_s_c0_quadfs: clk-s-c0-quadfs@9103000 {
124 #clock-cells = <1>;
125 compatible = "st,quadfs-pll";
126 reg = <0x9103000 0x1000>;
127
128 clocks = <&clk_sysin>;
129
130 clock-output-names = "clk-s-c0-fs0-ch0",
131 "clk-s-c0-fs0-ch1",
132 "clk-s-c0-fs0-ch2",
133 "clk-s-c0-fs0-ch3";
134 clock-critical = <0>; /* clk-s-c0-fs0-ch0 */
135 };
136
137 clk_s_c0: clockgen-c@09103000 {
138 compatible = "st,clkgen-c32";
139 reg = <0x9103000 0x1000>;
140
141 clk_s_c0_pll0: clk-s-c0-pll0 {
142 #clock-cells = <1>;
143 compatible = "st,clkgen-pll0";
144
145 clocks = <&clk_sysin>;
146
147 clock-output-names = "clk-s-c0-pll0-odf-0";
148 clock-critical = <0>; /* clk-s-c0-pll0-odf-0 */
149 };
150
151 clk_s_c0_pll1: clk-s-c0-pll1 {
152 #clock-cells = <1>;
153 compatible = "st,clkgen-pll1";
154
155 clocks = <&clk_sysin>;
156
157 clock-output-names = "clk-s-c0-pll1-odf-0";
158 };
159
160 clk_s_c0_flexgen: clk-s-c0-flexgen {
161 #clock-cells = <1>;
162 compatible = "st,flexgen";
163
164 clocks = <&clk_s_c0_pll0 0>,
165 <&clk_s_c0_pll1 0>,
166 <&clk_s_c0_quadfs 0>,
167 <&clk_s_c0_quadfs 1>,
168 <&clk_s_c0_quadfs 2>,
169 <&clk_s_c0_quadfs 3>,
170 <&clk_sysin>;
171
172 clock-output-names = "clk-icn-gpu",
173 "clk-fdma",
174 "clk-nand",
175 "clk-hva",
176 "clk-proc-stfe",
177 "clk-proc-tp",
178 "clk-rx-icn-dmu",
179 "clk-rx-icn-hva",
180 "clk-icn-cpu",
181 "clk-tx-icn-dmu",
182 "clk-mmc-0",
183 "clk-mmc-1",
184 "clk-jpegdec",
185 "clk-ext2fa9",
186 "clk-ic-bdisp-0",
187 "clk-ic-bdisp-1",
188 "clk-pp-dmu",
189 "clk-vid-dmu",
190 "clk-dss-lpc",
191 "clk-st231-aud-0",
192 "clk-st231-gp-1",
193 "clk-st231-dmu",
194 "clk-icn-lmi",
195 "clk-tx-icn-disp-1",
196 "clk-icn-sbc",
197 "clk-stfe-frc2",
198 "clk-eth-phy",
199 "clk-eth-ref-phyclk",
200 "clk-flash-promip",
201 "clk-main-disp",
202 "clk-aux-disp",
203 "clk-compo-dvp",
204 "clk-tx-icn-hades",
205 "clk-rx-icn-hades",
206 "clk-icn-reg-16",
207 "clk-pp-hades",
208 "clk-clust-hades",
209 "clk-hwpe-hades",
210 "clk-fc-hades";
211 clock-critical = <CLK_ICN_CPU>,
212 <CLK_TX_ICN_DMU>,
213 <CLK_EXT2F_A9>,
214 <CLK_ICN_LMI>,
215 <CLK_ICN_SBC>;
216 };
217 };
218
219 clk_s_d0_quadfs: clk-s-d0-quadfs@9104000 {
220 #clock-cells = <1>;
221 compatible = "st,quadfs";
222 reg = <0x9104000 0x1000>;
223
224 clocks = <&clk_sysin>;
225
226 clock-output-names = "clk-s-d0-fs0-ch0",
227 "clk-s-d0-fs0-ch1",
228 "clk-s-d0-fs0-ch2",
229 "clk-s-d0-fs0-ch3";
230 };
231
232 clockgen-d0@09104000 {
233 compatible = "st,clkgen-c32";
234 reg = <0x9104000 0x1000>;
235
236 clk_s_d0_flexgen: clk-s-d0-flexgen {
237 #clock-cells = <1>;
238 compatible = "st,flexgen-audio", "st,flexgen";
239
240 clocks = <&clk_s_d0_quadfs 0>,
241 <&clk_s_d0_quadfs 1>,
242 <&clk_s_d0_quadfs 2>,
243 <&clk_s_d0_quadfs 3>,
244 <&clk_sysin>;
245
246 clock-output-names = "clk-pcm-0",
247 "clk-pcm-1",
248 "clk-pcm-2",
249 "clk-spdiff",
250 "clk-pcmr10-master",
251 "clk-usb2-phy";
252 };
253 };
254
255 clk_s_d2_quadfs: clk-s-d2-quadfs@9106000 {
256 #clock-cells = <1>;
257 compatible = "st,quadfs";
258 reg = <0x9106000 0x1000>;
259
260 clocks = <&clk_sysin>;
261
262 clock-output-names = "clk-s-d2-fs0-ch0",
263 "clk-s-d2-fs0-ch1",
264 "clk-s-d2-fs0-ch2",
265 "clk-s-d2-fs0-ch3";
266 };
267
268 clk_tmdsout_hdmi: clk-tmdsout-hdmi {
269 #clock-cells = <0>;
270 compatible = "fixed-clock";
271 clock-frequency = <0>;
272 };
273
274 clockgen-d2@x9106000 {
275 compatible = "st,clkgen-c32";
276 reg = <0x9106000 0x1000>;
277
278 clk_s_d2_flexgen: clk-s-d2-flexgen {
279 #clock-cells = <1>;
280 compatible = "st,flexgen-video", "st,flexgen";
281
282 clocks = <&clk_s_d2_quadfs 0>,
283 <&clk_s_d2_quadfs 1>,
284 <&clk_s_d2_quadfs 2>,
285 <&clk_s_d2_quadfs 3>,
286 <&clk_sysin>,
287 <&clk_sysin>,
288 <&clk_tmdsout_hdmi>;
289
290 clock-output-names = "clk-pix-main-disp",
291 "clk-pix-pip",
292 "clk-pix-gdp1",
293 "clk-pix-gdp2",
294 "clk-pix-gdp3",
295 "clk-pix-gdp4",
296 "clk-pix-aux-disp",
297 "clk-denc",
298 "clk-pix-hddac",
299 "clk-hddac",
300 "clk-sddac",
301 "clk-pix-dvo",
302 "clk-dvo",
303 "clk-pix-hdmi",
304 "clk-tmds-hdmi",
305 "clk-ref-hdmiphy";
306 };
307 };
308
309 clk_s_d3_quadfs: clk-s-d3-quadfs@9107000 {
310 #clock-cells = <1>;
311 compatible = "st,quadfs";
312 reg = <0x9107000 0x1000>;
313
314 clocks = <&clk_sysin>;
315
316 clock-output-names = "clk-s-d3-fs0-ch0",
317 "clk-s-d3-fs0-ch1",
318 "clk-s-d3-fs0-ch2",
319 "clk-s-d3-fs0-ch3";
320 };
321
322 clockgen-d3@9107000 {
323 compatible = "st,clkgen-c32";
324 reg = <0x9107000 0x1000>;
325
326 clk_s_d3_flexgen: clk-s-d3-flexgen {
327 #clock-cells = <1>;
328 compatible = "st,flexgen";
329
330 clocks = <&clk_s_d3_quadfs 0>,
331 <&clk_s_d3_quadfs 1>,
332 <&clk_s_d3_quadfs 2>,
333 <&clk_s_d3_quadfs 3>,
334 <&clk_sysin>;
335
336 clock-output-names = "clk-stfe-frc1",
337 "clk-tsout-0",
338 "clk-tsout-1",
339 "clk-mchi",
340 "clk-vsens-compo",
341 "clk-frc1-remote",
342 "clk-lpc-0",
343 "clk-lpc-1";
344 };
345 };
346 };
347};