clocks.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721
  1. /*
  2. * (C) Copyright 2010
  3. * Texas Instruments, <www.ti.com>
  4. *
  5. * Aneesh V <aneesh@ti.com>
  6. * Sricharan R <r.sricharan@ti.com>
  7. *
  8. * See file CREDITS for list of people who contributed to this
  9. * project.
  10. *
  11. * This program is free software; you can redistribute it and/or
  12. * modify it under the terms of the GNU General Public License as
  13. * published by the Free Software Foundation; either version 2 of
  14. * the License, or (at your option) any later version.
  15. *
  16. * This program is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU General Public License for more details.
  20. *
  21. * You should have received a copy of the GNU General Public License
  22. * along with this program; if not, write to the Free Software
  23. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  24. * MA 02111-1307 USA
  25. */
  26. #ifndef _CLOCKS_OMAP5_H_
  27. #define _CLOCKS_OMAP5_H_
  28. #include <common.h>
  29. /*
  30. * Assuming a maximum of 1.5 GHz ARM speed and a minimum of 2 cycles per
  31. * loop, allow for a minimum of 2 ms wait (in reality the wait will be
  32. * much more than that)
  33. */
  34. #define LDELAY 1000000
  35. #define CM_CLKMODE_DPLL_CORE (OMAP54XX_L4_CORE_BASE + 0x4120)
  36. #define CM_CLKMODE_DPLL_PER (OMAP54XX_L4_CORE_BASE + 0x8140)
  37. #define CM_CLKMODE_DPLL_MPU (OMAP54XX_L4_CORE_BASE + 0x4160)
  38. #define CM_CLKSEL_CORE (OMAP54XX_L4_CORE_BASE + 0x4100)
  39. struct omap5_prcm_regs {
  40. /* cm1.ckgen */
  41. u32 cm_clksel_core; /* 4a004100 */
  42. u32 pad001[1]; /* 4a004104 */
  43. u32 cm_clksel_abe; /* 4a004108 */
  44. u32 pad002[1]; /* 4a00410c */
  45. u32 cm_dll_ctrl; /* 4a004110 */
  46. u32 pad003[3]; /* 4a004114 */
  47. u32 cm_clkmode_dpll_core; /* 4a004120 */
  48. u32 cm_idlest_dpll_core; /* 4a004124 */
  49. u32 cm_autoidle_dpll_core; /* 4a004128 */
  50. u32 cm_clksel_dpll_core; /* 4a00412c */
  51. u32 cm_div_m2_dpll_core; /* 4a004130 */
  52. u32 cm_div_m3_dpll_core; /* 4a004134 */
  53. u32 cm_div_h11_dpll_core; /* 4a004138 */
  54. u32 cm_div_h12_dpll_core; /* 4a00413c */
  55. u32 cm_div_h13_dpll_core; /* 4a004140 */
  56. u32 cm_div_h14_dpll_core; /* 4a004144 */
  57. u32 cm_ssc_deltamstep_dpll_core; /* 4a004148 */
  58. u32 cm_ssc_modfreqdiv_dpll_core; /* 4a00414c */
  59. u32 cm_emu_override_dpll_core; /* 4a004150 */
  60. u32 cm_div_h22_dpllcore; /* 4a004154 */
  61. u32 cm_div_h23_dpll_core; /* 4a004158 */
  62. u32 pad0041[1]; /* 4a00415c */
  63. u32 cm_clkmode_dpll_mpu; /* 4a004160 */
  64. u32 cm_idlest_dpll_mpu; /* 4a004164 */
  65. u32 cm_autoidle_dpll_mpu; /* 4a004168 */
  66. u32 cm_clksel_dpll_mpu; /* 4a00416c */
  67. u32 cm_div_m2_dpll_mpu; /* 4a004170 */
  68. u32 pad005[5]; /* 4a004174 */
  69. u32 cm_ssc_deltamstep_dpll_mpu; /* 4a004188 */
  70. u32 cm_ssc_modfreqdiv_dpll_mpu; /* 4a00418c */
  71. u32 pad006[3]; /* 4a004190 */
  72. u32 cm_bypclk_dpll_mpu; /* 4a00419c */
  73. u32 cm_clkmode_dpll_iva; /* 4a0041a0 */
  74. u32 cm_idlest_dpll_iva; /* 4a0041a4 */
  75. u32 cm_autoidle_dpll_iva; /* 4a0041a8 */
  76. u32 cm_clksel_dpll_iva; /* 4a0041ac */
  77. u32 pad007[2]; /* 4a0041b0 */
  78. u32 cm_div_h11_dpll_iva; /* 4a0041b8 */
  79. u32 cm_div_h12_dpll_iva; /* 4a0041bc */
  80. u32 pad008[2]; /* 4a0041c0 */
  81. u32 cm_ssc_deltamstep_dpll_iva; /* 4a0041c8 */
  82. u32 cm_ssc_modfreqdiv_dpll_iva; /* 4a0041cc */
  83. u32 pad009[3]; /* 4a0041d0 */
  84. u32 cm_bypclk_dpll_iva; /* 4a0041dc */
  85. u32 cm_clkmode_dpll_abe; /* 4a0041e0 */
  86. u32 cm_idlest_dpll_abe; /* 4a0041e4 */
  87. u32 cm_autoidle_dpll_abe; /* 4a0041e8 */
  88. u32 cm_clksel_dpll_abe; /* 4a0041ec */
  89. u32 cm_div_m2_dpll_abe; /* 4a0041f0 */
  90. u32 cm_div_m3_dpll_abe; /* 4a0041f4 */
  91. u32 pad010[4]; /* 4a0041f8 */
  92. u32 cm_ssc_deltamstep_dpll_abe; /* 4a004208 */
  93. u32 cm_ssc_modfreqdiv_dpll_abe; /* 4a00420c */
  94. u32 pad011[4]; /* 4a004210 */
  95. u32 cm_clkmode_dpll_ddrphy; /* 4a004220 */
  96. u32 cm_idlest_dpll_ddrphy; /* 4a004224 */
  97. u32 cm_autoidle_dpll_ddrphy; /* 4a004228 */
  98. u32 cm_clksel_dpll_ddrphy; /* 4a00422c */
  99. u32 cm_div_m2_dpll_ddrphy; /* 4a004230 */
  100. u32 pad012[1]; /* 4a004234 */
  101. u32 cm_div_h11_dpll_ddrphy; /* 4a004238 */
  102. u32 cm_div_h12_dpll_ddrphy; /* 4a00423c */
  103. u32 cm_div_h13_dpll_ddrphy; /* 4a004240 */
  104. u32 pad013[1]; /* 4a004244 */
  105. u32 cm_ssc_deltamstep_dpll_ddrphy; /* 4a004248 */
  106. u32 pad014[5]; /* 4a00424c */
  107. u32 cm_shadow_freq_config1; /* 4a004260 */
  108. u32 pad0141[47]; /* 4a004264 */
  109. u32 cm_mpu_mpu_clkctrl; /* 4a004320 */
  110. /* cm1.dsp */
  111. u32 pad015[55]; /* 4a004324 */
  112. u32 cm_dsp_clkstctrl; /* 4a004400 */
  113. u32 pad016[7]; /* 4a004404 */
  114. u32 cm_dsp_dsp_clkctrl; /* 4a004420 */
  115. /* cm1.abe */
  116. u32 pad017[55]; /* 4a004424 */
  117. u32 cm1_abe_clkstctrl; /* 4a004500 */
  118. u32 pad018[7]; /* 4a004504 */
  119. u32 cm1_abe_l4abe_clkctrl; /* 4a004520 */
  120. u32 pad019[1]; /* 4a004524 */
  121. u32 cm1_abe_aess_clkctrl; /* 4a004528 */
  122. u32 pad020[1]; /* 4a00452c */
  123. u32 cm1_abe_pdm_clkctrl; /* 4a004530 */
  124. u32 pad021[1]; /* 4a004534 */
  125. u32 cm1_abe_dmic_clkctrl; /* 4a004538 */
  126. u32 pad022[1]; /* 4a00453c */
  127. u32 cm1_abe_mcasp_clkctrl; /* 4a004540 */
  128. u32 pad023[1]; /* 4a004544 */
  129. u32 cm1_abe_mcbsp1_clkctrl; /* 4a004548 */
  130. u32 pad024[1]; /* 4a00454c */
  131. u32 cm1_abe_mcbsp2_clkctrl; /* 4a004550 */
  132. u32 pad025[1]; /* 4a004554 */
  133. u32 cm1_abe_mcbsp3_clkctrl; /* 4a004558 */
  134. u32 pad026[1]; /* 4a00455c */
  135. u32 cm1_abe_slimbus_clkctrl; /* 4a004560 */
  136. u32 pad027[1]; /* 4a004564 */
  137. u32 cm1_abe_timer5_clkctrl; /* 4a004568 */
  138. u32 pad028[1]; /* 4a00456c */
  139. u32 cm1_abe_timer6_clkctrl; /* 4a004570 */
  140. u32 pad029[1]; /* 4a004574 */
  141. u32 cm1_abe_timer7_clkctrl; /* 4a004578 */
  142. u32 pad030[1]; /* 4a00457c */
  143. u32 cm1_abe_timer8_clkctrl; /* 4a004580 */
  144. u32 pad031[1]; /* 4a004584 */
  145. u32 cm1_abe_wdt3_clkctrl; /* 4a004588 */
  146. /* cm2.ckgen */
  147. u32 pad032[3805]; /* 4a00458c */
  148. u32 cm_clksel_mpu_m3_iss_root; /* 4a008100 */
  149. u32 cm_clksel_usb_60mhz; /* 4a008104 */
  150. u32 cm_scale_fclk; /* 4a008108 */
  151. u32 pad033[1]; /* 4a00810c */
  152. u32 cm_core_dvfs_perf1; /* 4a008110 */
  153. u32 cm_core_dvfs_perf2; /* 4a008114 */
  154. u32 cm_core_dvfs_perf3; /* 4a008118 */
  155. u32 cm_core_dvfs_perf4; /* 4a00811c */
  156. u32 pad034[1]; /* 4a008120 */
  157. u32 cm_core_dvfs_current; /* 4a008124 */
  158. u32 cm_iva_dvfs_perf_tesla; /* 4a008128 */
  159. u32 cm_iva_dvfs_perf_ivahd; /* 4a00812c */
  160. u32 cm_iva_dvfs_perf_abe; /* 4a008130 */
  161. u32 pad035[1]; /* 4a008134 */
  162. u32 cm_iva_dvfs_current; /* 4a008138 */
  163. u32 pad036[1]; /* 4a00813c */
  164. u32 cm_clkmode_dpll_per; /* 4a008140 */
  165. u32 cm_idlest_dpll_per; /* 4a008144 */
  166. u32 cm_autoidle_dpll_per; /* 4a008148 */
  167. u32 cm_clksel_dpll_per; /* 4a00814c */
  168. u32 cm_div_m2_dpll_per; /* 4a008150 */
  169. u32 cm_div_m3_dpll_per; /* 4a008154 */
  170. u32 cm_div_h11_dpll_per; /* 4a008158 */
  171. u32 cm_div_h12_dpll_per; /* 4a00815c */
  172. u32 pad0361[1]; /* 4a008160 */
  173. u32 cm_div_h14_dpll_per; /* 4a008164 */
  174. u32 cm_ssc_deltamstep_dpll_per; /* 4a008168 */
  175. u32 cm_ssc_modfreqdiv_dpll_per; /* 4a00816c */
  176. u32 cm_emu_override_dpll_per; /* 4a008170 */
  177. u32 pad037[3]; /* 4a008174 */
  178. u32 cm_clkmode_dpll_usb; /* 4a008180 */
  179. u32 cm_idlest_dpll_usb; /* 4a008184 */
  180. u32 cm_autoidle_dpll_usb; /* 4a008188 */
  181. u32 cm_clksel_dpll_usb; /* 4a00818c */
  182. u32 cm_div_m2_dpll_usb; /* 4a008190 */
  183. u32 pad038[5]; /* 4a008194 */
  184. u32 cm_ssc_deltamstep_dpll_usb; /* 4a0081a8 */
  185. u32 cm_ssc_modfreqdiv_dpll_usb; /* 4a0081ac */
  186. u32 pad039[1]; /* 4a0081b0 */
  187. u32 cm_clkdcoldo_dpll_usb; /* 4a0081b4 */
  188. u32 pad040[2]; /* 4a0081b8 */
  189. u32 cm_clkmode_dpll_unipro; /* 4a0081c0 */
  190. u32 cm_idlest_dpll_unipro; /* 4a0081c4 */
  191. u32 cm_autoidle_dpll_unipro; /* 4a0081c8 */
  192. u32 cm_clksel_dpll_unipro; /* 4a0081cc */
  193. u32 cm_div_m2_dpll_unipro; /* 4a0081d0 */
  194. u32 pad041[5]; /* 4a0081d4 */
  195. u32 cm_ssc_deltamstep_dpll_unipro; /* 4a0081e8 */
  196. u32 cm_ssc_modfreqdiv_dpll_unipro; /* 4a0081ec */
  197. /* cm2.core */
  198. u32 pad0411[324]; /* 4a0081f0 */
  199. u32 cm_l3_1_clkstctrl; /* 4a008700 */
  200. u32 pad042[1]; /* 4a008704 */
  201. u32 cm_l3_1_dynamicdep; /* 4a008708 */
  202. u32 pad043[5]; /* 4a00870c */
  203. u32 cm_l3_1_l3_1_clkctrl; /* 4a008720 */
  204. u32 pad044[55]; /* 4a008724 */
  205. u32 cm_l3_2_clkstctrl; /* 4a008800 */
  206. u32 pad045[1]; /* 4a008804 */
  207. u32 cm_l3_2_dynamicdep; /* 4a008808 */
  208. u32 pad046[5]; /* 4a00880c */
  209. u32 cm_l3_2_l3_2_clkctrl; /* 4a008820 */
  210. u32 pad047[1]; /* 4a008824 */
  211. u32 cm_l3_2_gpmc_clkctrl; /* 4a008828 */
  212. u32 pad048[1]; /* 4a00882c */
  213. u32 cm_l3_2_ocmc_ram_clkctrl; /* 4a008830 */
  214. u32 pad049[51]; /* 4a008834 */
  215. u32 cm_mpu_m3_clkstctrl; /* 4a008900 */
  216. u32 cm_mpu_m3_staticdep; /* 4a008904 */
  217. u32 cm_mpu_m3_dynamicdep; /* 4a008908 */
  218. u32 pad050[5]; /* 4a00890c */
  219. u32 cm_mpu_m3_mpu_m3_clkctrl; /* 4a008920 */
  220. u32 pad051[55]; /* 4a008924 */
  221. u32 cm_sdma_clkstctrl; /* 4a008a00 */
  222. u32 cm_sdma_staticdep; /* 4a008a04 */
  223. u32 cm_sdma_dynamicdep; /* 4a008a08 */
  224. u32 pad052[5]; /* 4a008a0c */
  225. u32 cm_sdma_sdma_clkctrl; /* 4a008a20 */
  226. u32 pad053[55]; /* 4a008a24 */
  227. u32 cm_memif_clkstctrl; /* 4a008b00 */
  228. u32 pad054[7]; /* 4a008b04 */
  229. u32 cm_memif_dmm_clkctrl; /* 4a008b20 */
  230. u32 pad055[1]; /* 4a008b24 */
  231. u32 cm_memif_emif_fw_clkctrl; /* 4a008b28 */
  232. u32 pad056[1]; /* 4a008b2c */
  233. u32 cm_memif_emif_1_clkctrl; /* 4a008b30 */
  234. u32 pad057[1]; /* 4a008b34 */
  235. u32 cm_memif_emif_2_clkctrl; /* 4a008b38 */
  236. u32 pad058[1]; /* 4a008b3c */
  237. u32 cm_memif_dll_clkctrl; /* 4a008b40 */
  238. u32 pad059[3]; /* 4a008b44 */
  239. u32 cm_memif_emif_h1_clkctrl; /* 4a008b50 */
  240. u32 pad060[1]; /* 4a008b54 */
  241. u32 cm_memif_emif_h2_clkctrl; /* 4a008b58 */
  242. u32 pad061[1]; /* 4a008b5c */
  243. u32 cm_memif_dll_h_clkctrl; /* 4a008b60 */
  244. u32 pad062[39]; /* 4a008b64 */
  245. u32 cm_c2c_clkstctrl; /* 4a008c00 */
  246. u32 cm_c2c_staticdep; /* 4a008c04 */
  247. u32 cm_c2c_dynamicdep; /* 4a008c08 */
  248. u32 pad063[5]; /* 4a008c0c */
  249. u32 cm_c2c_sad2d_clkctrl; /* 4a008c20 */
  250. u32 pad064[1]; /* 4a008c24 */
  251. u32 cm_c2c_modem_icr_clkctrl; /* 4a008c28 */
  252. u32 pad065[1]; /* 4a008c2c */
  253. u32 cm_c2c_sad2d_fw_clkctrl; /* 4a008c30 */
  254. u32 pad066[51]; /* 4a008c34 */
  255. u32 cm_l4cfg_clkstctrl; /* 4a008d00 */
  256. u32 pad067[1]; /* 4a008d04 */
  257. u32 cm_l4cfg_dynamicdep; /* 4a008d08 */
  258. u32 pad068[5]; /* 4a008d0c */
  259. u32 cm_l4cfg_l4_cfg_clkctrl; /* 4a008d20 */
  260. u32 pad069[1]; /* 4a008d24 */
  261. u32 cm_l4cfg_hw_sem_clkctrl; /* 4a008d28 */
  262. u32 pad070[1]; /* 4a008d2c */
  263. u32 cm_l4cfg_mailbox_clkctrl; /* 4a008d30 */
  264. u32 pad071[1]; /* 4a008d34 */
  265. u32 cm_l4cfg_sar_rom_clkctrl; /* 4a008d38 */
  266. u32 pad072[49]; /* 4a008d3c */
  267. u32 cm_l3instr_clkstctrl; /* 4a008e00 */
  268. u32 pad073[7]; /* 4a008e04 */
  269. u32 cm_l3instr_l3_3_clkctrl; /* 4a008e20 */
  270. u32 pad074[1]; /* 4a008e24 */
  271. u32 cm_l3instr_l3_instr_clkctrl; /* 4a008e28 */
  272. u32 pad075[5]; /* 4a008e2c */
  273. u32 cm_l3instr_intrconn_wp1_clkctrl; /* 4a008e40 */
  274. /* cm2.ivahd */
  275. u32 pad076[47]; /* 4a008e44 */
  276. u32 cm_ivahd_clkstctrl; /* 4a008f00 */
  277. u32 pad077[7]; /* 4a008f04 */
  278. u32 cm_ivahd_ivahd_clkctrl; /* 4a008f20 */
  279. u32 pad078[1]; /* 4a008f24 */
  280. u32 cm_ivahd_sl2_clkctrl; /* 4a008f28 */
  281. /* cm2.cam */
  282. u32 pad079[53]; /* 4a008f2c */
  283. u32 cm_cam_clkstctrl; /* 4a009000 */
  284. u32 pad080[7]; /* 4a009004 */
  285. u32 cm_cam_iss_clkctrl; /* 4a009020 */
  286. u32 pad081[1]; /* 4a009024 */
  287. u32 cm_cam_fdif_clkctrl; /* 4a009028 */
  288. /* cm2.dss */
  289. u32 pad082[53]; /* 4a00902c */
  290. u32 cm_dss_clkstctrl; /* 4a009100 */
  291. u32 pad083[7]; /* 4a009104 */
  292. u32 cm_dss_dss_clkctrl; /* 4a009120 */
  293. /* cm2.sgx */
  294. u32 pad084[55]; /* 4a009124 */
  295. u32 cm_sgx_clkstctrl; /* 4a009200 */
  296. u32 pad085[7]; /* 4a009204 */
  297. u32 cm_sgx_sgx_clkctrl; /* 4a009220 */
  298. /* cm2.l3init */
  299. u32 pad086[55]; /* 4a009224 */
  300. u32 cm_l3init_clkstctrl; /* 4a009300 */
  301. /* cm2.l3init */
  302. u32 pad087[9]; /* 4a009304 */
  303. u32 cm_l3init_hsmmc1_clkctrl; /* 4a009328 */
  304. u32 pad088[1]; /* 4a00932c */
  305. u32 cm_l3init_hsmmc2_clkctrl; /* 4a009330 */
  306. u32 pad089[1]; /* 4a009334 */
  307. u32 cm_l3init_hsi_clkctrl; /* 4a009338 */
  308. u32 pad090[7]; /* 4a00933c */
  309. u32 cm_l3init_hsusbhost_clkctrl; /* 4a009358 */
  310. u32 pad091[1]; /* 4a00935c */
  311. u32 cm_l3init_hsusbotg_clkctrl; /* 4a009360 */
  312. u32 pad092[1]; /* 4a009364 */
  313. u32 cm_l3init_hsusbtll_clkctrl; /* 4a009368 */
  314. u32 pad093[3]; /* 4a00936c */
  315. u32 cm_l3init_p1500_clkctrl; /* 4a009378 */
  316. u32 pad094[21]; /* 4a00937c */
  317. u32 cm_l3init_fsusb_clkctrl; /* 4a0093d0 */
  318. u32 pad095[3]; /* 4a0093d4 */
  319. u32 cm_l3init_ocp2scp1_clkctrl;
  320. /* cm2.l4per */
  321. u32 pad096[7]; /* 4a0093e4 */
  322. u32 cm_l4per_clkstctrl; /* 4a009400 */
  323. u32 pad097[1]; /* 4a009404 */
  324. u32 cm_l4per_dynamicdep; /* 4a009408 */
  325. u32 pad098[5]; /* 4a00940c */
  326. u32 cm_l4per_adc_clkctrl; /* 4a009420 */
  327. u32 pad100[1]; /* 4a009424 */
  328. u32 cm_l4per_gptimer10_clkctrl; /* 4a009428 */
  329. u32 pad101[1]; /* 4a00942c */
  330. u32 cm_l4per_gptimer11_clkctrl; /* 4a009430 */
  331. u32 pad102[1]; /* 4a009434 */
  332. u32 cm_l4per_gptimer2_clkctrl; /* 4a009438 */
  333. u32 pad103[1]; /* 4a00943c */
  334. u32 cm_l4per_gptimer3_clkctrl; /* 4a009440 */
  335. u32 pad104[1]; /* 4a009444 */
  336. u32 cm_l4per_gptimer4_clkctrl; /* 4a009448 */
  337. u32 pad105[1]; /* 4a00944c */
  338. u32 cm_l4per_gptimer9_clkctrl; /* 4a009450 */
  339. u32 pad106[1]; /* 4a009454 */
  340. u32 cm_l4per_elm_clkctrl; /* 4a009458 */
  341. u32 pad107[1]; /* 4a00945c */
  342. u32 cm_l4per_gpio2_clkctrl; /* 4a009460 */
  343. u32 pad108[1]; /* 4a009464 */
  344. u32 cm_l4per_gpio3_clkctrl; /* 4a009468 */
  345. u32 pad109[1]; /* 4a00946c */
  346. u32 cm_l4per_gpio4_clkctrl; /* 4a009470 */
  347. u32 pad110[1]; /* 4a009474 */
  348. u32 cm_l4per_gpio5_clkctrl; /* 4a009478 */
  349. u32 pad111[1]; /* 4a00947c */
  350. u32 cm_l4per_gpio6_clkctrl; /* 4a009480 */
  351. u32 pad112[1]; /* 4a009484 */
  352. u32 cm_l4per_hdq1w_clkctrl; /* 4a009488 */
  353. u32 pad113[1]; /* 4a00948c */
  354. u32 cm_l4per_hecc1_clkctrl; /* 4a009490 */
  355. u32 pad114[1]; /* 4a009494 */
  356. u32 cm_l4per_hecc2_clkctrl; /* 4a009498 */
  357. u32 pad115[1]; /* 4a00949c */
  358. u32 cm_l4per_i2c1_clkctrl; /* 4a0094a0 */
  359. u32 pad116[1]; /* 4a0094a4 */
  360. u32 cm_l4per_i2c2_clkctrl; /* 4a0094a8 */
  361. u32 pad117[1]; /* 4a0094ac */
  362. u32 cm_l4per_i2c3_clkctrl; /* 4a0094b0 */
  363. u32 pad118[1]; /* 4a0094b4 */
  364. u32 cm_l4per_i2c4_clkctrl; /* 4a0094b8 */
  365. u32 pad119[1]; /* 4a0094bc */
  366. u32 cm_l4per_l4per_clkctrl; /* 4a0094c0 */
  367. u32 pad1191[3]; /* 4a0094c4 */
  368. u32 cm_l4per_mcasp2_clkctrl; /* 4a0094d0 */
  369. u32 pad120[1]; /* 4a0094d4 */
  370. u32 cm_l4per_mcasp3_clkctrl; /* 4a0094d8 */
  371. u32 pad121[3]; /* 4a0094dc */
  372. u32 cm_l4per_mgate_clkctrl; /* 4a0094e8 */
  373. u32 pad123[1]; /* 4a0094ec */
  374. u32 cm_l4per_mcspi1_clkctrl; /* 4a0094f0 */
  375. u32 pad124[1]; /* 4a0094f4 */
  376. u32 cm_l4per_mcspi2_clkctrl; /* 4a0094f8 */
  377. u32 pad125[1]; /* 4a0094fc */
  378. u32 cm_l4per_mcspi3_clkctrl; /* 4a009500 */
  379. u32 pad126[1]; /* 4a009504 */
  380. u32 cm_l4per_mcspi4_clkctrl; /* 4a009508 */
  381. u32 pad127[1]; /* 4a00950c */
  382. u32 cm_l4per_gpio7_clkctrl; /* 4a009510 */
  383. u32 pad1271[1]; /* 4a009514 */
  384. u32 cm_l4per_gpio8_clkctrl; /* 4a009518 */
  385. u32 pad1272[1]; /* 4a00951c */
  386. u32 cm_l4per_mmcsd3_clkctrl; /* 4a009520 */
  387. u32 pad128[1]; /* 4a009524 */
  388. u32 cm_l4per_mmcsd4_clkctrl; /* 4a009528 */
  389. u32 pad129[1]; /* 4a00952c */
  390. u32 cm_l4per_msprohg_clkctrl; /* 4a009530 */
  391. u32 pad130[1]; /* 4a009534 */
  392. u32 cm_l4per_slimbus2_clkctrl; /* 4a009538 */
  393. u32 pad131[1]; /* 4a00953c */
  394. u32 cm_l4per_uart1_clkctrl; /* 4a009540 */
  395. u32 pad132[1]; /* 4a009544 */
  396. u32 cm_l4per_uart2_clkctrl; /* 4a009548 */
  397. u32 pad133[1]; /* 4a00954c */
  398. u32 cm_l4per_uart3_clkctrl; /* 4a009550 */
  399. u32 pad134[1]; /* 4a009554 */
  400. u32 cm_l4per_uart4_clkctrl; /* 4a009558 */
  401. u32 pad135[1]; /* 4a00955c */
  402. u32 cm_l4per_mmcsd5_clkctrl; /* 4a009560 */
  403. u32 pad136[1]; /* 4a009564 */
  404. u32 cm_l4per_i2c5_clkctrl; /* 4a009568 */
  405. u32 pad1371[1]; /* 4a00956c */
  406. u32 cm_l4per_uart5_clkctrl; /* 4a009570 */
  407. u32 pad1372[1]; /* 4a009574 */
  408. u32 cm_l4per_uart6_clkctrl; /* 4a009578 */
  409. u32 pad1374[1]; /* 4a00957c */
  410. u32 cm_l4sec_clkstctrl; /* 4a009580 */
  411. u32 cm_l4sec_staticdep; /* 4a009584 */
  412. u32 cm_l4sec_dynamicdep; /* 4a009588 */
  413. u32 pad138[5]; /* 4a00958c */
  414. u32 cm_l4sec_aes1_clkctrl; /* 4a0095a0 */
  415. u32 pad139[1]; /* 4a0095a4 */
  416. u32 cm_l4sec_aes2_clkctrl; /* 4a0095a8 */
  417. u32 pad140[1]; /* 4a0095ac */
  418. u32 cm_l4sec_des3des_clkctrl; /* 4a0095b0 */
  419. u32 pad141[1]; /* 4a0095b4 */
  420. u32 cm_l4sec_pkaeip29_clkctrl; /* 4a0095b8 */
  421. u32 pad142[1]; /* 4a0095bc */
  422. u32 cm_l4sec_rng_clkctrl; /* 4a0095c0 */
  423. u32 pad143[1]; /* 4a0095c4 */
  424. u32 cm_l4sec_sha2md51_clkctrl; /* 4a0095c8 */
  425. u32 pad144[3]; /* 4a0095cc */
  426. u32 cm_l4sec_cryptodma_clkctrl; /* 4a0095d8 */
  427. u32 pad145[3660425]; /* 4a0095dc */
  428. /* l4 wkup regs */
  429. u32 pad201[6211]; /* 4ae00000 */
  430. u32 cm_abe_pll_ref_clksel; /* 4ae0610c */
  431. u32 cm_sys_clksel; /* 4ae06110 */
  432. u32 pad202[1467]; /* 4ae06114 */
  433. u32 cm_wkup_clkstctrl; /* 4ae07800 */
  434. u32 pad203[7]; /* 4ae07804 */
  435. u32 cm_wkup_l4wkup_clkctrl; /* 4ae07820 */
  436. u32 pad204; /* 4ae07824 */
  437. u32 cm_wkup_wdtimer1_clkctrl; /* 4ae07828 */
  438. u32 pad205; /* 4ae0782c */
  439. u32 cm_wkup_wdtimer2_clkctrl; /* 4ae07830 */
  440. u32 pad206; /* 4ae07834 */
  441. u32 cm_wkup_gpio1_clkctrl; /* 4ae07838 */
  442. u32 pad207; /* 4ae0783c */
  443. u32 cm_wkup_gptimer1_clkctrl; /* 4ae07840 */
  444. u32 pad208; /* 4ae07844 */
  445. u32 cm_wkup_gptimer12_clkctrl; /* 4ae07848 */
  446. u32 pad209; /* 4ae0784c */
  447. u32 cm_wkup_synctimer_clkctrl; /* 4ae07850 */
  448. u32 pad210; /* 4ae07854 */
  449. u32 cm_wkup_usim_clkctrl; /* 4ae07858 */
  450. u32 pad211; /* 4ae0785c */
  451. u32 cm_wkup_sarram_clkctrl; /* 4ae07860 */
  452. u32 pad212[5]; /* 4ae07864 */
  453. u32 cm_wkup_keyboard_clkctrl; /* 4ae07878 */
  454. u32 pad213; /* 4ae0787c */
  455. u32 cm_wkup_rtc_clkctrl; /* 4ae07880 */
  456. u32 pad214; /* 4ae07884 */
  457. u32 cm_wkup_bandgap_clkctrl; /* 4ae07888 */
  458. u32 pad215[197]; /* 4ae0788c */
  459. u32 prm_vc_val_bypass; /* 4ae07ba0 */
  460. u32 pad216[4];
  461. u32 prm_vc_cfg_i2c_mode; /* 4ae07bb4 */
  462. u32 prm_vc_cfg_i2c_clk; /* 4ae07bb8 */
  463. };
  464. /* DPLL register offsets */
  465. #define CM_CLKMODE_DPLL 0
  466. #define CM_IDLEST_DPLL 0x4
  467. #define CM_AUTOIDLE_DPLL 0x8
  468. #define CM_CLKSEL_DPLL 0xC
  469. #define DPLL_CLKOUT_DIV_MASK 0x1F /* post-divider mask */
  470. /* CM_CLKMODE_DPLL */
  471. #define CM_CLKMODE_DPLL_REGM4XEN_SHIFT 11
  472. #define CM_CLKMODE_DPLL_REGM4XEN_MASK (1 << 11)
  473. #define CM_CLKMODE_DPLL_LPMODE_EN_SHIFT 10
  474. #define CM_CLKMODE_DPLL_LPMODE_EN_MASK (1 << 10)
  475. #define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_SHIFT 9
  476. #define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_MASK (1 << 9)
  477. #define CM_CLKMODE_DPLL_DRIFTGUARD_EN_SHIFT 8
  478. #define CM_CLKMODE_DPLL_DRIFTGUARD_EN_MASK (1 << 8)
  479. #define CM_CLKMODE_DPLL_RAMP_RATE_SHIFT 5
  480. #define CM_CLKMODE_DPLL_RAMP_RATE_MASK (0x7 << 5)
  481. #define CM_CLKMODE_DPLL_EN_SHIFT 0
  482. #define CM_CLKMODE_DPLL_EN_MASK (0x7 << 0)
  483. #define CM_CLKMODE_DPLL_DPLL_EN_SHIFT 0
  484. #define CM_CLKMODE_DPLL_DPLL_EN_MASK 7
  485. #define DPLL_EN_STOP 1
  486. #define DPLL_EN_MN_BYPASS 4
  487. #define DPLL_EN_LOW_POWER_BYPASS 5
  488. #define DPLL_EN_FAST_RELOCK_BYPASS 6
  489. #define DPLL_EN_LOCK 7
  490. /* CM_IDLEST_DPLL fields */
  491. #define ST_DPLL_CLK_MASK 1
  492. /* CM_CLKSEL_DPLL */
  493. #define CM_CLKSEL_DPLL_DPLL_SD_DIV_SHIFT 24
  494. #define CM_CLKSEL_DPLL_DPLL_SD_DIV_MASK (0xFF << 24)
  495. #define CM_CLKSEL_DPLL_M_SHIFT 8
  496. #define CM_CLKSEL_DPLL_M_MASK (0x7FF << 8)
  497. #define CM_CLKSEL_DPLL_N_SHIFT 0
  498. #define CM_CLKSEL_DPLL_N_MASK 0x7F
  499. #define CM_CLKSEL_DCC_EN_SHIFT 22
  500. #define CM_CLKSEL_DCC_EN_MASK (1 << 22)
  501. #define OMAP4_DPLL_MAX_N 127
  502. /* CM_SYS_CLKSEL */
  503. #define CM_SYS_CLKSEL_SYS_CLKSEL_MASK 7
  504. /* CM_CLKSEL_CORE */
  505. #define CLKSEL_CORE_SHIFT 0
  506. #define CLKSEL_L3_SHIFT 4
  507. #define CLKSEL_L4_SHIFT 8
  508. #define CLKSEL_CORE_X2_DIV_1 0
  509. #define CLKSEL_L3_CORE_DIV_2 1
  510. #define CLKSEL_L4_L3_DIV_2 1
  511. /* CM_ABE_PLL_REF_CLKSEL */
  512. #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_SHIFT 0
  513. #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_MASK 1
  514. #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_SYSCLK 0
  515. #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_32KCLK 1
  516. /* CM_BYPCLK_DPLL_IVA */
  517. #define CM_BYPCLK_DPLL_IVA_CLKSEL_SHIFT 0
  518. #define CM_BYPCLK_DPLL_IVA_CLKSEL_MASK 3
  519. #define DPLL_IVA_CLKSEL_CORE_X2_DIV_2 1
  520. /* CM_SHADOW_FREQ_CONFIG1 */
  521. #define SHADOW_FREQ_CONFIG1_FREQ_UPDATE_MASK 1
  522. #define SHADOW_FREQ_CONFIG1_DLL_OVERRIDE_MASK 4
  523. #define SHADOW_FREQ_CONFIG1_DLL_RESET_MASK 8
  524. #define SHADOW_FREQ_CONFIG1_DPLL_EN_SHIFT 8
  525. #define SHADOW_FREQ_CONFIG1_DPLL_EN_MASK (7 << 8)
  526. #define SHADOW_FREQ_CONFIG1_M2_DIV_SHIFT 11
  527. #define SHADOW_FREQ_CONFIG1_M2_DIV_MASK (0x1F << 11)
  528. /*CM_<clock_domain>__CLKCTRL */
  529. #define CD_CLKCTRL_CLKTRCTRL_SHIFT 0
  530. #define CD_CLKCTRL_CLKTRCTRL_MASK 3
  531. #define CD_CLKCTRL_CLKTRCTRL_NO_SLEEP 0
  532. #define CD_CLKCTRL_CLKTRCTRL_SW_SLEEP 1
  533. #define CD_CLKCTRL_CLKTRCTRL_SW_WKUP 2
  534. #define CD_CLKCTRL_CLKTRCTRL_HW_AUTO 3
  535. /* CM_<clock_domain>_<module>_CLKCTRL */
  536. #define MODULE_CLKCTRL_MODULEMODE_SHIFT 0
  537. #define MODULE_CLKCTRL_MODULEMODE_MASK 3
  538. #define MODULE_CLKCTRL_IDLEST_SHIFT 16
  539. #define MODULE_CLKCTRL_IDLEST_MASK (3 << 16)
  540. #define MODULE_CLKCTRL_MODULEMODE_SW_DISABLE 0
  541. #define MODULE_CLKCTRL_MODULEMODE_HW_AUTO 1
  542. #define MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN 2
  543. #define MODULE_CLKCTRL_IDLEST_FULLY_FUNCTIONAL 0
  544. #define MODULE_CLKCTRL_IDLEST_TRANSITIONING 1
  545. #define MODULE_CLKCTRL_IDLEST_IDLE 2
  546. #define MODULE_CLKCTRL_IDLEST_DISABLED 3
  547. /* CM_L4PER_GPIO4_CLKCTRL */
  548. #define GPIO4_CLKCTRL_OPTFCLKEN_MASK (1 << 8)
  549. /* CM_L3INIT_HSMMCn_CLKCTRL */
  550. #define HSMMC_CLKCTRL_CLKSEL_MASK (1 << 24)
  551. /* CM_WKUP_GPTIMER1_CLKCTRL */
  552. #define GPTIMER1_CLKCTRL_CLKSEL_MASK (1 << 24)
  553. /* CM_CAM_ISS_CLKCTRL */
  554. #define ISS_CLKCTRL_OPTFCLKEN_MASK (1 << 8)
  555. /* CM_DSS_DSS_CLKCTRL */
  556. #define DSS_CLKCTRL_OPTFCLKEN_MASK 0xF00
  557. /* CM_L3INIT_USBPHY_CLKCTRL */
  558. #define USBPHY_CLKCTRL_OPTFCLKEN_PHY_48M_MASK 8
  559. /* CM_MPU_MPU_CLKCTRL */
  560. #define MPU_CLKCTRL_CLKSEL_EMIF_DIV_MODE_SHIFT 24
  561. #define MPU_CLKCTRL_CLKSEL_EMIF_DIV_MODE_MASK (1 << 24)
  562. #define MPU_CLKCTRL_CLKSEL_ABE_DIV_MODE_SHIFT 25
  563. #define MPU_CLKCTRL_CLKSEL_ABE_DIV_MODE_MASK (1 << 25)
  564. /* Clock frequencies */
  565. #define OMAP_SYS_CLK_FREQ_38_4_MHZ 38400000
  566. #define OMAP_SYS_CLK_IND_38_4_MHZ 6
  567. #define OMAP_32K_CLK_FREQ 32768
  568. /* PRM_VC_CFG_I2C_CLK */
  569. #define PRM_VC_CFG_I2C_CLK_SCLH_SHIFT 0
  570. #define PRM_VC_CFG_I2C_CLK_SCLH_MASK 0xFF
  571. #define PRM_VC_CFG_I2C_CLK_SCLL_SHIFT 8
  572. #define PRM_VC_CFG_I2C_CLK_SCLL_MASK (0xFF << 8)
  573. /* PRM_VC_VAL_BYPASS */
  574. #define PRM_VC_I2C_CHANNEL_FREQ_KHZ 400
  575. #define PRM_VC_VAL_BYPASS_VALID_BIT 0x1000000
  576. #define PRM_VC_VAL_BYPASS_SLAVEADDR_SHIFT 0
  577. #define PRM_VC_VAL_BYPASS_SLAVEADDR_MASK 0x7F
  578. #define PRM_VC_VAL_BYPASS_REGADDR_SHIFT 8
  579. #define PRM_VC_VAL_BYPASS_REGADDR_MASK 0xFF
  580. #define PRM_VC_VAL_BYPASS_DATA_SHIFT 16
  581. #define PRM_VC_VAL_BYPASS_DATA_MASK 0xFF
  582. /* SMPS */
  583. #define SMPS_I2C_SLAVE_ADDR 0x12
  584. #define SMPS_REG_ADDR_VCORE1 0x55
  585. #define SMPS_REG_ADDR_VCORE2 0x5B
  586. #define SMPS_REG_ADDR_VCORE3 0x61
  587. #define PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV 607700
  588. #define PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV 709000
  589. /* TPS */
  590. #define TPS62361_I2C_SLAVE_ADDR 0x60
  591. #define TPS62361_REG_ADDR_SET0 0x0
  592. #define TPS62361_REG_ADDR_SET1 0x1
  593. #define TPS62361_REG_ADDR_SET2 0x2
  594. #define TPS62361_REG_ADDR_SET3 0x3
  595. #define TPS62361_REG_ADDR_CTRL 0x4
  596. #define TPS62361_REG_ADDR_TEMP 0x5
  597. #define TPS62361_REG_ADDR_RMP_CTRL 0x6
  598. #define TPS62361_REG_ADDR_CHIP_ID 0x8
  599. #define TPS62361_REG_ADDR_CHIP_ID_2 0x9
  600. #define TPS62361_BASE_VOLT_MV 500
  601. #define TPS62361_VSEL0_GPIO 7
  602. /* Defines for DPLL setup */
  603. #define DPLL_LOCKED_FREQ_TOLERANCE_0 0
  604. #define DPLL_LOCKED_FREQ_TOLERANCE_500_KHZ 500
  605. #define DPLL_LOCKED_FREQ_TOLERANCE_1_MHZ 1000
  606. #define DPLL_NO_LOCK 0
  607. #define DPLL_LOCK 1
  608. #define NUM_SYS_CLKS 7
  609. struct dpll_regs {
  610. u32 cm_clkmode_dpll;
  611. u32 cm_idlest_dpll;
  612. u32 cm_autoidle_dpll;
  613. u32 cm_clksel_dpll;
  614. u32 cm_div_m2_dpll;
  615. u32 cm_div_m3_dpll;
  616. u32 cm_div_h11_dpll;
  617. u32 cm_div_h12_dpll;
  618. u32 cm_div_h13_dpll;
  619. u32 cm_div_h14_dpll;
  620. u32 reserved[2];
  621. u32 cm_div_h22_dpll;
  622. u32 cm_div_h23_dpll;
  623. };
  624. /* DPLL parameter table */
  625. struct dpll_params {
  626. u32 m;
  627. u32 n;
  628. u8 m2;
  629. u8 m3;
  630. u8 h11;
  631. u8 h12;
  632. u8 h13;
  633. u8 h14;
  634. u8 h22;
  635. u8 h23;
  636. };
  637. extern struct omap5_prcm_regs *const prcm;
  638. extern const u32 sys_clk_array[8];
  639. void scale_vcores(void);
  640. void do_scale_tps62361(u32 reg, u32 volt_mv);
  641. u32 omap_ddr_clk(void);
  642. void do_scale_vcore(u32 vcore_reg, u32 volt_mv);
  643. void setup_sri2c(void);
  644. void setup_post_dividers(u32 *const base, const struct dpll_params *params);
  645. u32 get_sys_clk_index(void);
  646. void enable_basic_clocks(void);
  647. void enable_non_essential_clocks(void);
  648. void do_enable_clocks(u32 *const *clk_domains,
  649. u32 *const *clk_modules_hw_auto,
  650. u32 *const *clk_modules_explicit_en,
  651. u8 wait_for_enable);
  652. const struct dpll_params *get_mpu_dpll_params(void);
  653. const struct dpll_params *get_core_dpll_params(void);
  654. const struct dpll_params *get_per_dpll_params(void);
  655. const struct dpll_params *get_iva_dpll_params(void);
  656. const struct dpll_params *get_usb_dpll_params(void);
  657. const struct dpll_params *get_abe_dpll_params(void);
  658. #endif /* _CLOCKS_OMAP5_H_ */