clockdomains44xx_data.c 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  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. {
  33. .clkdm_name = "abe_clkdm",
  34. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  35. },
  36. {
  37. .clkdm_name = "ivahd_clkdm",
  38. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  39. },
  40. {
  41. .clkdm_name = "l3_1_clkdm",
  42. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  43. },
  44. {
  45. .clkdm_name = "l3_2_clkdm",
  46. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  47. },
  48. {
  49. .clkdm_name = "l3_emif_clkdm",
  50. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  51. },
  52. {
  53. .clkdm_name = "l3_init_clkdm",
  54. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  55. },
  56. {
  57. .clkdm_name = "l4_cfg_clkdm",
  58. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  59. },
  60. {
  61. .clkdm_name = "l4_per_clkdm",
  62. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  63. },
  64. { NULL },
  65. };
  66. static struct clkdm_dep ducati_wkup_sleep_deps[] = {
  67. {
  68. .clkdm_name = "abe_clkdm",
  69. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  70. },
  71. {
  72. .clkdm_name = "ivahd_clkdm",
  73. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  74. },
  75. {
  76. .clkdm_name = "l3_1_clkdm",
  77. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  78. },
  79. {
  80. .clkdm_name = "l3_2_clkdm",
  81. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  82. },
  83. {
  84. .clkdm_name = "l3_dss_clkdm",
  85. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  86. },
  87. {
  88. .clkdm_name = "l3_emif_clkdm",
  89. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  90. },
  91. {
  92. .clkdm_name = "l3_gfx_clkdm",
  93. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  94. },
  95. {
  96. .clkdm_name = "l3_init_clkdm",
  97. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  98. },
  99. {
  100. .clkdm_name = "l4_cfg_clkdm",
  101. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  102. },
  103. {
  104. .clkdm_name = "l4_per_clkdm",
  105. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  106. },
  107. {
  108. .clkdm_name = "l4_secure_clkdm",
  109. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  110. },
  111. {
  112. .clkdm_name = "l4_wkup_clkdm",
  113. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  114. },
  115. {
  116. .clkdm_name = "tesla_clkdm",
  117. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  118. },
  119. { NULL },
  120. };
  121. static struct clkdm_dep iss_wkup_sleep_deps[] = {
  122. {
  123. .clkdm_name = "ivahd_clkdm",
  124. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  125. },
  126. {
  127. .clkdm_name = "l3_1_clkdm",
  128. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  129. },
  130. {
  131. .clkdm_name = "l3_emif_clkdm",
  132. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  133. },
  134. { NULL },
  135. };
  136. static struct clkdm_dep ivahd_wkup_sleep_deps[] = {
  137. {
  138. .clkdm_name = "l3_1_clkdm",
  139. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  140. },
  141. {
  142. .clkdm_name = "l3_emif_clkdm",
  143. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  144. },
  145. { NULL },
  146. };
  147. static struct clkdm_dep l3_dma_wkup_sleep_deps[] = {
  148. {
  149. .clkdm_name = "abe_clkdm",
  150. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  151. },
  152. {
  153. .clkdm_name = "ducati_clkdm",
  154. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  155. },
  156. {
  157. .clkdm_name = "ivahd_clkdm",
  158. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  159. },
  160. {
  161. .clkdm_name = "l3_1_clkdm",
  162. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  163. },
  164. {
  165. .clkdm_name = "l3_dss_clkdm",
  166. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  167. },
  168. {
  169. .clkdm_name = "l3_emif_clkdm",
  170. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  171. },
  172. {
  173. .clkdm_name = "l3_init_clkdm",
  174. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  175. },
  176. {
  177. .clkdm_name = "l4_cfg_clkdm",
  178. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  179. },
  180. {
  181. .clkdm_name = "l4_per_clkdm",
  182. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  183. },
  184. {
  185. .clkdm_name = "l4_secure_clkdm",
  186. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  187. },
  188. {
  189. .clkdm_name = "l4_wkup_clkdm",
  190. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  191. },
  192. { NULL },
  193. };
  194. static struct clkdm_dep l3_dss_wkup_sleep_deps[] = {
  195. {
  196. .clkdm_name = "ivahd_clkdm",
  197. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  198. },
  199. {
  200. .clkdm_name = "l3_2_clkdm",
  201. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  202. },
  203. {
  204. .clkdm_name = "l3_emif_clkdm",
  205. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  206. },
  207. { NULL },
  208. };
  209. static struct clkdm_dep l3_gfx_wkup_sleep_deps[] = {
  210. {
  211. .clkdm_name = "ivahd_clkdm",
  212. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  213. },
  214. {
  215. .clkdm_name = "l3_1_clkdm",
  216. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  217. },
  218. {
  219. .clkdm_name = "l3_emif_clkdm",
  220. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  221. },
  222. { NULL },
  223. };
  224. static struct clkdm_dep l3_init_wkup_sleep_deps[] = {
  225. {
  226. .clkdm_name = "abe_clkdm",
  227. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  228. },
  229. {
  230. .clkdm_name = "ivahd_clkdm",
  231. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  232. },
  233. {
  234. .clkdm_name = "l3_emif_clkdm",
  235. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  236. },
  237. {
  238. .clkdm_name = "l4_cfg_clkdm",
  239. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  240. },
  241. {
  242. .clkdm_name = "l4_per_clkdm",
  243. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  244. },
  245. {
  246. .clkdm_name = "l4_secure_clkdm",
  247. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  248. },
  249. {
  250. .clkdm_name = "l4_wkup_clkdm",
  251. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  252. },
  253. { NULL },
  254. };
  255. static struct clkdm_dep l4_secure_wkup_sleep_deps[] = {
  256. {
  257. .clkdm_name = "l3_1_clkdm",
  258. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  259. },
  260. {
  261. .clkdm_name = "l3_emif_clkdm",
  262. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  263. },
  264. {
  265. .clkdm_name = "l4_per_clkdm",
  266. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  267. },
  268. { NULL },
  269. };
  270. static struct clkdm_dep mpu_wkup_sleep_deps[] = {
  271. {
  272. .clkdm_name = "abe_clkdm",
  273. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  274. },
  275. {
  276. .clkdm_name = "ducati_clkdm",
  277. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  278. },
  279. {
  280. .clkdm_name = "ivahd_clkdm",
  281. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  282. },
  283. {
  284. .clkdm_name = "l3_1_clkdm",
  285. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  286. },
  287. {
  288. .clkdm_name = "l3_2_clkdm",
  289. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  290. },
  291. {
  292. .clkdm_name = "l3_dss_clkdm",
  293. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  294. },
  295. {
  296. .clkdm_name = "l3_emif_clkdm",
  297. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  298. },
  299. {
  300. .clkdm_name = "l3_gfx_clkdm",
  301. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  302. },
  303. {
  304. .clkdm_name = "l3_init_clkdm",
  305. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  306. },
  307. {
  308. .clkdm_name = "l4_cfg_clkdm",
  309. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  310. },
  311. {
  312. .clkdm_name = "l4_per_clkdm",
  313. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  314. },
  315. {
  316. .clkdm_name = "l4_secure_clkdm",
  317. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  318. },
  319. {
  320. .clkdm_name = "l4_wkup_clkdm",
  321. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  322. },
  323. {
  324. .clkdm_name = "tesla_clkdm",
  325. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  326. },
  327. { NULL },
  328. };
  329. static struct clkdm_dep tesla_wkup_sleep_deps[] = {
  330. {
  331. .clkdm_name = "abe_clkdm",
  332. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  333. },
  334. {
  335. .clkdm_name = "ivahd_clkdm",
  336. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  337. },
  338. {
  339. .clkdm_name = "l3_1_clkdm",
  340. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  341. },
  342. {
  343. .clkdm_name = "l3_2_clkdm",
  344. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  345. },
  346. {
  347. .clkdm_name = "l3_emif_clkdm",
  348. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  349. },
  350. {
  351. .clkdm_name = "l3_init_clkdm",
  352. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  353. },
  354. {
  355. .clkdm_name = "l4_cfg_clkdm",
  356. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  357. },
  358. {
  359. .clkdm_name = "l4_per_clkdm",
  360. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  361. },
  362. {
  363. .clkdm_name = "l4_wkup_clkdm",
  364. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430)
  365. },
  366. { NULL },
  367. };
  368. static struct clockdomain l4_cefuse_44xx_clkdm = {
  369. .name = "l4_cefuse_clkdm",
  370. .pwrdm = { .name = "cefuse_pwrdm" },
  371. .prcm_partition = OMAP4430_CM2_PARTITION,
  372. .cm_inst = OMAP4430_CM2_CEFUSE_INST,
  373. .clkdm_offs = OMAP4430_CM2_CEFUSE_CEFUSE_CDOFFS,
  374. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  375. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  376. };
  377. static struct clockdomain l4_cfg_44xx_clkdm = {
  378. .name = "l4_cfg_clkdm",
  379. .pwrdm = { .name = "core_pwrdm" },
  380. .prcm_partition = OMAP4430_CM2_PARTITION,
  381. .cm_inst = OMAP4430_CM2_CORE_INST,
  382. .clkdm_offs = OMAP4430_CM2_CORE_L4CFG_CDOFFS,
  383. .dep_bit = OMAP4430_L4CFG_STATDEP_SHIFT,
  384. .flags = CLKDM_CAN_HWSUP,
  385. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  386. };
  387. static struct clockdomain tesla_44xx_clkdm = {
  388. .name = "tesla_clkdm",
  389. .pwrdm = { .name = "tesla_pwrdm" },
  390. .prcm_partition = OMAP4430_CM1_PARTITION,
  391. .cm_inst = OMAP4430_CM1_TESLA_INST,
  392. .clkdm_offs = OMAP4430_CM1_TESLA_TESLA_CDOFFS,
  393. .dep_bit = OMAP4430_TESLA_STATDEP_SHIFT,
  394. .wkdep_srcs = tesla_wkup_sleep_deps,
  395. .sleepdep_srcs = tesla_wkup_sleep_deps,
  396. .flags = CLKDM_CAN_HWSUP_SWSUP,
  397. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  398. };
  399. static struct clockdomain l3_gfx_44xx_clkdm = {
  400. .name = "l3_gfx_clkdm",
  401. .pwrdm = { .name = "gfx_pwrdm" },
  402. .prcm_partition = OMAP4430_CM2_PARTITION,
  403. .cm_inst = OMAP4430_CM2_GFX_INST,
  404. .clkdm_offs = OMAP4430_CM2_GFX_GFX_CDOFFS,
  405. .dep_bit = OMAP4430_GFX_STATDEP_SHIFT,
  406. .wkdep_srcs = l3_gfx_wkup_sleep_deps,
  407. .sleepdep_srcs = l3_gfx_wkup_sleep_deps,
  408. .flags = CLKDM_CAN_HWSUP_SWSUP,
  409. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  410. };
  411. static struct clockdomain ivahd_44xx_clkdm = {
  412. .name = "ivahd_clkdm",
  413. .pwrdm = { .name = "ivahd_pwrdm" },
  414. .prcm_partition = OMAP4430_CM2_PARTITION,
  415. .cm_inst = OMAP4430_CM2_IVAHD_INST,
  416. .clkdm_offs = OMAP4430_CM2_IVAHD_IVAHD_CDOFFS,
  417. .dep_bit = OMAP4430_IVAHD_STATDEP_SHIFT,
  418. .wkdep_srcs = ivahd_wkup_sleep_deps,
  419. .sleepdep_srcs = ivahd_wkup_sleep_deps,
  420. .flags = CLKDM_CAN_HWSUP_SWSUP,
  421. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  422. };
  423. static struct clockdomain l4_secure_44xx_clkdm = {
  424. .name = "l4_secure_clkdm",
  425. .pwrdm = { .name = "l4per_pwrdm" },
  426. .prcm_partition = OMAP4430_CM2_PARTITION,
  427. .cm_inst = OMAP4430_CM2_L4PER_INST,
  428. .clkdm_offs = OMAP4430_CM2_L4PER_L4SEC_CDOFFS,
  429. .dep_bit = OMAP4430_L4SEC_STATDEP_SHIFT,
  430. .wkdep_srcs = l4_secure_wkup_sleep_deps,
  431. .sleepdep_srcs = l4_secure_wkup_sleep_deps,
  432. .flags = CLKDM_CAN_HWSUP_SWSUP,
  433. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  434. };
  435. static struct clockdomain l4_per_44xx_clkdm = {
  436. .name = "l4_per_clkdm",
  437. .pwrdm = { .name = "l4per_pwrdm" },
  438. .prcm_partition = OMAP4430_CM2_PARTITION,
  439. .cm_inst = OMAP4430_CM2_L4PER_INST,
  440. .clkdm_offs = OMAP4430_CM2_L4PER_L4PER_CDOFFS,
  441. .dep_bit = OMAP4430_L4PER_STATDEP_SHIFT,
  442. .flags = CLKDM_CAN_HWSUP_SWSUP,
  443. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  444. };
  445. static struct clockdomain abe_44xx_clkdm = {
  446. .name = "abe_clkdm",
  447. .pwrdm = { .name = "abe_pwrdm" },
  448. .prcm_partition = OMAP4430_CM1_PARTITION,
  449. .cm_inst = OMAP4430_CM1_ABE_INST,
  450. .clkdm_offs = OMAP4430_CM1_ABE_ABE_CDOFFS,
  451. .dep_bit = OMAP4430_ABE_STATDEP_SHIFT,
  452. .flags = CLKDM_CAN_HWSUP_SWSUP,
  453. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  454. };
  455. static struct clockdomain l3_instr_44xx_clkdm = {
  456. .name = "l3_instr_clkdm",
  457. .pwrdm = { .name = "core_pwrdm" },
  458. .prcm_partition = OMAP4430_CM2_PARTITION,
  459. .cm_inst = OMAP4430_CM2_CORE_INST,
  460. .clkdm_offs = OMAP4430_CM2_CORE_L3INSTR_CDOFFS,
  461. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  462. };
  463. static struct clockdomain l3_init_44xx_clkdm = {
  464. .name = "l3_init_clkdm",
  465. .pwrdm = { .name = "l3init_pwrdm" },
  466. .prcm_partition = OMAP4430_CM2_PARTITION,
  467. .cm_inst = OMAP4430_CM2_L3INIT_INST,
  468. .clkdm_offs = OMAP4430_CM2_L3INIT_L3INIT_CDOFFS,
  469. .dep_bit = OMAP4430_L3INIT_STATDEP_SHIFT,
  470. .wkdep_srcs = l3_init_wkup_sleep_deps,
  471. .sleepdep_srcs = l3_init_wkup_sleep_deps,
  472. .flags = CLKDM_CAN_HWSUP_SWSUP,
  473. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  474. };
  475. static struct clockdomain d2d_44xx_clkdm = {
  476. .name = "d2d_clkdm",
  477. .pwrdm = { .name = "core_pwrdm" },
  478. .prcm_partition = OMAP4430_CM2_PARTITION,
  479. .cm_inst = OMAP4430_CM2_CORE_INST,
  480. .clkdm_offs = OMAP4430_CM2_CORE_D2D_CDOFFS,
  481. .wkdep_srcs = d2d_wkup_sleep_deps,
  482. .sleepdep_srcs = d2d_wkup_sleep_deps,
  483. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  484. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  485. };
  486. static struct clockdomain mpu0_44xx_clkdm = {
  487. .name = "mpu0_clkdm",
  488. .pwrdm = { .name = "cpu0_pwrdm" },
  489. .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
  490. .cm_inst = OMAP4430_PRCM_MPU_CPU0_INST,
  491. .clkdm_offs = OMAP4430_PRCM_MPU_CPU0_CPU0_CDOFFS,
  492. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  493. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  494. };
  495. static struct clockdomain mpu1_44xx_clkdm = {
  496. .name = "mpu1_clkdm",
  497. .pwrdm = { .name = "cpu1_pwrdm" },
  498. .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
  499. .cm_inst = OMAP4430_PRCM_MPU_CPU1_INST,
  500. .clkdm_offs = OMAP4430_PRCM_MPU_CPU1_CPU1_CDOFFS,
  501. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  502. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  503. };
  504. static struct clockdomain l3_emif_44xx_clkdm = {
  505. .name = "l3_emif_clkdm",
  506. .pwrdm = { .name = "core_pwrdm" },
  507. .prcm_partition = OMAP4430_CM2_PARTITION,
  508. .cm_inst = OMAP4430_CM2_CORE_INST,
  509. .clkdm_offs = OMAP4430_CM2_CORE_MEMIF_CDOFFS,
  510. .dep_bit = OMAP4430_MEMIF_STATDEP_SHIFT,
  511. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  512. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  513. };
  514. static struct clockdomain l4_ao_44xx_clkdm = {
  515. .name = "l4_ao_clkdm",
  516. .pwrdm = { .name = "always_on_core_pwrdm" },
  517. .prcm_partition = OMAP4430_CM2_PARTITION,
  518. .cm_inst = OMAP4430_CM2_ALWAYS_ON_INST,
  519. .clkdm_offs = OMAP4430_CM2_ALWAYS_ON_ALWON_CDOFFS,
  520. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  521. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  522. };
  523. static struct clockdomain ducati_44xx_clkdm = {
  524. .name = "ducati_clkdm",
  525. .pwrdm = { .name = "core_pwrdm" },
  526. .prcm_partition = OMAP4430_CM2_PARTITION,
  527. .cm_inst = OMAP4430_CM2_CORE_INST,
  528. .clkdm_offs = OMAP4430_CM2_CORE_DUCATI_CDOFFS,
  529. .dep_bit = OMAP4430_DUCATI_STATDEP_SHIFT,
  530. .wkdep_srcs = ducati_wkup_sleep_deps,
  531. .sleepdep_srcs = ducati_wkup_sleep_deps,
  532. .flags = CLKDM_CAN_HWSUP_SWSUP,
  533. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  534. };
  535. static struct clockdomain mpu_44xx_clkdm = {
  536. .name = "mpuss_clkdm",
  537. .pwrdm = { .name = "mpu_pwrdm" },
  538. .prcm_partition = OMAP4430_CM1_PARTITION,
  539. .cm_inst = OMAP4430_CM1_MPU_INST,
  540. .clkdm_offs = OMAP4430_CM1_MPU_MPU_CDOFFS,
  541. .wkdep_srcs = mpu_wkup_sleep_deps,
  542. .sleepdep_srcs = mpu_wkup_sleep_deps,
  543. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  544. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  545. };
  546. static struct clockdomain l3_2_44xx_clkdm = {
  547. .name = "l3_2_clkdm",
  548. .pwrdm = { .name = "core_pwrdm" },
  549. .prcm_partition = OMAP4430_CM2_PARTITION,
  550. .cm_inst = OMAP4430_CM2_CORE_INST,
  551. .clkdm_offs = OMAP4430_CM2_CORE_L3_2_CDOFFS,
  552. .dep_bit = OMAP4430_L3_2_STATDEP_SHIFT,
  553. .flags = CLKDM_CAN_HWSUP,
  554. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  555. };
  556. static struct clockdomain l3_1_44xx_clkdm = {
  557. .name = "l3_1_clkdm",
  558. .pwrdm = { .name = "core_pwrdm" },
  559. .prcm_partition = OMAP4430_CM2_PARTITION,
  560. .cm_inst = OMAP4430_CM2_CORE_INST,
  561. .clkdm_offs = OMAP4430_CM2_CORE_L3_1_CDOFFS,
  562. .dep_bit = OMAP4430_L3_1_STATDEP_SHIFT,
  563. .flags = CLKDM_CAN_HWSUP,
  564. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  565. };
  566. static struct clockdomain iss_44xx_clkdm = {
  567. .name = "iss_clkdm",
  568. .pwrdm = { .name = "cam_pwrdm" },
  569. .prcm_partition = OMAP4430_CM2_PARTITION,
  570. .cm_inst = OMAP4430_CM2_CAM_INST,
  571. .clkdm_offs = OMAP4430_CM2_CAM_CAM_CDOFFS,
  572. .wkdep_srcs = iss_wkup_sleep_deps,
  573. .sleepdep_srcs = iss_wkup_sleep_deps,
  574. .flags = CLKDM_CAN_HWSUP_SWSUP,
  575. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  576. };
  577. static struct clockdomain l3_dss_44xx_clkdm = {
  578. .name = "l3_dss_clkdm",
  579. .pwrdm = { .name = "dss_pwrdm" },
  580. .prcm_partition = OMAP4430_CM2_PARTITION,
  581. .cm_inst = OMAP4430_CM2_DSS_INST,
  582. .clkdm_offs = OMAP4430_CM2_DSS_DSS_CDOFFS,
  583. .dep_bit = OMAP4430_DSS_STATDEP_SHIFT,
  584. .wkdep_srcs = l3_dss_wkup_sleep_deps,
  585. .sleepdep_srcs = l3_dss_wkup_sleep_deps,
  586. .flags = CLKDM_CAN_HWSUP_SWSUP,
  587. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  588. };
  589. static struct clockdomain l4_wkup_44xx_clkdm = {
  590. .name = "l4_wkup_clkdm",
  591. .pwrdm = { .name = "wkup_pwrdm" },
  592. .prcm_partition = OMAP4430_PRM_PARTITION,
  593. .cm_inst = OMAP4430_PRM_WKUP_CM_INST,
  594. .clkdm_offs = OMAP4430_PRM_WKUP_CM_WKUP_CDOFFS,
  595. .dep_bit = OMAP4430_L4WKUP_STATDEP_SHIFT,
  596. .flags = CLKDM_CAN_HWSUP,
  597. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  598. };
  599. static struct clockdomain emu_sys_44xx_clkdm = {
  600. .name = "emu_sys_clkdm",
  601. .pwrdm = { .name = "emu_pwrdm" },
  602. .prcm_partition = OMAP4430_PRM_PARTITION,
  603. .cm_inst = OMAP4430_PRM_EMU_CM_INST,
  604. .clkdm_offs = OMAP4430_PRM_EMU_CM_EMU_CDOFFS,
  605. .flags = CLKDM_CAN_HWSUP,
  606. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  607. };
  608. static struct clockdomain l3_dma_44xx_clkdm = {
  609. .name = "l3_dma_clkdm",
  610. .pwrdm = { .name = "core_pwrdm" },
  611. .prcm_partition = OMAP4430_CM2_PARTITION,
  612. .cm_inst = OMAP4430_CM2_CORE_INST,
  613. .clkdm_offs = OMAP4430_CM2_CORE_SDMA_CDOFFS,
  614. .wkdep_srcs = l3_dma_wkup_sleep_deps,
  615. .sleepdep_srcs = l3_dma_wkup_sleep_deps,
  616. .flags = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
  617. .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
  618. };
  619. /* As clockdomains are added or removed above, this list must also be changed */
  620. static struct clockdomain *clockdomains_omap44xx[] __initdata = {
  621. &l4_cefuse_44xx_clkdm,
  622. &l4_cfg_44xx_clkdm,
  623. &tesla_44xx_clkdm,
  624. &l3_gfx_44xx_clkdm,
  625. &ivahd_44xx_clkdm,
  626. &l4_secure_44xx_clkdm,
  627. &l4_per_44xx_clkdm,
  628. &abe_44xx_clkdm,
  629. &l3_instr_44xx_clkdm,
  630. &l3_init_44xx_clkdm,
  631. &d2d_44xx_clkdm,
  632. &mpu0_44xx_clkdm,
  633. &mpu1_44xx_clkdm,
  634. &l3_emif_44xx_clkdm,
  635. &l4_ao_44xx_clkdm,
  636. &ducati_44xx_clkdm,
  637. &mpu_44xx_clkdm,
  638. &l3_2_44xx_clkdm,
  639. &l3_1_44xx_clkdm,
  640. &iss_44xx_clkdm,
  641. &l3_dss_44xx_clkdm,
  642. &l4_wkup_44xx_clkdm,
  643. &emu_sys_44xx_clkdm,
  644. &l3_dma_44xx_clkdm,
  645. NULL
  646. };
  647. void __init omap44xx_clockdomains_init(void)
  648. {
  649. clkdm_init(clockdomains_omap44xx, NULL, &omap4_clkdm_operations);
  650. }