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