2 * Copyright (C) 2013 STMicroelectronics (R&D) Limited
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.
9 #include <dt-bindings/clock/stih415-clks.h>
18 * Fixed 30MHz oscillator input to SoC
20 clk_sysin: clk-sysin {
22 compatible = "fixed-clock";
23 clock-frequency = <30000000>;
30 reg = <0xfee62000 0xb48>;
32 clk_s_a0_pll: clk-s-a0-pll {
34 compatible = "st,clkgena-plls-c65";
36 clocks = <&clk_sysin>;
38 clock-output-names = "clk-s-a0-pll0-hs",
43 clk_s_a0_osc_prediv: clk-s-a0-osc-prediv {
45 compatible = "st,clkgena-prediv-c65",
48 clocks = <&clk_sysin>;
50 clock-output-names = "clk-s-a0-osc-prediv";
53 clk_s_a0_hs: clk-s-a0-hs {
55 compatible = "st,clkgena-divmux-c65-hs",
58 clocks = <&clk_s_a0_osc_prediv>,
59 <&clk_s_a0_pll 0>, /* PLL0 HS */
60 <&clk_s_a0_pll 2>; /* PLL1 */
62 clock-output-names = "clk-s-fdma-0",
64 ""; /* clk-s-jit-sense */
65 /* Fourth output unused */
68 clk_s_a0_ls: clk-s-a0-ls {
70 compatible = "st,clkgena-divmux-c65-ls",
73 clocks = <&clk_s_a0_osc_prediv>,
74 <&clk_s_a0_pll 1>, /* PLL0 LS */
75 <&clk_s_a0_pll 2>; /* PLL1 */
77 clock-output-names = "clk-s-icn-reg-0",
83 /* Remaining outputs unused */
88 reg = <0xfee81000 0xb48>;
90 clk_s_a1_pll: clk-s-a1-pll {
92 compatible = "st,clkgena-plls-c65";
94 clocks = <&clk_sysin>;
96 clock-output-names = "clk-s-a1-pll0-hs",
101 clk_s_a1_osc_prediv: clk-s-a1-osc-prediv {
103 compatible = "st,clkgena-prediv-c65",
106 clocks = <&clk_sysin>;
108 clock-output-names = "clk-s-a1-osc-prediv";
111 clk_s_a1_hs: clk-s-a1-hs {
113 compatible = "st,clkgena-divmux-c65-hs",
116 clocks = <&clk_s_a1_osc_prediv>,
117 <&clk_s_a1_pll 0>, /* PLL0 HS */
118 <&clk_s_a1_pll 2>; /* PLL1 */
120 clock-output-names = "", /* Reserved */
126 clk_s_a1_ls: clk-s-a1-ls {
128 compatible = "st,clkgena-divmux-c65-ls",
131 clocks = <&clk_s_a1_osc_prediv>,
132 <&clk_s_a1_pll 1>, /* PLL0 LS */
133 <&clk_s_a1_pll 2>; /* PLL1 */
135 clock-output-names = "clk-s-icn-if-2",
141 "clk-s-mii0-ref-out",
142 ""; /* clk-s-stac-sys */
143 /* Remaining outputs unused */
148 * ClockGenAs on MPE41
150 clockgen-a@fde12000 {
151 reg = <0xfde12000 0xb50>;
153 clk_m_a0_pll0: clk-m-a0-pll0 {
155 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
157 clocks = <&clk_sysin>;
159 clock-output-names = "clk-m-a0-pll0-phi0",
160 "clk-m-a0-pll0-phi1",
161 "clk-m-a0-pll0-phi2",
162 "clk-m-a0-pll0-phi3";
165 clk_m_a0_pll1: clk-m-a0-pll1 {
167 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
169 clocks = <&clk_sysin>;
171 clock-output-names = "clk-m-a0-pll1-phi0",
172 "clk-m-a0-pll1-phi1",
173 "clk-m-a0-pll1-phi2",
174 "clk-m-a0-pll1-phi3";
177 clk_m_a0_osc_prediv: clk-m-a0-osc-prediv {
179 compatible = "st,clkgena-prediv-c32",
182 clocks = <&clk_sysin>;
184 clock-output-names = "clk-m-a0-osc-prediv";
187 clk_m_a0_div0: clk-m-a0-div0 {
189 compatible = "st,clkgena-divmux-c32-odf0",
192 clocks = <&clk_m_a0_osc_prediv>,
193 <&clk_m_a0_pll0 0>, /* PLL0 PHI0 */
194 <&clk_m_a0_pll1 0>; /* PLL1 PHI0 */
196 clock-output-names = "clk-m-apb-pm", /* Unused */
206 clk_m_a0_div1: clk-m-a0-div1 {
208 compatible = "st,clkgena-divmux-c32-odf1",
211 clocks = <&clk_m_a0_osc_prediv>,
212 <&clk_m_a0_pll0 1>, /* PLL0 PHI1 */
213 <&clk_m_a0_pll1 1>; /* PLL1 PHI1 */
215 clock-output-names = "", /* Unused */
225 clk_m_a0_div2: clk-m-a0-div2 {
227 compatible = "st,clkgena-divmux-c32-odf2",
230 clocks = <&clk_m_a0_osc_prediv>,
231 <&clk_m_a0_pll0 2>, /* PLL0 PHI2 */
232 <&clk_m_a0_pll1 2>; /* PLL1 PHI2 */
234 clock-output-names = "clk-m-st231-gp-1",
244 clk_m_a0_div3: clk-m-a0-div3 {
246 compatible = "st,clkgena-divmux-c32-odf3",
249 clocks = <&clk_m_a0_osc_prediv>,
250 <&clk_m_a0_pll0 3>, /* PLL0 PHI3 */
251 <&clk_m_a0_pll1 3>; /* PLL1 PHI3 */
253 clock-output-names = "", /* Unused */
264 clockgen-a@fd6db000 {
265 reg = <0xfd6db000 0xb50>;
267 clk_m_a1_pll0: clk-m-a1-pll0 {
269 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
271 clocks = <&clk_sysin>;
273 clock-output-names = "clk-m-a1-pll0-phi0",
274 "clk-m-a1-pll0-phi1",
275 "clk-m-a1-pll0-phi2",
276 "clk-m-a1-pll0-phi3";
279 clk_m_a1_pll1: clk-m-a1-pll1 {
281 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
283 clocks = <&clk_sysin>;
285 clock-output-names = "clk-m-a1-pll1-phi0",
286 "clk-m-a1-pll1-phi1",
287 "clk-m-a1-pll1-phi2",
288 "clk-m-a1-pll1-phi3";
291 clk_m_a1_osc_prediv: clk-m-a1-osc-prediv {
293 compatible = "st,clkgena-prediv-c32",
296 clocks = <&clk_sysin>;
298 clock-output-names = "clk-m-a1-osc-prediv";
301 clk_m_a1_div0: clk-m-a1-div0 {
303 compatible = "st,clkgena-divmux-c32-odf0",
306 clocks = <&clk_m_a1_osc_prediv>,
307 <&clk_m_a1_pll0 0>, /* PLL0 PHI0 */
308 <&clk_m_a1_pll1 0>; /* PLL1 PHI0 */
310 clock-output-names = "clk-m-fdma-12",
320 clk_m_a1_div1: clk-m-a1-div1 {
322 compatible = "st,clkgena-divmux-c32-odf1",
325 clocks = <&clk_m_a1_osc_prediv>,
326 <&clk_m_a1_pll0 1>, /* PLL0 PHI1 */
327 <&clk_m_a1_pll1 1>; /* PLL1 PHI1 */
329 clock-output-names = "clk-m-icn-vdp-1",
336 ""; /* clk-m-icn-st231 */
339 clk_m_a1_div2: clk-m-a1-div2 {
341 compatible = "st,clkgena-divmux-c32-odf2",
344 clocks = <&clk_m_a1_osc_prediv>,
345 <&clk_m_a1_pll0 2>, /* PLL0 PHI2 */
346 <&clk_m_a1_pll1 2>; /* PLL1 PHI2 */
348 clock-output-names = "clk-m-fvdp-proc-alt",
358 clk_m_a1_div3: clk-m-a1-div3 {
360 compatible = "st,clkgena-divmux-c32-odf3",
363 clocks = <&clk_m_a1_osc_prediv>,
364 <&clk_m_a1_pll0 3>, /* PLL0 PHI3 */
365 <&clk_m_a1_pll1 3>; /* PLL1 PHI3 */
367 clock-output-names = "", /* Unused */
378 clk_m_a9_ext2f_div2: clk-m-a9-ext2f-div2 {
380 compatible = "fixed-factor-clock";
381 clocks = <&clk_m_a0_div1 2>;
386 clockgen-a@fd345000 {
387 reg = <0xfd345000 0xb50>;
389 clk_m_a2_pll0: clk-m-a2-pll0 {
391 compatible = "st,plls-c32-a1x-0", "st,clkgen-plls-c32";
393 clocks = <&clk_sysin>;
395 clock-output-names = "clk-m-a2-pll0-phi0",
396 "clk-m-a2-pll0-phi1",
397 "clk-m-a2-pll0-phi2",
398 "clk-m-a2-pll0-phi3";
401 clk_m_a2_pll1: clk-m-a2-pll1 {
403 compatible = "st,plls-c32-a1x-1", "st,clkgen-plls-c32";
405 clocks = <&clk_sysin>;
407 clock-output-names = "clk-m-a2-pll1-phi0",
408 "clk-m-a2-pll1-phi1",
409 "clk-m-a2-pll1-phi2",
410 "clk-m-a2-pll1-phi3";
413 clk_m_a2_osc_prediv: clk-m-a2-osc-prediv {
415 compatible = "st,clkgena-prediv-c32",
418 clocks = <&clk_sysin>;
420 clock-output-names = "clk-m-a2-osc-prediv";
423 clk_m_a2_div0: clk-m-a2-div0 {
425 compatible = "st,clkgena-divmux-c32-odf0",
428 clocks = <&clk_m_a2_osc_prediv>,
429 <&clk_m_a2_pll0 0>, /* PLL0 PHI0 */
430 <&clk_m_a2_pll1 0>; /* PLL1 PHI0 */
432 clock-output-names = "clk-m-vtac-main-phy",
433 "clk-m-vtac-aux-phy",
436 "", /* clk-m-mpestac-pg */
437 "", /* clk-m-mpestac-wc */
438 "", /* clk-m-mpevtacaux-pg*/
439 ""; /* clk-m-mpevtacmain-pg*/
442 clk_m_a2_div1: clk-m-a2-div1 {
444 compatible = "st,clkgena-divmux-c32-odf1",
447 clocks = <&clk_m_a2_osc_prediv>,
448 <&clk_m_a2_pll0 1>, /* PLL0 PHI1 */
449 <&clk_m_a2_pll1 1>; /* PLL1 PHI1 */
451 clock-output-names = "", /* clk-m-mpevtacrx0-wc */
452 "", /* clk-m-mpevtacrx1-wc */
461 clk_m_a2_div2: clk-m-a2-div2 {
463 compatible = "st,clkgena-divmux-c32-odf2",
466 clocks = <&clk_m_a2_osc_prediv>,
467 <&clk_m_a2_pll0 2>, /* PLL0 PHI2 */
468 <&clk_m_a2_pll1 2>; /* PLL1 PHI2 */
470 clock-output-names = "", /* clk-m-icn-hqvdp0 */
471 "", /* clk-m-icn-hqvdp1 */
473 "", /* clk-m-icn-vdpaux */
475 "clk-m-icn-reg-lp-10",
476 "clk-m-dcephy-impctrl",
480 clk_m_a2_div3: clk-m-a2-div3 {
482 compatible = "st,clkgena-divmux-c32-odf3",
485 clocks = <&clk_m_a2_osc_prediv>,
486 <&clk_m_a2_pll0 3>, /* PLL0 PHI3 */
487 <&clk_m_a2_pll1 3>; /* PLL1 PHI3 */
489 clock-output-names = ""; /* Unused */
490 /* Remaining outputs unused */
497 clockgen-a9@fdde00d8 {
498 reg = <0xfdde00d8 0x70>;
500 clockgen_a9_pll: clockgen-a9-pll {
502 compatible = "st,stih415-plls-c32-a9", "st,clkgen-plls-c32";
504 clocks = <&clk_sysin>;
505 clock-output-names = "clockgen-a9-pll-odf";
510 * ARM CPU related clocks
512 clk_m_a9: clk-m-a9@fdde00d8 {
514 compatible = "st,stih415-clkgen-a9-mux", "st,clkgen-mux";
515 reg = <0xfdde00d8 0x4>;
516 clocks = <&clockgen_a9_pll 0>,
517 <&clockgen_a9_pll 0>,
519 <&clk_m_a9_ext2f_div2>;
523 * ARM Peripheral clock for timers
525 arm_periph_clk: clk-m-a9-periphs {
527 compatible = "fixed-factor-clock";
528 clocks = <&clk_m_a9>;