omap_hwmod_2xxx_interconnect_data.c 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. /*
  2. * omap_hwmod_2xxx_interconnect_data.c - common interconnect data for OMAP2xxx
  3. *
  4. * Copyright (C) 2009-2011 Nokia Corporation
  5. * Paul Walmsley
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License version 2 as
  9. * published by the Free Software Foundation.
  10. *
  11. * XXX handle crossbar/shared link difference for L3?
  12. * XXX these should be marked initdata for multi-OMAP kernels
  13. */
  14. #include <asm/sizes.h>
  15. #include "omap_hwmod.h"
  16. #include "l3_2xxx.h"
  17. #include "l4_2xxx.h"
  18. #include "serial.h"
  19. #include "omap_hwmod_common_data.h"
  20. static struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[] = {
  21. {
  22. .pa_start = OMAP2_UART1_BASE,
  23. .pa_end = OMAP2_UART1_BASE + SZ_8K - 1,
  24. .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
  25. },
  26. { }
  27. };
  28. static struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[] = {
  29. {
  30. .pa_start = OMAP2_UART2_BASE,
  31. .pa_end = OMAP2_UART2_BASE + SZ_1K - 1,
  32. .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
  33. },
  34. { }
  35. };
  36. static struct omap_hwmod_addr_space omap2xxx_uart3_addr_space[] = {
  37. {
  38. .pa_start = OMAP2_UART3_BASE,
  39. .pa_end = OMAP2_UART3_BASE + SZ_1K - 1,
  40. .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
  41. },
  42. { }
  43. };
  44. static struct omap_hwmod_addr_space omap2xxx_timer2_addrs[] = {
  45. {
  46. .pa_start = 0x4802a000,
  47. .pa_end = 0x4802a000 + SZ_1K - 1,
  48. .flags = ADDR_TYPE_RT
  49. },
  50. { }
  51. };
  52. static struct omap_hwmod_addr_space omap2xxx_timer3_addrs[] = {
  53. {
  54. .pa_start = 0x48078000,
  55. .pa_end = 0x48078000 + SZ_1K - 1,
  56. .flags = ADDR_TYPE_RT
  57. },
  58. { }
  59. };
  60. static struct omap_hwmod_addr_space omap2xxx_timer4_addrs[] = {
  61. {
  62. .pa_start = 0x4807a000,
  63. .pa_end = 0x4807a000 + SZ_1K - 1,
  64. .flags = ADDR_TYPE_RT
  65. },
  66. { }
  67. };
  68. static struct omap_hwmod_addr_space omap2xxx_timer5_addrs[] = {
  69. {
  70. .pa_start = 0x4807c000,
  71. .pa_end = 0x4807c000 + SZ_1K - 1,
  72. .flags = ADDR_TYPE_RT
  73. },
  74. { }
  75. };
  76. static struct omap_hwmod_addr_space omap2xxx_timer6_addrs[] = {
  77. {
  78. .pa_start = 0x4807e000,
  79. .pa_end = 0x4807e000 + SZ_1K - 1,
  80. .flags = ADDR_TYPE_RT
  81. },
  82. { }
  83. };
  84. static struct omap_hwmod_addr_space omap2xxx_timer7_addrs[] = {
  85. {
  86. .pa_start = 0x48080000,
  87. .pa_end = 0x48080000 + SZ_1K - 1,
  88. .flags = ADDR_TYPE_RT
  89. },
  90. { }
  91. };
  92. static struct omap_hwmod_addr_space omap2xxx_timer8_addrs[] = {
  93. {
  94. .pa_start = 0x48082000,
  95. .pa_end = 0x48082000 + SZ_1K - 1,
  96. .flags = ADDR_TYPE_RT
  97. },
  98. { }
  99. };
  100. static struct omap_hwmod_addr_space omap2xxx_timer9_addrs[] = {
  101. {
  102. .pa_start = 0x48084000,
  103. .pa_end = 0x48084000 + SZ_1K - 1,
  104. .flags = ADDR_TYPE_RT
  105. },
  106. { }
  107. };
  108. struct omap_hwmod_addr_space omap2xxx_mcbsp2_addrs[] = {
  109. {
  110. .name = "mpu",
  111. .pa_start = 0x48076000,
  112. .pa_end = 0x480760ff,
  113. .flags = ADDR_TYPE_RT
  114. },
  115. { }
  116. };
  117. static struct omap_hwmod_addr_space omap2_rng_addr_space[] = {
  118. {
  119. .pa_start = 0x480a0000,
  120. .pa_end = 0x480a004f,
  121. .flags = ADDR_TYPE_RT
  122. },
  123. { }
  124. };
  125. /*
  126. * Common interconnect data
  127. */
  128. /* L3 -> L4_CORE interface */
  129. struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core = {
  130. .master = &omap2xxx_l3_main_hwmod,
  131. .slave = &omap2xxx_l4_core_hwmod,
  132. .user = OCP_USER_MPU | OCP_USER_SDMA,
  133. };
  134. /* MPU -> L3 interface */
  135. struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main = {
  136. .master = &omap2xxx_mpu_hwmod,
  137. .slave = &omap2xxx_l3_main_hwmod,
  138. .user = OCP_USER_MPU,
  139. };
  140. /* DSS -> l3 */
  141. struct omap_hwmod_ocp_if omap2xxx_dss__l3 = {
  142. .master = &omap2xxx_dss_core_hwmod,
  143. .slave = &omap2xxx_l3_main_hwmod,
  144. .fw = {
  145. .omap2 = {
  146. .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
  147. .flags = OMAP_FIREWALL_L3,
  148. }
  149. },
  150. .user = OCP_USER_MPU | OCP_USER_SDMA,
  151. };
  152. /* L4_CORE -> L4_WKUP interface */
  153. struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup = {
  154. .master = &omap2xxx_l4_core_hwmod,
  155. .slave = &omap2xxx_l4_wkup_hwmod,
  156. .user = OCP_USER_MPU | OCP_USER_SDMA,
  157. };
  158. /* L4 CORE -> UART1 interface */
  159. struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
  160. .master = &omap2xxx_l4_core_hwmod,
  161. .slave = &omap2xxx_uart1_hwmod,
  162. .clk = "uart1_ick",
  163. .addr = omap2xxx_uart1_addr_space,
  164. .user = OCP_USER_MPU | OCP_USER_SDMA,
  165. };
  166. /* L4 CORE -> UART2 interface */
  167. struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
  168. .master = &omap2xxx_l4_core_hwmod,
  169. .slave = &omap2xxx_uart2_hwmod,
  170. .clk = "uart2_ick",
  171. .addr = omap2xxx_uart2_addr_space,
  172. .user = OCP_USER_MPU | OCP_USER_SDMA,
  173. };
  174. /* L4 PER -> UART3 interface */
  175. struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
  176. .master = &omap2xxx_l4_core_hwmod,
  177. .slave = &omap2xxx_uart3_hwmod,
  178. .clk = "uart3_ick",
  179. .addr = omap2xxx_uart3_addr_space,
  180. .user = OCP_USER_MPU | OCP_USER_SDMA,
  181. };
  182. /* l4 core -> mcspi1 interface */
  183. struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1 = {
  184. .master = &omap2xxx_l4_core_hwmod,
  185. .slave = &omap2xxx_mcspi1_hwmod,
  186. .clk = "mcspi1_ick",
  187. .addr = omap2_mcspi1_addr_space,
  188. .user = OCP_USER_MPU | OCP_USER_SDMA,
  189. };
  190. /* l4 core -> mcspi2 interface */
  191. struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2 = {
  192. .master = &omap2xxx_l4_core_hwmod,
  193. .slave = &omap2xxx_mcspi2_hwmod,
  194. .clk = "mcspi2_ick",
  195. .addr = omap2_mcspi2_addr_space,
  196. .user = OCP_USER_MPU | OCP_USER_SDMA,
  197. };
  198. /* l4_core -> timer2 */
  199. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer2 = {
  200. .master = &omap2xxx_l4_core_hwmod,
  201. .slave = &omap2xxx_timer2_hwmod,
  202. .clk = "gpt2_ick",
  203. .addr = omap2xxx_timer2_addrs,
  204. .user = OCP_USER_MPU | OCP_USER_SDMA,
  205. };
  206. /* l4_core -> timer3 */
  207. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3 = {
  208. .master = &omap2xxx_l4_core_hwmod,
  209. .slave = &omap2xxx_timer3_hwmod,
  210. .clk = "gpt3_ick",
  211. .addr = omap2xxx_timer3_addrs,
  212. .user = OCP_USER_MPU | OCP_USER_SDMA,
  213. };
  214. /* l4_core -> timer4 */
  215. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4 = {
  216. .master = &omap2xxx_l4_core_hwmod,
  217. .slave = &omap2xxx_timer4_hwmod,
  218. .clk = "gpt4_ick",
  219. .addr = omap2xxx_timer4_addrs,
  220. .user = OCP_USER_MPU | OCP_USER_SDMA,
  221. };
  222. /* l4_core -> timer5 */
  223. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5 = {
  224. .master = &omap2xxx_l4_core_hwmod,
  225. .slave = &omap2xxx_timer5_hwmod,
  226. .clk = "gpt5_ick",
  227. .addr = omap2xxx_timer5_addrs,
  228. .user = OCP_USER_MPU | OCP_USER_SDMA,
  229. };
  230. /* l4_core -> timer6 */
  231. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6 = {
  232. .master = &omap2xxx_l4_core_hwmod,
  233. .slave = &omap2xxx_timer6_hwmod,
  234. .clk = "gpt6_ick",
  235. .addr = omap2xxx_timer6_addrs,
  236. .user = OCP_USER_MPU | OCP_USER_SDMA,
  237. };
  238. /* l4_core -> timer7 */
  239. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7 = {
  240. .master = &omap2xxx_l4_core_hwmod,
  241. .slave = &omap2xxx_timer7_hwmod,
  242. .clk = "gpt7_ick",
  243. .addr = omap2xxx_timer7_addrs,
  244. .user = OCP_USER_MPU | OCP_USER_SDMA,
  245. };
  246. /* l4_core -> timer8 */
  247. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8 = {
  248. .master = &omap2xxx_l4_core_hwmod,
  249. .slave = &omap2xxx_timer8_hwmod,
  250. .clk = "gpt8_ick",
  251. .addr = omap2xxx_timer8_addrs,
  252. .user = OCP_USER_MPU | OCP_USER_SDMA,
  253. };
  254. /* l4_core -> timer9 */
  255. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9 = {
  256. .master = &omap2xxx_l4_core_hwmod,
  257. .slave = &omap2xxx_timer9_hwmod,
  258. .clk = "gpt9_ick",
  259. .addr = omap2xxx_timer9_addrs,
  260. .user = OCP_USER_MPU | OCP_USER_SDMA,
  261. };
  262. /* l4_core -> timer10 */
  263. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10 = {
  264. .master = &omap2xxx_l4_core_hwmod,
  265. .slave = &omap2xxx_timer10_hwmod,
  266. .clk = "gpt10_ick",
  267. .addr = omap2_timer10_addrs,
  268. .user = OCP_USER_MPU | OCP_USER_SDMA,
  269. };
  270. /* l4_core -> timer11 */
  271. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11 = {
  272. .master = &omap2xxx_l4_core_hwmod,
  273. .slave = &omap2xxx_timer11_hwmod,
  274. .clk = "gpt11_ick",
  275. .addr = omap2_timer11_addrs,
  276. .user = OCP_USER_MPU | OCP_USER_SDMA,
  277. };
  278. /* l4_core -> timer12 */
  279. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12 = {
  280. .master = &omap2xxx_l4_core_hwmod,
  281. .slave = &omap2xxx_timer12_hwmod,
  282. .clk = "gpt12_ick",
  283. .addr = omap2xxx_timer12_addrs,
  284. .user = OCP_USER_MPU | OCP_USER_SDMA,
  285. };
  286. /* l4_core -> dss */
  287. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss = {
  288. .master = &omap2xxx_l4_core_hwmod,
  289. .slave = &omap2xxx_dss_core_hwmod,
  290. .clk = "dss_ick",
  291. .addr = omap2_dss_addrs,
  292. .fw = {
  293. .omap2 = {
  294. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
  295. .flags = OMAP_FIREWALL_L4,
  296. }
  297. },
  298. .user = OCP_USER_MPU | OCP_USER_SDMA,
  299. };
  300. /* l4_core -> dss_dispc */
  301. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc = {
  302. .master = &omap2xxx_l4_core_hwmod,
  303. .slave = &omap2xxx_dss_dispc_hwmod,
  304. .clk = "dss_ick",
  305. .addr = omap2_dss_dispc_addrs,
  306. .fw = {
  307. .omap2 = {
  308. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
  309. .flags = OMAP_FIREWALL_L4,
  310. }
  311. },
  312. .user = OCP_USER_MPU | OCP_USER_SDMA,
  313. };
  314. /* l4_core -> dss_rfbi */
  315. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi = {
  316. .master = &omap2xxx_l4_core_hwmod,
  317. .slave = &omap2xxx_dss_rfbi_hwmod,
  318. .clk = "dss_ick",
  319. .addr = omap2_dss_rfbi_addrs,
  320. .fw = {
  321. .omap2 = {
  322. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
  323. .flags = OMAP_FIREWALL_L4,
  324. }
  325. },
  326. .user = OCP_USER_MPU | OCP_USER_SDMA,
  327. };
  328. /* l4_core -> dss_venc */
  329. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc = {
  330. .master = &omap2xxx_l4_core_hwmod,
  331. .slave = &omap2xxx_dss_venc_hwmod,
  332. .clk = "dss_ick",
  333. .addr = omap2_dss_venc_addrs,
  334. .fw = {
  335. .omap2 = {
  336. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
  337. .flags = OMAP_FIREWALL_L4,
  338. }
  339. },
  340. .flags = OCPIF_SWSUP_IDLE,
  341. .user = OCP_USER_MPU | OCP_USER_SDMA,
  342. };
  343. /* l4_core -> rng */
  344. struct omap_hwmod_ocp_if omap2xxx_l4_core__rng = {
  345. .master = &omap2xxx_l4_core_hwmod,
  346. .slave = &omap2xxx_rng_hwmod,
  347. .clk = "rng_ick",
  348. .addr = omap2_rng_addr_space,
  349. .user = OCP_USER_MPU | OCP_USER_SDMA,
  350. };