clockdomains.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. /*
  2. * OMAP2/3 clockdomains
  3. *
  4. * Copyright (C) 2008 Texas Instruments, Inc.
  5. * Copyright (C) 2008 Nokia Corporation
  6. *
  7. * Written by Paul Walmsley
  8. */
  9. /*
  10. * To-Do List
  11. * -> Port the Sleep/Wakeup dependencies for the domains
  12. * from the Power domain framework
  13. */
  14. #ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
  15. #define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_H
  16. #include <plat/clockdomain.h>
  17. #include "cm.h"
  18. #include "prm.h"
  19. /*
  20. * OMAP2/3-common clockdomains
  21. *
  22. * Even though the 2420 has a single PRCM module from the
  23. * interconnect's perspective, internally it does appear to have
  24. * separate PRM and CM clockdomains. The usual test case is
  25. * sys_clkout/sys_clkout2.
  26. */
  27. #if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
  28. /* This is an implicit clockdomain - it is never defined as such in TRM */
  29. static struct clockdomain wkup_clkdm = {
  30. .name = "wkup_clkdm",
  31. .pwrdm = { .name = "wkup_pwrdm" },
  32. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
  33. };
  34. static struct clockdomain prm_clkdm = {
  35. .name = "prm_clkdm",
  36. .pwrdm = { .name = "wkup_pwrdm" },
  37. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
  38. };
  39. static struct clockdomain cm_clkdm = {
  40. .name = "cm_clkdm",
  41. .pwrdm = { .name = "core_pwrdm" },
  42. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
  43. };
  44. #endif
  45. /*
  46. * 2420-only clockdomains
  47. */
  48. #if defined(CONFIG_ARCH_OMAP2420)
  49. static struct clockdomain mpu_2420_clkdm = {
  50. .name = "mpu_clkdm",
  51. .pwrdm = { .name = "mpu_pwrdm" },
  52. .flags = CLKDM_CAN_HWSUP,
  53. .clkstctrl_reg = OMAP2420_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
  54. .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
  55. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  56. };
  57. static struct clockdomain iva1_2420_clkdm = {
  58. .name = "iva1_clkdm",
  59. .pwrdm = { .name = "dsp_pwrdm" },
  60. .flags = CLKDM_CAN_HWSUP_SWSUP,
  61. .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
  62. OMAP2_CM_CLKSTCTRL),
  63. .clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
  64. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  65. };
  66. static struct clockdomain dsp_2420_clkdm = {
  67. .name = "dsp_clkdm",
  68. .pwrdm = { .name = "dsp_pwrdm" },
  69. .flags = CLKDM_CAN_HWSUP_SWSUP,
  70. .clkstctrl_reg = OMAP2420_CM_REGADDR(OMAP24XX_DSP_MOD,
  71. OMAP2_CM_CLKSTCTRL),
  72. .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
  73. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  74. };
  75. static struct clockdomain gfx_2420_clkdm = {
  76. .name = "gfx_clkdm",
  77. .pwrdm = { .name = "gfx_pwrdm" },
  78. .flags = CLKDM_CAN_HWSUP_SWSUP,
  79. .clkstctrl_reg = OMAP2420_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
  80. .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
  81. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  82. };
  83. static struct clockdomain core_l3_2420_clkdm = {
  84. .name = "core_l3_clkdm",
  85. .pwrdm = { .name = "core_pwrdm" },
  86. .flags = CLKDM_CAN_HWSUP,
  87. .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  88. .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
  89. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  90. };
  91. static struct clockdomain core_l4_2420_clkdm = {
  92. .name = "core_l4_clkdm",
  93. .pwrdm = { .name = "core_pwrdm" },
  94. .flags = CLKDM_CAN_HWSUP,
  95. .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  96. .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
  97. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  98. };
  99. static struct clockdomain dss_2420_clkdm = {
  100. .name = "dss_clkdm",
  101. .pwrdm = { .name = "core_pwrdm" },
  102. .flags = CLKDM_CAN_HWSUP,
  103. .clkstctrl_reg = OMAP2420_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  104. .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
  105. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
  106. };
  107. #endif /* CONFIG_ARCH_OMAP2420 */
  108. /*
  109. * 2430-only clockdomains
  110. */
  111. #if defined(CONFIG_ARCH_OMAP2430)
  112. static struct clockdomain mpu_2430_clkdm = {
  113. .name = "mpu_clkdm",
  114. .pwrdm = { .name = "mpu_pwrdm" },
  115. .flags = CLKDM_CAN_HWSUP_SWSUP,
  116. .clkstctrl_reg = OMAP2430_CM_REGADDR(MPU_MOD,
  117. OMAP2_CM_CLKSTCTRL),
  118. .clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
  119. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  120. };
  121. static struct clockdomain mdm_clkdm = {
  122. .name = "mdm_clkdm",
  123. .pwrdm = { .name = "mdm_pwrdm" },
  124. .flags = CLKDM_CAN_HWSUP_SWSUP,
  125. .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
  126. OMAP2_CM_CLKSTCTRL),
  127. .clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
  128. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  129. };
  130. static struct clockdomain dsp_2430_clkdm = {
  131. .name = "dsp_clkdm",
  132. .pwrdm = { .name = "dsp_pwrdm" },
  133. .flags = CLKDM_CAN_HWSUP_SWSUP,
  134. .clkstctrl_reg = OMAP2430_CM_REGADDR(OMAP24XX_DSP_MOD,
  135. OMAP2_CM_CLKSTCTRL),
  136. .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
  137. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  138. };
  139. static struct clockdomain gfx_2430_clkdm = {
  140. .name = "gfx_clkdm",
  141. .pwrdm = { .name = "gfx_pwrdm" },
  142. .flags = CLKDM_CAN_HWSUP_SWSUP,
  143. .clkstctrl_reg = OMAP2430_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
  144. .clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
  145. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  146. };
  147. static struct clockdomain core_l3_2430_clkdm = {
  148. .name = "core_l3_clkdm",
  149. .pwrdm = { .name = "core_pwrdm" },
  150. .flags = CLKDM_CAN_HWSUP,
  151. .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  152. .clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
  153. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  154. };
  155. static struct clockdomain core_l4_2430_clkdm = {
  156. .name = "core_l4_clkdm",
  157. .pwrdm = { .name = "core_pwrdm" },
  158. .flags = CLKDM_CAN_HWSUP,
  159. .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  160. .clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
  161. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  162. };
  163. static struct clockdomain dss_2430_clkdm = {
  164. .name = "dss_clkdm",
  165. .pwrdm = { .name = "core_pwrdm" },
  166. .flags = CLKDM_CAN_HWSUP,
  167. .clkstctrl_reg = OMAP2430_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  168. .clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
  169. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
  170. };
  171. #endif /* CONFIG_ARCH_OMAP2430 */
  172. /*
  173. * 34xx clockdomains
  174. */
  175. #if defined(CONFIG_ARCH_OMAP34XX)
  176. static struct clockdomain mpu_34xx_clkdm = {
  177. .name = "mpu_clkdm",
  178. .pwrdm = { .name = "mpu_pwrdm" },
  179. .flags = CLKDM_CAN_HWSUP | CLKDM_CAN_FORCE_WAKEUP,
  180. .clkstctrl_reg = OMAP34XX_CM_REGADDR(MPU_MOD, OMAP2_CM_CLKSTCTRL),
  181. .clktrctrl_mask = OMAP3430_CLKTRCTRL_MPU_MASK,
  182. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  183. };
  184. static struct clockdomain neon_clkdm = {
  185. .name = "neon_clkdm",
  186. .pwrdm = { .name = "neon_pwrdm" },
  187. .flags = CLKDM_CAN_HWSUP_SWSUP,
  188. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_NEON_MOD,
  189. OMAP2_CM_CLKSTCTRL),
  190. .clktrctrl_mask = OMAP3430_CLKTRCTRL_NEON_MASK,
  191. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  192. };
  193. static struct clockdomain iva2_clkdm = {
  194. .name = "iva2_clkdm",
  195. .pwrdm = { .name = "iva2_pwrdm" },
  196. .flags = CLKDM_CAN_HWSUP_SWSUP,
  197. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_IVA2_MOD,
  198. OMAP2_CM_CLKSTCTRL),
  199. .clktrctrl_mask = OMAP3430_CLKTRCTRL_IVA2_MASK,
  200. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  201. };
  202. static struct clockdomain gfx_3430es1_clkdm = {
  203. .name = "gfx_clkdm",
  204. .pwrdm = { .name = "gfx_pwrdm" },
  205. .flags = CLKDM_CAN_HWSUP_SWSUP,
  206. .clkstctrl_reg = OMAP34XX_CM_REGADDR(GFX_MOD, OMAP2_CM_CLKSTCTRL),
  207. .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_GFX_MASK,
  208. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
  209. };
  210. static struct clockdomain sgx_clkdm = {
  211. .name = "sgx_clkdm",
  212. .pwrdm = { .name = "sgx_pwrdm" },
  213. .flags = CLKDM_CAN_HWSUP_SWSUP,
  214. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD,
  215. OMAP2_CM_CLKSTCTRL),
  216. .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_SGX_MASK,
  217. .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
  218. };
  219. /*
  220. * The die-to-die clockdomain was documented in the 34xx ES1 TRM, but
  221. * then that information was removed from the 34xx ES2+ TRM. It is
  222. * unclear whether the core is still there, but the clockdomain logic
  223. * is there, and must be programmed to an appropriate state if the
  224. * CORE clockdomain is to become inactive.
  225. */
  226. static struct clockdomain d2d_clkdm = {
  227. .name = "d2d_clkdm",
  228. .pwrdm = { .name = "core_pwrdm" },
  229. .flags = CLKDM_CAN_HWSUP_SWSUP,
  230. .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  231. .clktrctrl_mask = OMAP3430ES1_CLKTRCTRL_D2D_MASK,
  232. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  233. };
  234. static struct clockdomain core_l3_34xx_clkdm = {
  235. .name = "core_l3_clkdm",
  236. .pwrdm = { .name = "core_pwrdm" },
  237. .flags = CLKDM_CAN_HWSUP,
  238. .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  239. .clktrctrl_mask = OMAP3430_CLKTRCTRL_L3_MASK,
  240. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  241. };
  242. static struct clockdomain core_l4_34xx_clkdm = {
  243. .name = "core_l4_clkdm",
  244. .pwrdm = { .name = "core_pwrdm" },
  245. .flags = CLKDM_CAN_HWSUP,
  246. .clkstctrl_reg = OMAP34XX_CM_REGADDR(CORE_MOD, OMAP2_CM_CLKSTCTRL),
  247. .clktrctrl_mask = OMAP3430_CLKTRCTRL_L4_MASK,
  248. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  249. };
  250. static struct clockdomain dss_34xx_clkdm = {
  251. .name = "dss_clkdm",
  252. .pwrdm = { .name = "dss_pwrdm" },
  253. .flags = CLKDM_CAN_HWSUP_SWSUP,
  254. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD,
  255. OMAP2_CM_CLKSTCTRL),
  256. .clktrctrl_mask = OMAP3430_CLKTRCTRL_DSS_MASK,
  257. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  258. };
  259. static struct clockdomain cam_clkdm = {
  260. .name = "cam_clkdm",
  261. .pwrdm = { .name = "cam_pwrdm" },
  262. .flags = CLKDM_CAN_HWSUP_SWSUP,
  263. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD,
  264. OMAP2_CM_CLKSTCTRL),
  265. .clktrctrl_mask = OMAP3430_CLKTRCTRL_CAM_MASK,
  266. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  267. };
  268. static struct clockdomain usbhost_clkdm = {
  269. .name = "usbhost_clkdm",
  270. .pwrdm = { .name = "usbhost_pwrdm" },
  271. .flags = CLKDM_CAN_HWSUP_SWSUP,
  272. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD,
  273. OMAP2_CM_CLKSTCTRL),
  274. .clktrctrl_mask = OMAP3430ES2_CLKTRCTRL_USBHOST_MASK,
  275. .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
  276. };
  277. static struct clockdomain per_clkdm = {
  278. .name = "per_clkdm",
  279. .pwrdm = { .name = "per_pwrdm" },
  280. .flags = CLKDM_CAN_HWSUP_SWSUP,
  281. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD,
  282. OMAP2_CM_CLKSTCTRL),
  283. .clktrctrl_mask = OMAP3430_CLKTRCTRL_PER_MASK,
  284. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  285. };
  286. /*
  287. * Disable hw supervised mode for emu_clkdm, because emu_pwrdm is
  288. * switched of even if sdti is in use
  289. */
  290. static struct clockdomain emu_clkdm = {
  291. .name = "emu_clkdm",
  292. .pwrdm = { .name = "emu_pwrdm" },
  293. .flags = /* CLKDM_CAN_ENABLE_AUTO | */CLKDM_CAN_SWSUP,
  294. .clkstctrl_reg = OMAP34XX_CM_REGADDR(OMAP3430_EMU_MOD,
  295. OMAP2_CM_CLKSTCTRL),
  296. .clktrctrl_mask = OMAP3430_CLKTRCTRL_EMU_MASK,
  297. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  298. };
  299. static struct clockdomain dpll1_clkdm = {
  300. .name = "dpll1_clkdm",
  301. .pwrdm = { .name = "dpll1_pwrdm" },
  302. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  303. };
  304. static struct clockdomain dpll2_clkdm = {
  305. .name = "dpll2_clkdm",
  306. .pwrdm = { .name = "dpll2_pwrdm" },
  307. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  308. };
  309. static struct clockdomain dpll3_clkdm = {
  310. .name = "dpll3_clkdm",
  311. .pwrdm = { .name = "dpll3_pwrdm" },
  312. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  313. };
  314. static struct clockdomain dpll4_clkdm = {
  315. .name = "dpll4_clkdm",
  316. .pwrdm = { .name = "dpll4_pwrdm" },
  317. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
  318. };
  319. static struct clockdomain dpll5_clkdm = {
  320. .name = "dpll5_clkdm",
  321. .pwrdm = { .name = "dpll5_pwrdm" },
  322. .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
  323. };
  324. #endif /* CONFIG_ARCH_OMAP34XX */
  325. #include "clockdomains44xx.h"
  326. /*
  327. * Clockdomain-powerdomain hwsup dependencies (34XX only)
  328. */
  329. static struct clkdm_pwrdm_autodep clkdm_pwrdm_autodeps[] = {
  330. #ifdef CONFIG_ARCH_OMAP34XX
  331. {
  332. .pwrdm = { .name = "mpu_pwrdm" },
  333. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
  334. },
  335. {
  336. .pwrdm = { .name = "iva2_pwrdm" },
  337. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
  338. },
  339. {
  340. .pwrdm = { .name = NULL },
  341. }
  342. #endif
  343. };
  344. /*
  345. * List of clockdomain pointers per platform
  346. */
  347. static struct clockdomain *clockdomains_omap[] = {
  348. #if defined(CONFIG_ARCH_OMAP24XX) | defined(CONFIG_ARCH_OMAP34XX)
  349. &wkup_clkdm,
  350. &cm_clkdm,
  351. &prm_clkdm,
  352. #endif
  353. #ifdef CONFIG_ARCH_OMAP2420
  354. &mpu_2420_clkdm,
  355. &iva1_2420_clkdm,
  356. &dsp_2420_clkdm,
  357. &gfx_2420_clkdm,
  358. &core_l3_2420_clkdm,
  359. &core_l4_2420_clkdm,
  360. &dss_2420_clkdm,
  361. #endif
  362. #ifdef CONFIG_ARCH_OMAP2430
  363. &mpu_2430_clkdm,
  364. &mdm_clkdm,
  365. &dsp_2430_clkdm,
  366. &gfx_2430_clkdm,
  367. &core_l3_2430_clkdm,
  368. &core_l4_2430_clkdm,
  369. &dss_2430_clkdm,
  370. #endif
  371. #ifdef CONFIG_ARCH_OMAP34XX
  372. &mpu_34xx_clkdm,
  373. &neon_clkdm,
  374. &iva2_clkdm,
  375. &gfx_3430es1_clkdm,
  376. &sgx_clkdm,
  377. &d2d_clkdm,
  378. &core_l3_34xx_clkdm,
  379. &core_l4_34xx_clkdm,
  380. &dss_34xx_clkdm,
  381. &cam_clkdm,
  382. &usbhost_clkdm,
  383. &per_clkdm,
  384. &emu_clkdm,
  385. &dpll1_clkdm,
  386. &dpll2_clkdm,
  387. &dpll3_clkdm,
  388. &dpll4_clkdm,
  389. &dpll5_clkdm,
  390. #endif
  391. #ifdef CONFIG_ARCH_OMAP4
  392. &l4_cefuse_44xx_clkdm,
  393. &l4_cfg_44xx_clkdm,
  394. &tesla_44xx_clkdm,
  395. &l3_gfx_44xx_clkdm,
  396. &ivahd_44xx_clkdm,
  397. &l4_secure_44xx_clkdm,
  398. &l4_per_44xx_clkdm,
  399. &abe_44xx_clkdm,
  400. &l3_instr_44xx_clkdm,
  401. &l3_init_44xx_clkdm,
  402. &mpuss_44xx_clkdm,
  403. &mpu0_44xx_clkdm,
  404. &mpu1_44xx_clkdm,
  405. &l3_emif_44xx_clkdm,
  406. &l4_ao_44xx_clkdm,
  407. &ducati_44xx_clkdm,
  408. &l3_2_44xx_clkdm,
  409. &l3_1_44xx_clkdm,
  410. &l3_d2d_44xx_clkdm,
  411. &iss_44xx_clkdm,
  412. &l3_dss_44xx_clkdm,
  413. &l4_wkup_44xx_clkdm,
  414. &emu_sys_44xx_clkdm,
  415. &l3_dma_44xx_clkdm,
  416. #endif
  417. NULL,
  418. };
  419. #endif