omap_hwmod_2xxx_interconnect_data.c 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  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 <plat/omap_hwmod.h>
  16. #include <plat/serial.h>
  17. #include <plat/l3_2xxx.h>
  18. #include <plat/l4_2xxx.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. /*
  118. * Common interconnect data
  119. */
  120. /* L3 -> L4_CORE interface */
  121. struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core = {
  122. .master = &omap2xxx_l3_main_hwmod,
  123. .slave = &omap2xxx_l4_core_hwmod,
  124. .user = OCP_USER_MPU | OCP_USER_SDMA,
  125. };
  126. /* MPU -> L3 interface */
  127. struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main = {
  128. .master = &omap2xxx_mpu_hwmod,
  129. .slave = &omap2xxx_l3_main_hwmod,
  130. .user = OCP_USER_MPU,
  131. };
  132. /* DSS -> l3 */
  133. struct omap_hwmod_ocp_if omap2xxx_dss__l3 = {
  134. .master = &omap2xxx_dss_core_hwmod,
  135. .slave = &omap2xxx_l3_main_hwmod,
  136. .fw = {
  137. .omap2 = {
  138. .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
  139. .flags = OMAP_FIREWALL_L3,
  140. }
  141. },
  142. .user = OCP_USER_MPU | OCP_USER_SDMA,
  143. };
  144. /* L4_CORE -> L4_WKUP interface */
  145. struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup = {
  146. .master = &omap2xxx_l4_core_hwmod,
  147. .slave = &omap2xxx_l4_wkup_hwmod,
  148. .user = OCP_USER_MPU | OCP_USER_SDMA,
  149. };
  150. /* L4 CORE -> UART1 interface */
  151. struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
  152. .master = &omap2xxx_l4_core_hwmod,
  153. .slave = &omap2xxx_uart1_hwmod,
  154. .clk = "uart1_ick",
  155. .addr = omap2xxx_uart1_addr_space,
  156. .user = OCP_USER_MPU | OCP_USER_SDMA,
  157. };
  158. /* L4 CORE -> UART2 interface */
  159. struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
  160. .master = &omap2xxx_l4_core_hwmod,
  161. .slave = &omap2xxx_uart2_hwmod,
  162. .clk = "uart2_ick",
  163. .addr = omap2xxx_uart2_addr_space,
  164. .user = OCP_USER_MPU | OCP_USER_SDMA,
  165. };
  166. /* L4 PER -> UART3 interface */
  167. struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
  168. .master = &omap2xxx_l4_core_hwmod,
  169. .slave = &omap2xxx_uart3_hwmod,
  170. .clk = "uart3_ick",
  171. .addr = omap2xxx_uart3_addr_space,
  172. .user = OCP_USER_MPU | OCP_USER_SDMA,
  173. };
  174. /* l4 core -> mcspi1 interface */
  175. struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1 = {
  176. .master = &omap2xxx_l4_core_hwmod,
  177. .slave = &omap2xxx_mcspi1_hwmod,
  178. .clk = "mcspi1_ick",
  179. .addr = omap2_mcspi1_addr_space,
  180. .user = OCP_USER_MPU | OCP_USER_SDMA,
  181. };
  182. /* l4 core -> mcspi2 interface */
  183. struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2 = {
  184. .master = &omap2xxx_l4_core_hwmod,
  185. .slave = &omap2xxx_mcspi2_hwmod,
  186. .clk = "mcspi2_ick",
  187. .addr = omap2_mcspi2_addr_space,
  188. .user = OCP_USER_MPU | OCP_USER_SDMA,
  189. };
  190. /* l4_core -> timer2 */
  191. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer2 = {
  192. .master = &omap2xxx_l4_core_hwmod,
  193. .slave = &omap2xxx_timer2_hwmod,
  194. .clk = "gpt2_ick",
  195. .addr = omap2xxx_timer2_addrs,
  196. .user = OCP_USER_MPU | OCP_USER_SDMA,
  197. };
  198. /* l4_core -> timer3 */
  199. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3 = {
  200. .master = &omap2xxx_l4_core_hwmod,
  201. .slave = &omap2xxx_timer3_hwmod,
  202. .clk = "gpt3_ick",
  203. .addr = omap2xxx_timer3_addrs,
  204. .user = OCP_USER_MPU | OCP_USER_SDMA,
  205. };
  206. /* l4_core -> timer4 */
  207. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4 = {
  208. .master = &omap2xxx_l4_core_hwmod,
  209. .slave = &omap2xxx_timer4_hwmod,
  210. .clk = "gpt4_ick",
  211. .addr = omap2xxx_timer4_addrs,
  212. .user = OCP_USER_MPU | OCP_USER_SDMA,
  213. };
  214. /* l4_core -> timer5 */
  215. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5 = {
  216. .master = &omap2xxx_l4_core_hwmod,
  217. .slave = &omap2xxx_timer5_hwmod,
  218. .clk = "gpt5_ick",
  219. .addr = omap2xxx_timer5_addrs,
  220. .user = OCP_USER_MPU | OCP_USER_SDMA,
  221. };
  222. /* l4_core -> timer6 */
  223. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6 = {
  224. .master = &omap2xxx_l4_core_hwmod,
  225. .slave = &omap2xxx_timer6_hwmod,
  226. .clk = "gpt6_ick",
  227. .addr = omap2xxx_timer6_addrs,
  228. .user = OCP_USER_MPU | OCP_USER_SDMA,
  229. };
  230. /* l4_core -> timer7 */
  231. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7 = {
  232. .master = &omap2xxx_l4_core_hwmod,
  233. .slave = &omap2xxx_timer7_hwmod,
  234. .clk = "gpt7_ick",
  235. .addr = omap2xxx_timer7_addrs,
  236. .user = OCP_USER_MPU | OCP_USER_SDMA,
  237. };
  238. /* l4_core -> timer8 */
  239. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8 = {
  240. .master = &omap2xxx_l4_core_hwmod,
  241. .slave = &omap2xxx_timer8_hwmod,
  242. .clk = "gpt8_ick",
  243. .addr = omap2xxx_timer8_addrs,
  244. .user = OCP_USER_MPU | OCP_USER_SDMA,
  245. };
  246. /* l4_core -> timer9 */
  247. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9 = {
  248. .master = &omap2xxx_l4_core_hwmod,
  249. .slave = &omap2xxx_timer9_hwmod,
  250. .clk = "gpt9_ick",
  251. .addr = omap2xxx_timer9_addrs,
  252. .user = OCP_USER_MPU | OCP_USER_SDMA,
  253. };
  254. /* l4_core -> timer10 */
  255. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10 = {
  256. .master = &omap2xxx_l4_core_hwmod,
  257. .slave = &omap2xxx_timer10_hwmod,
  258. .clk = "gpt10_ick",
  259. .addr = omap2_timer10_addrs,
  260. .user = OCP_USER_MPU | OCP_USER_SDMA,
  261. };
  262. /* l4_core -> timer11 */
  263. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11 = {
  264. .master = &omap2xxx_l4_core_hwmod,
  265. .slave = &omap2xxx_timer11_hwmod,
  266. .clk = "gpt11_ick",
  267. .addr = omap2_timer11_addrs,
  268. .user = OCP_USER_MPU | OCP_USER_SDMA,
  269. };
  270. /* l4_core -> timer12 */
  271. struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12 = {
  272. .master = &omap2xxx_l4_core_hwmod,
  273. .slave = &omap2xxx_timer12_hwmod,
  274. .clk = "gpt12_ick",
  275. .addr = omap2xxx_timer12_addrs,
  276. .user = OCP_USER_MPU | OCP_USER_SDMA,
  277. };
  278. /* l4_core -> dss */
  279. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss = {
  280. .master = &omap2xxx_l4_core_hwmod,
  281. .slave = &omap2xxx_dss_core_hwmod,
  282. .clk = "dss_ick",
  283. .addr = omap2_dss_addrs,
  284. .fw = {
  285. .omap2 = {
  286. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
  287. .flags = OMAP_FIREWALL_L4,
  288. }
  289. },
  290. .user = OCP_USER_MPU | OCP_USER_SDMA,
  291. };
  292. /* l4_core -> dss_dispc */
  293. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc = {
  294. .master = &omap2xxx_l4_core_hwmod,
  295. .slave = &omap2xxx_dss_dispc_hwmod,
  296. .clk = "dss_ick",
  297. .addr = omap2_dss_dispc_addrs,
  298. .fw = {
  299. .omap2 = {
  300. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
  301. .flags = OMAP_FIREWALL_L4,
  302. }
  303. },
  304. .user = OCP_USER_MPU | OCP_USER_SDMA,
  305. };
  306. /* l4_core -> dss_rfbi */
  307. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi = {
  308. .master = &omap2xxx_l4_core_hwmod,
  309. .slave = &omap2xxx_dss_rfbi_hwmod,
  310. .clk = "dss_ick",
  311. .addr = omap2_dss_rfbi_addrs,
  312. .fw = {
  313. .omap2 = {
  314. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
  315. .flags = OMAP_FIREWALL_L4,
  316. }
  317. },
  318. .user = OCP_USER_MPU | OCP_USER_SDMA,
  319. };
  320. /* l4_core -> dss_venc */
  321. struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc = {
  322. .master = &omap2xxx_l4_core_hwmod,
  323. .slave = &omap2xxx_dss_venc_hwmod,
  324. .clk = "dss_ick",
  325. .addr = omap2_dss_venc_addrs,
  326. .fw = {
  327. .omap2 = {
  328. .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
  329. .flags = OMAP_FIREWALL_L4,
  330. }
  331. },
  332. .flags = OCPIF_SWSUP_IDLE,
  333. .user = OCP_USER_MPU | OCP_USER_SDMA,
  334. };