stih415-clock.dtsi 13 KB

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