blob: c4e5d42a1aec72b1b48f6456793375b38ff177fa [file] [log] [blame]
Srinivas Kandagatla15969b42013-06-25 12:15:23 +01001/*
2 * Copyright (C) 2013 STMicroelectronics R&D Limited
3 * <stlinux-devel@stlinux.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
Gabriel FERNANDEZed3593f2014-05-20 15:22:00 +02009
Gabriel FERNANDEZ08488e22014-05-20 15:22:00 +020010#include <dt-bindings/clock/stih416-clks.h>
11
Srinivas Kandagatla15969b42013-06-25 12:15:23 +010012/ {
13 clocks {
Gabriel FERNANDEZ08488e22014-05-20 15:22:00 +020014 #address-cells = <1>;
15 #size-cells = <1>;
16 ranges;
Gabriel FERNANDEZed3593f2014-05-20 15:22:00 +020017
Srinivas Kandagatla15969b42013-06-25 12:15:23 +010018 /*
19 * Fixed 30MHz oscillator inputs to SoC
20 */
Gabriel FERNANDEZed3593f2014-05-20 15:22:00 +020021 clk_sysin: clk-sysin {
Srinivas Kandagatla15969b42013-06-25 12:15:23 +010022 #clock-cells = <0>;
23 compatible = "fixed-clock";
24 clock-frequency = <30000000>;
Srinivas Kandagatla15969b42013-06-25 12:15:23 +010025 };
26
27 /*
28 * ARM Peripheral clock for timers
29 */
30 arm_periph_clk: arm_periph_clk {
31 #clock-cells = <0>;
32 compatible = "fixed-clock";
33 clock-frequency = <600000000>;
34 };
35
36 /*
37 * Bootloader initialized system infrastructure clock for
38 * serial devices.
39 */
40 CLK_S_ICN_REG_0: clockgenA0@4 {
41 #clock-cells = <0>;
42 compatible = "fixed-clock";
43 clock-frequency = <100000000>;
44 clock-output-names = "CLK_S_ICN_REG_0";
45 };
Srinivas Kandagatlad25ea582014-01-29 16:20:12 +000046
47 CLK_S_GMAC0_PHY: clockgenA1@7 {
48 #clock-cells = <0>;
49 compatible = "fixed-clock";
50 clock-frequency = <25000000>;
51 clock-output-names = "CLK_S_GMAC0_PHY";
52 };
53
54 CLK_S_ETH1_PHY: clockgenA0@7 {
55 #clock-cells = <0>;
56 compatible = "fixed-clock";
57 clock-frequency = <25000000>;
58 clock-output-names = "CLK_S_ETH1_PHY";
59 };
Gabriel FERNANDEZ08488e22014-05-20 15:22:00 +020060
61 /*
62 * ClockGenAs on SASG2
63 */
64 clockgen-a@fee62000 {
65 reg = <0xfee62000 0xb48>;
66
67 clk_s_a0_pll: clk-s-a0-pll {
68 #clock-cells = <1>;
69 compatible = "st,clkgena-plls-c65";
70
71 clocks = <&clk_sysin>;
72
73 clock-output-names = "clk-s-a0-pll0-hs",
74 "clk-s-a0-pll0-ls",
75 "clk-s-a0-pll1";
76 };
77
78 clk_s_a0_osc_prediv: clk-s-a0-osc-prediv {
79 #clock-cells = <0>;
80 compatible = "st,clkgena-prediv-c65",
81 "st,clkgena-prediv";
82
83 clocks = <&clk_sysin>;
84
85 clock-output-names = "clk-s-a0-osc-prediv";
86 };
87
88 clk_s_a0_hs: clk-s-a0-hs {
89 #clock-cells = <1>;
90 compatible = "st,clkgena-divmux-c65-hs",
91 "st,clkgena-divmux";
92
93 clocks = <&clk_s_a0_osc_prediv>,
94 <&clk_s_a0_pll 0>, /* PLL0 HS */
95 <&clk_s_a0_pll 2>; /* PLL1 */
96
97 clock-output-names = "clk-s-fdma-0",
98 "clk-s-fdma-1",
99 ""; /* clk-s-jit-sense */
100 /* Fourth output unused */
101 };
102
103 clk_s_a0_ls: clk-s-a0-ls {
104 #clock-cells = <1>;
105 compatible = "st,clkgena-divmux-c65-ls",
106 "st,clkgena-divmux";
107
108 clocks = <&clk_s_a0_osc_prediv>,
109 <&clk_s_a0_pll 1>, /* PLL0 LS */
110 <&clk_s_a0_pll 2>; /* PLL1 */
111
112 clock-output-names = "clk-s-icn-reg-0",
113 "clk-s-icn-if-0",
114 "clk-s-icn-reg-lp-0",
115 "clk-s-emiss",
116 "clk-s-eth1-phy",
117 "clk-s-mii-ref-out";
118 /* Remaining outputs unused */
119 };
120 };
121
122 clockgen-a@fee81000 {
123 reg = <0xfee81000 0xb48>;
124
125 clk_s_a1_pll: clk-s-a1-pll {
126 #clock-cells = <1>;
127 compatible = "st,clkgena-plls-c65";
128
129 clocks = <&clk_sysin>;
130
131 clock-output-names = "clk-s-a1-pll0-hs",
132 "clk-s-a1-pll0-ls",
133 "clk-s-a1-pll1";
134 };
135
136 clk_s_a1_osc_prediv: clk-s-a1-osc-prediv {
137 #clock-cells = <0>;
138 compatible = "st,clkgena-prediv-c65",
139 "st,clkgena-prediv";
140
141 clocks = <&clk_sysin>;
142
143 clock-output-names = "clk-s-a1-osc-prediv";
144 };
145
146 clk_s_a1_hs: clk-s-a1-hs {
147 #clock-cells = <1>;
148 compatible = "st,clkgena-divmux-c65-hs",
149 "st,clkgena-divmux";
150
151 clocks = <&clk_s_a1_osc_prediv>,
152 <&clk_s_a1_pll 0>, /* PLL0 HS */
153 <&clk_s_a1_pll 2>; /* PLL1 */
154
155 clock-output-names = "", /* Reserved */
156 "", /* Reserved */
157 "clk-s-stac-phy",
158 "clk-s-vtac-tx-phy";
159 };
160
161 clk_s_a1_ls: clk-s-a1-ls {
162 #clock-cells = <1>;
163 compatible = "st,clkgena-divmux-c65-ls",
164 "st,clkgena-divmux";
165
166 clocks = <&clk_s_a1_osc_prediv>,
167 <&clk_s_a1_pll 1>, /* PLL0 LS */
168 <&clk_s_a1_pll 2>; /* PLL1 */
169
170 clock-output-names = "clk-s-icn-if-2",
171 "clk-s-card-mmc-0",
172 "clk-s-icn-if-1",
173 "clk-s-gmac0-phy",
174 "clk-s-nand-ctrl",
175 "", /* Reserved */
176 "clk-s-mii0-ref-out",
177 "clk-s-stac-sys",
178 "clk-s-card-mmc-1";
179 /* Remaining outputs unused */
180 };
181 };
182
183 /*
184 * ClockGenAs on MPE42
185 */
186 clockgen-a@fde12000 {
187 reg = <0xfde12000 0xb50>;
188
189 clk_m_a0_pll0: clk-m-a0-pll0 {
190 #clock-cells = <1>;
191 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
192
193 clocks = <&clk_sysin>;
194
195 clock-output-names = "clk-m-a0-pll0-phi0",
196 "clk-m-a0-pll0-phi1",
197 "clk-m-a0-pll0-phi2",
198 "clk-m-a0-pll0-phi3";
199 };
200
201 clk_m_a0_pll1: clk-m-a0-pll1 {
202 #clock-cells = <1>;
203 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
204
205 clocks = <&clk_sysin>;
206
207 clock-output-names = "clk-m-a0-pll1-phi0",
208 "clk-m-a0-pll1-phi1",
209 "clk-m-a0-pll1-phi2",
210 "clk-m-a0-pll1-phi3";
211 };
212
213 clk_m_a0_osc_prediv: clk-m-a0-osc-prediv {
214 #clock-cells = <0>;
215 compatible = "st,clkgena-prediv-c32",
216 "st,clkgena-prediv";
217
218 clocks = <&clk_sysin>;
219
220 clock-output-names = "clk-m-a0-osc-prediv";
221 };
222
223 clk_m_a0_div0: clk-m-a0-div0 {
224 #clock-cells = <1>;
225 compatible = "st,clkgena-divmux-c32-odf0",
226 "st,clkgena-divmux";
227
228 clocks = <&clk_m_a0_osc_prediv>,
229 <&clk_m_a0_pll0 0>, /* PLL0 PHI0 */
230 <&clk_m_a0_pll1 0>; /* PLL1 PHI0 */
231
232 clock-output-names = "", /* Unused */
233 "", /* Unused */
234 "clk-m-fdma-12",
235 "", /* Unused */
236 "clk-m-pp-dmu-0",
237 "clk-m-pp-dmu-1",
238 "clk-m-icm-lmi",
239 "clk-m-vid-dmu-0";
240 };
241
242 clk_m_a0_div1: clk-m-a0-div1 {
243 #clock-cells = <1>;
244 compatible = "st,clkgena-divmux-c32-odf1",
245 "st,clkgena-divmux";
246
247 clocks = <&clk_m_a0_osc_prediv>,
248 <&clk_m_a0_pll0 1>, /* PLL0 PHI1 */
249 <&clk_m_a0_pll1 1>; /* PLL1 PHI1 */
250
251 clock-output-names = "clk-m-vid-dmu-1",
252 "", /* Unused */
253 "clk-m-a9-ext2f",
254 "clk-m-st40rt",
255 "clk-m-st231-dmu-0",
256 "clk-m-st231-dmu-1",
257 "clk-m-st231-aud",
258 "clk-m-st231-gp-0";
259 };
260
261 clk_m_a0_div2: clk-m-a0-div2 {
262 #clock-cells = <1>;
263 compatible = "st,clkgena-divmux-c32-odf2",
264 "st,clkgena-divmux";
265
266 clocks = <&clk_m_a0_osc_prediv>,
267 <&clk_m_a0_pll0 2>, /* PLL0 PHI2 */
268 <&clk_m_a0_pll1 2>; /* PLL1 PHI2 */
269
270 clock-output-names = "clk-m-st231-gp-1",
271 "clk-m-icn-cpu",
272 "clk-m-icn-stac",
273 "clk-m-tx-icn-dmu-0",
274 "clk-m-tx-icn-dmu-1",
275 "clk-m-tx-icn-ts",
276 "clk-m-icn-vdp-0",
277 "clk-m-icn-vdp-1";
278 };
279
280 clk_m_a0_div3: clk-m-a0-div3 {
281 #clock-cells = <1>;
282 compatible = "st,clkgena-divmux-c32-odf3",
283 "st,clkgena-divmux";
284
285 clocks = <&clk_m_a0_osc_prediv>,
286 <&clk_m_a0_pll0 3>, /* PLL0 PHI3 */
287 <&clk_m_a0_pll1 3>; /* PLL1 PHI3 */
288
289 clock-output-names = "", /* Unused */
290 "", /* Unused */
291 "", /* Unused */
292 "", /* Unused */
293 "clk-m-icn-vp8",
294 "", /* Unused */
295 "clk-m-icn-reg-11",
296 "clk-m-a9-trace";
297 };
298 };
299
300 clockgen-a@fd6db000 {
301 reg = <0xfd6db000 0xb50>;
302
303 clk_m_a1_pll0: clk-m-a1-pll0 {
304 #clock-cells = <1>;
305 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
306
307 clocks = <&clk_sysin>;
308
309 clock-output-names = "clk-m-a1-pll0-phi0",
310 "clk-m-a1-pll0-phi1",
311 "clk-m-a1-pll0-phi2",
312 "clk-m-a1-pll0-phi3";
313 };
314
315 clk_m_a1_pll1: clk-m-a1-pll1 {
316 #clock-cells = <1>;
317 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
318
319 clocks = <&clk_sysin>;
320
321 clock-output-names = "clk-m-a1-pll1-phi0",
322 "clk-m-a1-pll1-phi1",
323 "clk-m-a1-pll1-phi2",
324 "clk-m-a1-pll1-phi3";
325 };
326
327 clk_m_a1_osc_prediv: clk-m-a1-osc-prediv {
328 #clock-cells = <0>;
329 compatible = "st,clkgena-prediv-c32",
330 "st,clkgena-prediv";
331
332 clocks = <&clk_sysin>;
333
334 clock-output-names = "clk-m-a1-osc-prediv";
335 };
336
337 clk_m_a1_div0: clk-m-a1-div0 {
338 #clock-cells = <1>;
339 compatible = "st,clkgena-divmux-c32-odf0",
340 "st,clkgena-divmux";
341
342 clocks = <&clk_m_a1_osc_prediv>,
343 <&clk_m_a1_pll0 0>, /* PLL0 PHI0 */
344 <&clk_m_a1_pll1 0>; /* PLL1 PHI0 */
345
346 clock-output-names = "", /* Unused */
347 "clk-m-fdma-10",
348 "clk-m-fdma-11",
349 "clk-m-hva-alt",
350 "clk-m-proc-sc",
351 "clk-m-tp",
352 "clk-m-rx-icn-dmu-0",
353 "clk-m-rx-icn-dmu-1";
354 };
355
356 clk_m_a1_div1: clk-m-a1-div1 {
357 #clock-cells = <1>;
358 compatible = "st,clkgena-divmux-c32-odf1",
359 "st,clkgena-divmux";
360
361 clocks = <&clk_m_a1_osc_prediv>,
362 <&clk_m_a1_pll0 1>, /* PLL0 PHI1 */
363 <&clk_m_a1_pll1 1>; /* PLL1 PHI1 */
364
365 clock-output-names = "clk-m-rx-icn-ts",
366 "clk-m-rx-icn-vdp-0",
367 "", /* Unused */
368 "clk-m-prv-t1-bus",
369 "clk-m-icn-reg-12",
370 "clk-m-icn-reg-10",
371 "", /* Unused */
372 "clk-m-icn-st231";
373 };
374
375 clk_m_a1_div2: clk-m-a1-div2 {
376 #clock-cells = <1>;
377 compatible = "st,clkgena-divmux-c32-odf2",
378 "st,clkgena-divmux";
379
380 clocks = <&clk_m_a1_osc_prediv>,
381 <&clk_m_a1_pll0 2>, /* PLL0 PHI2 */
382 <&clk_m_a1_pll1 2>; /* PLL1 PHI2 */
383
384 clock-output-names = "clk-m-fvdp-proc-alt",
385 "clk-m-icn-reg-13",
386 "clk-m-tx-icn-gpu",
387 "clk-m-rx-icn-gpu",
388 "", /* Unused */
389 "", /* Unused */
390 "", /* clk-m-apb-pm-12 */
391 ""; /* Unused */
392 };
393
394 clk_m_a1_div3: clk-m-a1-div3 {
395 #clock-cells = <1>;
396 compatible = "st,clkgena-divmux-c32-odf3",
397 "st,clkgena-divmux";
398
399 clocks = <&clk_m_a1_osc_prediv>,
400 <&clk_m_a1_pll0 3>, /* PLL0 PHI3 */
401 <&clk_m_a1_pll1 3>; /* PLL1 PHI3 */
402
403 clock-output-names = "", /* Unused */
404 "", /* Unused */
405 "", /* Unused */
406 "", /* Unused */
407 "", /* Unused */
408 "", /* Unused */
409 "", /* Unused */
410 ""; /* clk-m-gpu-alt */
411 };
412 };
413
414 clk_m_a9_ext2f_div2: clk-m-a9-ext2f-div2 {
415 #clock-cells = <0>;
416 compatible = "fixed-factor-clock";
417 clocks = <&clk_m_a0_div1 2>;
418 clock-div = <2>;
419 clock-mult = <1>;
420 };
421
422 clockgen-a@fd345000 {
423 reg = <0xfd345000 0xb50>;
424
425 clk_m_a2_pll0: clk-m-a2-pll0 {
426 #clock-cells = <1>;
427 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
428
429 clocks = <&clk_sysin>;
430
431 clock-output-names = "clk-m-a2-pll0-phi0",
432 "clk-m-a2-pll0-phi1",
433 "clk-m-a2-pll0-phi2",
434 "clk-m-a2-pll0-phi3";
435 };
436
437 clk_m_a2_pll1: clk-m-a2-pll1 {
438 #clock-cells = <1>;
439 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
440
441 clocks = <&clk_sysin>;
442
443 clock-output-names = "clk-m-a2-pll1-phi0",
444 "clk-m-a2-pll1-phi1",
445 "clk-m-a2-pll1-phi2",
446 "clk-m-a2-pll1-phi3";
447 };
448
449 clk_m_a2_osc_prediv: clk-m-a2-osc-prediv {
450 #clock-cells = <0>;
451 compatible = "st,clkgena-prediv-c32",
452 "st,clkgena-prediv";
453
454 clocks = <&clk_sysin>;
455
456 clock-output-names = "clk-m-a2-osc-prediv";
457 };
458
459 clk_m_a2_div0: clk-m-a2-div0 {
460 #clock-cells = <1>;
461 compatible = "st,clkgena-divmux-c32-odf0",
462 "st,clkgena-divmux";
463
464 clocks = <&clk_m_a2_osc_prediv>,
465 <&clk_m_a2_pll0 0>, /* PLL0 PHI0 */
466 <&clk_m_a2_pll1 0>; /* PLL1 PHI0 */
467
468 clock-output-names = "clk-m-vtac-main-phy",
469 "clk-m-vtac-aux-phy",
470 "clk-m-stac-phy",
471 "clk-m-stac-sys",
472 "", /* clk-m-mpestac-pg */
473 "", /* clk-m-mpestac-wc */
474 "", /* clk-m-mpevtacaux-pg*/
475 ""; /* clk-m-mpevtacmain-pg*/
476 };
477
478 clk_m_a2_div1: clk-m-a2-div1 {
479 #clock-cells = <1>;
480 compatible = "st,clkgena-divmux-c32-odf1",
481 "st,clkgena-divmux";
482
483 clocks = <&clk_m_a2_osc_prediv>,
484 <&clk_m_a2_pll0 1>, /* PLL0 PHI1 */
485 <&clk_m_a2_pll1 1>; /* PLL1 PHI1 */
486
487 clock-output-names = "", /* clk-m-mpevtacrx0-wc */
488 "", /* clk-m-mpevtacrx1-wc */
489 "clk-m-compo-main",
490 "clk-m-compo-aux",
491 "clk-m-bdisp-0",
492 "clk-m-bdisp-1",
493 "clk-m-icn-bdisp",
494 "clk-m-icn-compo";
495 };
496
497 clk_m_a2_div2: clk-m-a2-div2 {
498 #clock-cells = <1>;
499 compatible = "st,clkgena-divmux-c32-odf2",
500 "st,clkgena-divmux";
501
502 clocks = <&clk_m_a2_osc_prediv>,
503 <&clk_m_a2_pll0 2>, /* PLL0 PHI2 */
504 <&clk_m_a2_pll1 2>; /* PLL1 PHI2 */
505
506 clock-output-names = "clk-m-icn-vdp-2",
507 "", /* Unused */
508 "clk-m-icn-reg-14",
509 "clk-m-mdtp",
510 "clk-m-jpegdec",
511 "", /* Unused */
512 "clk-m-dcephy-impctrl",
513 ""; /* Unused */
514 };
515
516 clk_m_a2_div3: clk-m-a2-div3 {
517 #clock-cells = <1>;
518 compatible = "st,clkgena-divmux-c32-odf3",
519 "st,clkgena-divmux";
520
521 clocks = <&clk_m_a2_osc_prediv>,
522 <&clk_m_a2_pll0 3>, /* PLL0 PHI3 */
523 <&clk_m_a2_pll1 3>; /* PLL1 PHI3 */
524
525 clock-output-names = "", /* Unused */
526 ""; /* clk-m-apb-pm-11 */
527 /* Remaining outputs unused */
528 };
529 };
Srinivas Kandagatla15969b42013-06-25 12:15:23 +0100530 };
531};