clockdomains44xx_data.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. /*
  2. * OMAP4 Clock domains framework
  3. *
  4. * Copyright (C) 2009-2011 Texas Instruments, Inc.
  5. * Copyright (C) 2009-2011 Nokia Corporation
  6. *
  7. * Abhijit Pagare (abhijitpagare@ti.com)
  8. * Benoit Cousson (b-cousson@ti.com)
  9. * Paul Walmsley (paul@pwsan.com)
  10. *
  11. * This file is automatically generated from the OMAP hardware databases.
  12. * We respectfully ask that any modifications to this file be coordinated
  13. * with the public linux-omap@vger.kernel.org mailing list and the
  14. * authors above to ensure that the autogeneration scripts are kept
  15. * up-to-date with the file contents.
  16. *
  17. * This program is free software; you can redistribute it and/or modify
  18. * it under the terms of the GNU General Public License version 2 as
  19. * published by the Free Software Foundation.
  20. */
  21. #include <linux/kernel.h>
  22. #include <linux/io.h>
  23. #include "clockdomain.h"
  24. #include "cm1_44xx.h"
  25. #include "cm2_44xx.h"
  26. #include "cm-regbits-44xx.h"
  27. #include "prm44xx.h"
  28. #include "prcm44xx.h"
  29. #include "prcm_mpu44xx.h"
  30. /* Static Dependencies for OMAP4 Clock Domains */
  31. static struct clkdm_dep d2d_wkup_sleep_deps[] = {
  32. { .clkdm_name = "abe_clkdm" },
  33. { .clkdm_name = "ivahd_clkdm" },
  34. { .clkdm_name = "l3_1_clkdm" },
  35. { .clkdm_name = "l3_2_clkdm" },
  36. { .clkdm_name = "l3_emif_clkdm" },
  37. { .clkdm_name = "l3_init_clkdm" },
  38. { .clkdm_name = "l4_cfg_clkdm" },
  39. { .clkdm_name = "l4_per_clkdm" },
  40. { NULL },
  41. };
  42. static struct clkdm_dep ducati_wkup_sleep_deps[] = {
  43. { .clkdm_name = "abe_clkdm" },
  44. { .clkdm_name = "ivahd_clkdm" },
  45. { .clkdm_name = "l3_1_clkdm" },
  46. { .clkdm_name = "l3_2_clkdm" },
  47. { .clkdm_name = "l3_dss_clkdm" },
  48. { .clkdm_name = "l3_emif_clkdm" },
  49. { .clkdm_name = "l3_gfx_clkdm" },
  50. { .clkdm_name = "l3_init_clkdm" },
  51. { .clkdm_name = "l4_cfg_clkdm" },
  52. { .clkdm_name = "l4_per_clkdm" },
  53. { .clkdm_name = "l4_secure_clkdm" },
  54. { .clkdm_name = "l4_wkup_clkdm" },
  55. { .clkdm_name = "tesla_clkdm" },
  56. { NULL },
  57. };
  58. static struct clkdm_dep iss_wkup_sleep_deps[] = {
  59. { .clkdm_name = "ivahd_clkdm" },
  60. { .clkdm_name = "l3_1_clkdm" },
  61. { .clkdm_name = "l3_emif_clkdm" },
  62. { NULL },
  63. };
  64. static struct clkdm_dep ivahd_wkup_sleep_deps[] = {
  65. { .clkdm_name = "l3_1_clkdm" },
  66. { .clkdm_name = "l3_emif_clkdm" },
  67. { NULL },
  68. };
  69. static struct clkdm_dep l3_dma_wkup_sleep_deps[] = {
  70. { .clkdm_name = "abe_clkdm" },
  71. { .clkdm_name = "ducati_clkdm" },
  72. { .clkdm_name = "ivahd_clkdm" },
  73. { .clkdm_name = "l3_1_clkdm" },
  74. { .clkdm_name = "l3_dss_clkdm" },
  75. { .clkdm_name = "l3_emif_clkdm" },
  76. { .clkdm_name = "l3_init_clkdm" },
  77. { .clkdm_name = "l4_cfg_clkdm" },
  78. { .clkdm_name = "l4_per_clkdm" },
  79. { .clkdm_name = "l4_secure_clkdm" },
  80. { .clkdm_name = "l4_wkup_clkdm" },
  81. { NULL },
  82. };
  83. static struct clkdm_dep l3_dss_wkup_sleep_deps[] = {
  84. { .clkdm_name = "ivahd_clkdm" },
  85. { .clkdm_name = "l3_2_clkdm" },
  86. { .clkdm_name = "l3_emif_clkdm" },
  87. { NULL },
  88. };
  89. static struct clkdm_dep l3_gfx_wkup_sleep_deps[] = {
  90. { .clkdm_name = "ivahd_clkdm" },
  91. { .clkdm_name = "l3_1_clkdm" },
  92. { .clkdm_name = "l3_emif_clkdm" },
  93. { NULL },
  94. };
  95. static struct clkdm_dep l3_init_wkup_sleep_deps[] = {
  96. { .clkdm_name = "abe_clkdm" },
  97. { .clkdm_name = "ivahd_clkdm" },
  98. { .clkdm_name = "l3_emif_clkdm" },
  99. { .clkdm_name = "l4_cfg_clkdm" },
  100. { .clkdm_name = "l4_per_clkdm" },
  101. { .clkdm_name = "l4_secure_clkdm" },
  102. { .clkdm_name = "l4_wkup_clkdm" },
  103. { NULL },
  104. };
  105. static struct clkdm_dep l4_secure_wkup_sleep_deps[] = {
  106. { .clkdm_name = "l3_1_clkdm" },
  107. { .clkdm_name = "l3_emif_clkdm" },
  108. { .clkdm_name = "l4_per_clkdm" },
  109. { NULL },
  110. };
  111. static struct clkdm_dep mpu_wkup_sleep_deps[] = {
  112. { .clkdm_name = "abe_clkdm" },
  113. { .clkdm_name = "ducati_clkdm" },
  114. { .clkdm_name = "ivahd_clkdm" },
  115. { .clkdm_name = "l3_1_clkdm" },
  116. { .clkdm_name = "l3_2_clkdm" },
  117. { .clkdm_name = "l3_dss_clkdm" },
  118. { .clkdm_name = "l3_emif_clkdm" },
  119. { .clkdm_name = "l3_gfx_clkdm" },
  120. { .clkdm_name = "l3_init_clkdm" },
  121. { .clkdm_name = "l4_cfg_clkdm" },
  122. { .clkdm_name = "l4_per_clkdm" },
  123. { .clkdm_name = "l4_secure_clkdm" },
  124. { .clkdm_name = "l4_wkup_clkdm" },
  125. { .clkdm_name = "tesla_clkdm" },
  126. { NULL },
  127. };
  128. static struct clkdm_dep tesla_wkup_sleep_deps[] = {
  129. { .clkdm_name = "abe_clkdm" },
  130. { .clkdm_name = "ivahd_clkdm" },
  131. { .clkdm_name = "l3_1_clkdm" },
  132. { .clkdm_name = "l3_2_clkdm" },
  133. { .clkdm_name = "l3_emif_clkdm" },
  134. { .clkdm_name = "l3_init_clkdm" },
  135. { .clkdm_name = "l4_cfg_clkdm" },
  136. { .clkdm_name = "l4_per_clkdm" },
  137. { .clkdm_name = "l4_wkup_clkdm" },
  138. { NULL },
  139. };
  140. static struct clockdomain l4_cefuse_44xx_clkdm = {
  141. .name = "l4_cefuse_clkdm",
  142. .pwrdm = { .name = "cefuse_pwrdm" },
  143. .prcm_partition = OMAP4430_CM2_PARTITION,
  144. .cm_inst = OMAP4430_CM2_CEFUSE_INST,
  145. .clkdm_offs = OMAP4430_CM2_CEFUSE_CEFUSE_CDOFFS,
  146. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  147. };
  148. static struct clockdomain l4_cfg_44xx_clkdm = {
  149. .name = "l4_cfg_clkdm",
  150. .pwrdm = { .name = "core_pwrdm" },
  151. .prcm_partition = OMAP4430_CM2_PARTITION,
  152. .cm_inst = OMAP4430_CM2_CORE_INST,
  153. .clkdm_offs = OMAP4430_CM2_CORE_L4CFG_CDOFFS,
  154. .dep_bit = OMAP4430_L4CFG_STATDEP_SHIFT,
  155. .flags = CLKDM_CAN_HWSUP,
  156. };
  157. static struct clockdomain tesla_44xx_clkdm = {
  158. .name = "tesla_clkdm",
  159. .pwrdm = { .name = "tesla_pwrdm" },
  160. .prcm_partition = OMAP4430_CM1_PARTITION,
  161. .cm_inst = OMAP4430_CM1_TESLA_INST,
  162. .clkdm_offs = OMAP4430_CM1_TESLA_TESLA_CDOFFS,
  163. .dep_bit = OMAP4430_TESLA_STATDEP_SHIFT,
  164. .wkdep_srcs = tesla_wkup_sleep_deps,
  165. .sleepdep_srcs = tesla_wkup_sleep_deps,
  166. .flags = CLKDM_CAN_HWSUP_SWSUP,
  167. };
  168. static struct clockdomain l3_gfx_44xx_clkdm = {
  169. .name = "l3_gfx_clkdm",
  170. .pwrdm = { .name = "gfx_pwrdm" },
  171. .prcm_partition = OMAP4430_CM2_PARTITION,
  172. .cm_inst = OMAP4430_CM2_GFX_INST,
  173. .clkdm_offs = OMAP4430_CM2_GFX_GFX_CDOFFS,
  174. .dep_bit = OMAP4430_GFX_STATDEP_SHIFT,
  175. .wkdep_srcs = l3_gfx_wkup_sleep_deps,
  176. .sleepdep_srcs = l3_gfx_wkup_sleep_deps,
  177. .flags = CLKDM_CAN_HWSUP_SWSUP,
  178. };
  179. static struct clockdomain ivahd_44xx_clkdm = {
  180. .name = "ivahd_clkdm",
  181. .pwrdm = { .name = "ivahd_pwrdm" },
  182. .prcm_partition = OMAP4430_CM2_PARTITION,
  183. .cm_inst = OMAP4430_CM2_IVAHD_INST,
  184. .clkdm_offs = OMAP4430_CM2_IVAHD_IVAHD_CDOFFS,
  185. .dep_bit = OMAP4430_IVAHD_STATDEP_SHIFT,
  186. .wkdep_srcs = ivahd_wkup_sleep_deps,
  187. .sleepdep_srcs = ivahd_wkup_sleep_deps,
  188. .flags = CLKDM_CAN_HWSUP_SWSUP,
  189. };
  190. static struct clockdomain l4_secure_44xx_clkdm = {
  191. .name = "l4_secure_clkdm",
  192. .pwrdm = { .name = "l4per_pwrdm" },
  193. .prcm_partition = OMAP4430_CM2_PARTITION,
  194. .cm_inst = OMAP4430_CM2_L4PER_INST,
  195. .clkdm_offs = OMAP4430_CM2_L4PER_L4SEC_CDOFFS,
  196. .dep_bit = OMAP4430_L4SEC_STATDEP_SHIFT,
  197. .wkdep_srcs = l4_secure_wkup_sleep_deps,
  198. .sleepdep_srcs = l4_secure_wkup_sleep_deps,
  199. .flags = CLKDM_CAN_HWSUP_SWSUP,
  200. };
  201. static struct clockdomain l4_per_44xx_clkdm = {
  202. .name = "l4_per_clkdm",
  203. .pwrdm = { .name = "l4per_pwrdm" },
  204. .prcm_partition = OMAP4430_CM2_PARTITION,
  205. .cm_inst = OMAP4430_CM2_L4PER_INST,
  206. .clkdm_offs = OMAP4430_CM2_L4PER_L4PER_CDOFFS,
  207. .dep_bit = OMAP4430_L4PER_STATDEP_SHIFT,
  208. .flags = CLKDM_CAN_HWSUP_SWSUP,
  209. };
  210. static struct clockdomain abe_44xx_clkdm = {
  211. .name = "abe_clkdm",
  212. .pwrdm = { .name = "abe_pwrdm" },
  213. .prcm_partition = OMAP4430_CM1_PARTITION,
  214. .cm_inst = OMAP4430_CM1_ABE_INST,
  215. .clkdm_offs = OMAP4430_CM1_ABE_ABE_CDOFFS,
  216. .dep_bit = OMAP4430_ABE_STATDEP_SHIFT,
  217. .flags = CLKDM_CAN_HWSUP_SWSUP,
  218. };
  219. static struct clockdomain l3_instr_44xx_clkdm = {
  220. .name = "l3_instr_clkdm",
  221. .pwrdm = { .name = "core_pwrdm" },
  222. .prcm_partition = OMAP4430_CM2_PARTITION,
  223. .cm_inst = OMAP4430_CM2_CORE_INST,
  224. .clkdm_offs = OMAP4430_CM2_CORE_L3INSTR_CDOFFS,
  225. };
  226. static struct clockdomain l3_init_44xx_clkdm = {
  227. .name = "l3_init_clkdm",
  228. .pwrdm = { .name = "l3init_pwrdm" },
  229. .prcm_partition = OMAP4430_CM2_PARTITION,
  230. .cm_inst = OMAP4430_CM2_L3INIT_INST,
  231. .clkdm_offs = OMAP4430_CM2_L3INIT_L3INIT_CDOFFS,
  232. .dep_bit = OMAP4430_L3INIT_STATDEP_SHIFT,
  233. .wkdep_srcs = l3_init_wkup_sleep_deps,
  234. .sleepdep_srcs = l3_init_wkup_sleep_deps,
  235. .flags = CLKDM_CAN_HWSUP_SWSUP,
  236. };
  237. static struct clockdomain d2d_44xx_clkdm = {
  238. .name = "d2d_clkdm",
  239. .pwrdm = { .name = "core_pwrdm" },
  240. .prcm_partition = OMAP4430_CM2_PARTITION,
  241. .cm_inst = OMAP4430_CM2_CORE_INST,
  242. .clkdm_offs = OMAP4430_CM2_CORE_D2D_CDOFFS,
  243. .wkdep_srcs = d2d_wkup_sleep_deps,
  244. .sleepdep_srcs = d2d_wkup_sleep_deps,
  245. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  246. };
  247. static struct clockdomain mpu0_44xx_clkdm = {
  248. .name = "mpu0_clkdm",
  249. .pwrdm = { .name = "cpu0_pwrdm" },
  250. .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
  251. .cm_inst = OMAP4430_PRCM_MPU_CPU0_INST,
  252. .clkdm_offs = OMAP4430_PRCM_MPU_CPU0_CPU0_CDOFFS,
  253. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  254. };
  255. static struct clockdomain mpu1_44xx_clkdm = {
  256. .name = "mpu1_clkdm",
  257. .pwrdm = { .name = "cpu1_pwrdm" },
  258. .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
  259. .cm_inst = OMAP4430_PRCM_MPU_CPU1_INST,
  260. .clkdm_offs = OMAP4430_PRCM_MPU_CPU1_CPU1_CDOFFS,
  261. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  262. };
  263. static struct clockdomain l3_emif_44xx_clkdm = {
  264. .name = "l3_emif_clkdm",
  265. .pwrdm = { .name = "core_pwrdm" },
  266. .prcm_partition = OMAP4430_CM2_PARTITION,
  267. .cm_inst = OMAP4430_CM2_CORE_INST,
  268. .clkdm_offs = OMAP4430_CM2_CORE_MEMIF_CDOFFS,
  269. .dep_bit = OMAP4430_MEMIF_STATDEP_SHIFT,
  270. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  271. };
  272. static struct clockdomain l4_ao_44xx_clkdm = {
  273. .name = "l4_ao_clkdm",
  274. .pwrdm = { .name = "always_on_core_pwrdm" },
  275. .prcm_partition = OMAP4430_CM2_PARTITION,
  276. .cm_inst = OMAP4430_CM2_ALWAYS_ON_INST,
  277. .clkdm_offs = OMAP4430_CM2_ALWAYS_ON_ALWON_CDOFFS,
  278. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  279. };
  280. static struct clockdomain ducati_44xx_clkdm = {
  281. .name = "ducati_clkdm",
  282. .pwrdm = { .name = "core_pwrdm" },
  283. .prcm_partition = OMAP4430_CM2_PARTITION,
  284. .cm_inst = OMAP4430_CM2_CORE_INST,
  285. .clkdm_offs = OMAP4430_CM2_CORE_DUCATI_CDOFFS,
  286. .dep_bit = OMAP4430_DUCATI_STATDEP_SHIFT,
  287. .wkdep_srcs = ducati_wkup_sleep_deps,
  288. .sleepdep_srcs = ducati_wkup_sleep_deps,
  289. .flags = CLKDM_CAN_HWSUP_SWSUP,
  290. };
  291. static struct clockdomain mpu_44xx_clkdm = {
  292. .name = "mpuss_clkdm",
  293. .pwrdm = { .name = "mpu_pwrdm" },
  294. .prcm_partition = OMAP4430_CM1_PARTITION,
  295. .cm_inst = OMAP4430_CM1_MPU_INST,
  296. .clkdm_offs = OMAP4430_CM1_MPU_MPU_CDOFFS,
  297. .wkdep_srcs = mpu_wkup_sleep_deps,
  298. .sleepdep_srcs = mpu_wkup_sleep_deps,
  299. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  300. };
  301. static struct clockdomain l3_2_44xx_clkdm = {
  302. .name = "l3_2_clkdm",
  303. .pwrdm = { .name = "core_pwrdm" },
  304. .prcm_partition = OMAP4430_CM2_PARTITION,
  305. .cm_inst = OMAP4430_CM2_CORE_INST,
  306. .clkdm_offs = OMAP4430_CM2_CORE_L3_2_CDOFFS,
  307. .dep_bit = OMAP4430_L3_2_STATDEP_SHIFT,
  308. .flags = CLKDM_CAN_HWSUP,
  309. };
  310. static struct clockdomain l3_1_44xx_clkdm = {
  311. .name = "l3_1_clkdm",
  312. .pwrdm = { .name = "core_pwrdm" },
  313. .prcm_partition = OMAP4430_CM2_PARTITION,
  314. .cm_inst = OMAP4430_CM2_CORE_INST,
  315. .clkdm_offs = OMAP4430_CM2_CORE_L3_1_CDOFFS,
  316. .dep_bit = OMAP4430_L3_1_STATDEP_SHIFT,
  317. .flags = CLKDM_CAN_HWSUP,
  318. };
  319. static struct clockdomain iss_44xx_clkdm = {
  320. .name = "iss_clkdm",
  321. .pwrdm = { .name = "cam_pwrdm" },
  322. .prcm_partition = OMAP4430_CM2_PARTITION,
  323. .cm_inst = OMAP4430_CM2_CAM_INST,
  324. .clkdm_offs = OMAP4430_CM2_CAM_CAM_CDOFFS,
  325. .wkdep_srcs = iss_wkup_sleep_deps,
  326. .sleepdep_srcs = iss_wkup_sleep_deps,
  327. .flags = CLKDM_CAN_SWSUP,
  328. };
  329. static struct clockdomain l3_dss_44xx_clkdm = {
  330. .name = "l3_dss_clkdm",
  331. .pwrdm = { .name = "dss_pwrdm" },
  332. .prcm_partition = OMAP4430_CM2_PARTITION,
  333. .cm_inst = OMAP4430_CM2_DSS_INST,
  334. .clkdm_offs = OMAP4430_CM2_DSS_DSS_CDOFFS,
  335. .dep_bit = OMAP4430_DSS_STATDEP_SHIFT,
  336. .wkdep_srcs = l3_dss_wkup_sleep_deps,
  337. .sleepdep_srcs = l3_dss_wkup_sleep_deps,
  338. .flags = CLKDM_CAN_HWSUP_SWSUP,
  339. };
  340. static struct clockdomain l4_wkup_44xx_clkdm = {
  341. .name = "l4_wkup_clkdm",
  342. .pwrdm = { .name = "wkup_pwrdm" },
  343. .prcm_partition = OMAP4430_PRM_PARTITION,
  344. .cm_inst = OMAP4430_PRM_WKUP_CM_INST,
  345. .clkdm_offs = OMAP4430_PRM_WKUP_CM_WKUP_CDOFFS,
  346. .dep_bit = OMAP4430_L4WKUP_STATDEP_SHIFT,
  347. .flags = CLKDM_CAN_HWSUP | CLKDM_ACTIVE_WITH_MPU,
  348. };
  349. static struct clockdomain emu_sys_44xx_clkdm = {
  350. .name = "emu_sys_clkdm",
  351. .pwrdm = { .name = "emu_pwrdm" },
  352. .prcm_partition = OMAP4430_PRM_PARTITION,
  353. .cm_inst = OMAP4430_PRM_EMU_CM_INST,
  354. .clkdm_offs = OMAP4430_PRM_EMU_CM_EMU_CDOFFS,
  355. .flags = (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_FORCE_WAKEUP |
  356. CLKDM_MISSING_IDLE_REPORTING),
  357. };
  358. static struct clockdomain l3_dma_44xx_clkdm = {
  359. .name = "l3_dma_clkdm",
  360. .pwrdm = { .name = "core_pwrdm" },
  361. .prcm_partition = OMAP4430_CM2_PARTITION,
  362. .cm_inst = OMAP4430_CM2_CORE_INST,
  363. .clkdm_offs = OMAP4430_CM2_CORE_SDMA_CDOFFS,
  364. .wkdep_srcs = l3_dma_wkup_sleep_deps,
  365. .sleepdep_srcs = l3_dma_wkup_sleep_deps,
  366. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  367. };
  368. /* As clockdomains are added or removed above, this list must also be changed */
  369. static struct clockdomain *clockdomains_omap44xx[] __initdata = {
  370. &l4_cefuse_44xx_clkdm,
  371. &l4_cfg_44xx_clkdm,
  372. &tesla_44xx_clkdm,
  373. &l3_gfx_44xx_clkdm,
  374. &ivahd_44xx_clkdm,
  375. &l4_secure_44xx_clkdm,
  376. &l4_per_44xx_clkdm,
  377. &abe_44xx_clkdm,
  378. &l3_instr_44xx_clkdm,
  379. &l3_init_44xx_clkdm,
  380. &d2d_44xx_clkdm,
  381. &mpu0_44xx_clkdm,
  382. &mpu1_44xx_clkdm,
  383. &l3_emif_44xx_clkdm,
  384. &l4_ao_44xx_clkdm,
  385. &ducati_44xx_clkdm,
  386. &mpu_44xx_clkdm,
  387. &l3_2_44xx_clkdm,
  388. &l3_1_44xx_clkdm,
  389. &iss_44xx_clkdm,
  390. &l3_dss_44xx_clkdm,
  391. &l4_wkup_44xx_clkdm,
  392. &emu_sys_44xx_clkdm,
  393. &l3_dma_44xx_clkdm,
  394. NULL
  395. };
  396. void __init omap44xx_clockdomains_init(void)
  397. {
  398. clkdm_register_platform_funcs(&omap4_clkdm_operations);
  399. clkdm_register_clkdms(clockdomains_omap44xx);
  400. clkdm_complete_init();
  401. }