/arch/arm/mach-omap2/clockdomains44xx_data.c

https://github.com/AICP/kernel_asus_grouper · C · 691 lines · 628 code · 41 blank · 22 comment · 0 complexity · ed14f7c5d429a5b778ed277b0ddb0acb MD5 · raw file

  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. }