omap_hwmod_33xx_data.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. /*
  2. * omap_hwmod_33xx_data.c: Hardware modules present on the AM33XX chips
  3. *
  4. * Copyright (C) {2012} Texas Instruments Incorporated - http://www.ti.com/
  5. *
  6. * This file is automatically generated from the AM33XX hardware databases.
  7. * This program is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU General Public License as
  9. * published by the Free Software Foundation version 2.
  10. *
  11. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
  12. * kind, whether express or implied; without even the implied warranty
  13. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. */
  16. #include <linux/i2c-omap.h>
  17. #include "omap_hwmod.h"
  18. #include <linux/platform_data/gpio-omap.h>
  19. #include <linux/platform_data/spi-omap2-mcspi.h>
  20. #include "omap_hwmod_common_data.h"
  21. #include "control.h"
  22. #include "cm33xx.h"
  23. #include "prm33xx.h"
  24. #include "prm-regbits-33xx.h"
  25. #include "i2c.h"
  26. #include "wd_timer.h"
  27. #include "omap_hwmod_33xx_43xx_common_data.h"
  28. /*
  29. * IP blocks
  30. */
  31. /* emif */
  32. static struct omap_hwmod am33xx_emif_hwmod = {
  33. .name = "emif",
  34. .class = &am33xx_emif_hwmod_class,
  35. .clkdm_name = "l3_clkdm",
  36. .flags = HWMOD_INIT_NO_IDLE,
  37. .main_clk = "dpll_ddr_m2_div2_ck",
  38. .prcm = {
  39. .omap4 = {
  40. .clkctrl_offs = AM33XX_CM_PER_EMIF_CLKCTRL_OFFSET,
  41. .modulemode = MODULEMODE_SWCTRL,
  42. },
  43. },
  44. };
  45. /* l4_hs */
  46. static struct omap_hwmod am33xx_l4_hs_hwmod = {
  47. .name = "l4_hs",
  48. .class = &am33xx_l4_hwmod_class,
  49. .clkdm_name = "l4hs_clkdm",
  50. .flags = HWMOD_INIT_NO_IDLE,
  51. .main_clk = "l4hs_gclk",
  52. .prcm = {
  53. .omap4 = {
  54. .clkctrl_offs = AM33XX_CM_PER_L4HS_CLKCTRL_OFFSET,
  55. .modulemode = MODULEMODE_SWCTRL,
  56. },
  57. },
  58. };
  59. static struct omap_hwmod_rst_info am33xx_wkup_m3_resets[] = {
  60. { .name = "wkup_m3", .rst_shift = 3, .st_shift = 5 },
  61. };
  62. /* wkup_m3 */
  63. static struct omap_hwmod am33xx_wkup_m3_hwmod = {
  64. .name = "wkup_m3",
  65. .class = &am33xx_wkup_m3_hwmod_class,
  66. .clkdm_name = "l4_wkup_aon_clkdm",
  67. /* Keep hardreset asserted */
  68. .flags = HWMOD_INIT_NO_RESET | HWMOD_NO_IDLEST,
  69. .main_clk = "dpll_core_m4_div2_ck",
  70. .prcm = {
  71. .omap4 = {
  72. .clkctrl_offs = AM33XX_CM_WKUP_WKUP_M3_CLKCTRL_OFFSET,
  73. .rstctrl_offs = AM33XX_RM_WKUP_RSTCTRL_OFFSET,
  74. .rstst_offs = AM33XX_RM_WKUP_RSTST_OFFSET,
  75. .modulemode = MODULEMODE_SWCTRL,
  76. },
  77. },
  78. .rst_lines = am33xx_wkup_m3_resets,
  79. .rst_lines_cnt = ARRAY_SIZE(am33xx_wkup_m3_resets),
  80. };
  81. /*
  82. * 'adc/tsc' class
  83. * TouchScreen Controller (Anolog-To-Digital Converter)
  84. */
  85. static struct omap_hwmod_class_sysconfig am33xx_adc_tsc_sysc = {
  86. .rev_offs = 0x00,
  87. .sysc_offs = 0x10,
  88. .sysc_flags = SYSC_HAS_SIDLEMODE,
  89. .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
  90. SIDLE_SMART_WKUP),
  91. .sysc_fields = &omap_hwmod_sysc_type2,
  92. };
  93. static struct omap_hwmod_class am33xx_adc_tsc_hwmod_class = {
  94. .name = "adc_tsc",
  95. .sysc = &am33xx_adc_tsc_sysc,
  96. };
  97. static struct omap_hwmod am33xx_adc_tsc_hwmod = {
  98. .name = "adc_tsc",
  99. .class = &am33xx_adc_tsc_hwmod_class,
  100. .clkdm_name = "l4_wkup_clkdm",
  101. .main_clk = "adc_tsc_fck",
  102. .prcm = {
  103. .omap4 = {
  104. .clkctrl_offs = AM33XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET,
  105. .modulemode = MODULEMODE_SWCTRL,
  106. },
  107. },
  108. };
  109. /*
  110. * Modules omap_hwmod structures
  111. *
  112. * The following IPs are excluded for the moment because:
  113. * - They do not need an explicit SW control using omap_hwmod API.
  114. * - They still need to be validated with the driver
  115. * properly adapted to omap_hwmod / omap_device
  116. *
  117. * - cEFUSE (doesn't fall under any ocp_if)
  118. * - clkdiv32k
  119. * - ocp watch point
  120. */
  121. #if 0
  122. /*
  123. * 'cefuse' class
  124. */
  125. static struct omap_hwmod_class am33xx_cefuse_hwmod_class = {
  126. .name = "cefuse",
  127. };
  128. static struct omap_hwmod am33xx_cefuse_hwmod = {
  129. .name = "cefuse",
  130. .class = &am33xx_cefuse_hwmod_class,
  131. .clkdm_name = "l4_cefuse_clkdm",
  132. .main_clk = "cefuse_fck",
  133. .prcm = {
  134. .omap4 = {
  135. .clkctrl_offs = AM33XX_CM_CEFUSE_CEFUSE_CLKCTRL_OFFSET,
  136. .modulemode = MODULEMODE_SWCTRL,
  137. },
  138. },
  139. };
  140. /*
  141. * 'clkdiv32k' class
  142. */
  143. static struct omap_hwmod_class am33xx_clkdiv32k_hwmod_class = {
  144. .name = "clkdiv32k",
  145. };
  146. static struct omap_hwmod am33xx_clkdiv32k_hwmod = {
  147. .name = "clkdiv32k",
  148. .class = &am33xx_clkdiv32k_hwmod_class,
  149. .clkdm_name = "clk_24mhz_clkdm",
  150. .main_clk = "clkdiv32k_ick",
  151. .prcm = {
  152. .omap4 = {
  153. .clkctrl_offs = AM33XX_CM_PER_CLKDIV32K_CLKCTRL_OFFSET,
  154. .modulemode = MODULEMODE_SWCTRL,
  155. },
  156. },
  157. };
  158. /* ocpwp */
  159. static struct omap_hwmod_class am33xx_ocpwp_hwmod_class = {
  160. .name = "ocpwp",
  161. };
  162. static struct omap_hwmod am33xx_ocpwp_hwmod = {
  163. .name = "ocpwp",
  164. .class = &am33xx_ocpwp_hwmod_class,
  165. .clkdm_name = "l4ls_clkdm",
  166. .main_clk = "l4ls_gclk",
  167. .prcm = {
  168. .omap4 = {
  169. .clkctrl_offs = AM33XX_CM_PER_OCPWP_CLKCTRL_OFFSET,
  170. .modulemode = MODULEMODE_SWCTRL,
  171. },
  172. },
  173. };
  174. #endif
  175. /*
  176. * 'debugss' class
  177. * debug sub system
  178. */
  179. static struct omap_hwmod_opt_clk debugss_opt_clks[] = {
  180. { .role = "dbg_sysclk", .clk = "dbg_sysclk_ck" },
  181. { .role = "dbg_clka", .clk = "dbg_clka_ck" },
  182. };
  183. static struct omap_hwmod_class am33xx_debugss_hwmod_class = {
  184. .name = "debugss",
  185. };
  186. static struct omap_hwmod am33xx_debugss_hwmod = {
  187. .name = "debugss",
  188. .class = &am33xx_debugss_hwmod_class,
  189. .clkdm_name = "l3_aon_clkdm",
  190. .main_clk = "trace_clk_div_ck",
  191. .prcm = {
  192. .omap4 = {
  193. .clkctrl_offs = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET,
  194. .modulemode = MODULEMODE_SWCTRL,
  195. },
  196. },
  197. .opt_clks = debugss_opt_clks,
  198. .opt_clks_cnt = ARRAY_SIZE(debugss_opt_clks),
  199. };
  200. static struct omap_hwmod am33xx_control_hwmod = {
  201. .name = "control",
  202. .class = &am33xx_control_hwmod_class,
  203. .clkdm_name = "l4_wkup_clkdm",
  204. .flags = HWMOD_INIT_NO_IDLE,
  205. .main_clk = "dpll_core_m4_div2_ck",
  206. .prcm = {
  207. .omap4 = {
  208. .clkctrl_offs = AM33XX_CM_WKUP_CONTROL_CLKCTRL_OFFSET,
  209. .modulemode = MODULEMODE_SWCTRL,
  210. },
  211. },
  212. };
  213. /* gpio0 */
  214. static struct omap_hwmod_opt_clk gpio0_opt_clks[] = {
  215. { .role = "dbclk", .clk = "gpio0_dbclk" },
  216. };
  217. static struct omap_hwmod am33xx_gpio0_hwmod = {
  218. .name = "gpio1",
  219. .class = &am33xx_gpio_hwmod_class,
  220. .clkdm_name = "l4_wkup_clkdm",
  221. .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
  222. .main_clk = "dpll_core_m4_div2_ck",
  223. .prcm = {
  224. .omap4 = {
  225. .clkctrl_offs = AM33XX_CM_WKUP_GPIO0_CLKCTRL_OFFSET,
  226. .modulemode = MODULEMODE_SWCTRL,
  227. },
  228. },
  229. .opt_clks = gpio0_opt_clks,
  230. .opt_clks_cnt = ARRAY_SIZE(gpio0_opt_clks),
  231. .dev_attr = &gpio_dev_attr,
  232. };
  233. /* lcdc */
  234. static struct omap_hwmod_class_sysconfig lcdc_sysc = {
  235. .rev_offs = 0x0,
  236. .sysc_offs = 0x54,
  237. .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
  238. .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
  239. .sysc_fields = &omap_hwmod_sysc_type2,
  240. };
  241. static struct omap_hwmod_class am33xx_lcdc_hwmod_class = {
  242. .name = "lcdc",
  243. .sysc = &lcdc_sysc,
  244. };
  245. static struct omap_hwmod am33xx_lcdc_hwmod = {
  246. .name = "lcdc",
  247. .class = &am33xx_lcdc_hwmod_class,
  248. .clkdm_name = "lcdc_clkdm",
  249. .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
  250. .main_clk = "lcd_gclk",
  251. .prcm = {
  252. .omap4 = {
  253. .clkctrl_offs = AM33XX_CM_PER_LCDC_CLKCTRL_OFFSET,
  254. .modulemode = MODULEMODE_SWCTRL,
  255. },
  256. },
  257. };
  258. /*
  259. * 'usb_otg' class
  260. * high-speed on-the-go universal serial bus (usb_otg) controller
  261. */
  262. static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc = {
  263. .rev_offs = 0x0,
  264. .sysc_offs = 0x10,
  265. .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
  266. .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
  267. MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
  268. .sysc_fields = &omap_hwmod_sysc_type2,
  269. };
  270. static struct omap_hwmod_class am33xx_usbotg_class = {
  271. .name = "usbotg",
  272. .sysc = &am33xx_usbhsotg_sysc,
  273. };
  274. static struct omap_hwmod am33xx_usbss_hwmod = {
  275. .name = "usb_otg_hs",
  276. .class = &am33xx_usbotg_class,
  277. .clkdm_name = "l3s_clkdm",
  278. .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
  279. .main_clk = "usbotg_fck",
  280. .prcm = {
  281. .omap4 = {
  282. .clkctrl_offs = AM33XX_CM_PER_USB0_CLKCTRL_OFFSET,
  283. .modulemode = MODULEMODE_SWCTRL,
  284. },
  285. },
  286. };
  287. /*
  288. * Interfaces
  289. */
  290. static struct omap_hwmod_addr_space am33xx_emif_addrs[] = {
  291. {
  292. .pa_start = 0x4c000000,
  293. .pa_end = 0x4c000fff,
  294. .flags = ADDR_TYPE_RT
  295. },
  296. { }
  297. };
  298. /* l3 main -> emif */
  299. static struct omap_hwmod_ocp_if am33xx_l3_main__emif = {
  300. .master = &am33xx_l3_main_hwmod,
  301. .slave = &am33xx_emif_hwmod,
  302. .clk = "dpll_core_m4_ck",
  303. .addr = am33xx_emif_addrs,
  304. .user = OCP_USER_MPU | OCP_USER_SDMA,
  305. };
  306. /* l3 main -> l4 hs */
  307. static struct omap_hwmod_ocp_if am33xx_l3_main__l4_hs = {
  308. .master = &am33xx_l3_main_hwmod,
  309. .slave = &am33xx_l4_hs_hwmod,
  310. .clk = "l3s_gclk",
  311. .user = OCP_USER_MPU | OCP_USER_SDMA,
  312. };
  313. /* wkup m3 -> l4 wkup */
  314. static struct omap_hwmod_ocp_if am33xx_wkup_m3__l4_wkup = {
  315. .master = &am33xx_wkup_m3_hwmod,
  316. .slave = &am33xx_l4_wkup_hwmod,
  317. .clk = "dpll_core_m4_div2_ck",
  318. .user = OCP_USER_MPU | OCP_USER_SDMA,
  319. };
  320. /* l4 wkup -> wkup m3 */
  321. static struct omap_hwmod_ocp_if am33xx_l4_wkup__wkup_m3 = {
  322. .master = &am33xx_l4_wkup_hwmod,
  323. .slave = &am33xx_wkup_m3_hwmod,
  324. .clk = "dpll_core_m4_div2_ck",
  325. .user = OCP_USER_MPU | OCP_USER_SDMA,
  326. };
  327. /* l4 hs -> pru-icss */
  328. static struct omap_hwmod_ocp_if am33xx_l4_hs__pruss = {
  329. .master = &am33xx_l4_hs_hwmod,
  330. .slave = &am33xx_pruss_hwmod,
  331. .clk = "dpll_core_m4_ck",
  332. .user = OCP_USER_MPU | OCP_USER_SDMA,
  333. };
  334. /* l3_main -> debugss */
  335. static struct omap_hwmod_addr_space am33xx_debugss_addrs[] = {
  336. {
  337. .pa_start = 0x4b000000,
  338. .pa_end = 0x4b000000 + SZ_16M - 1,
  339. .flags = ADDR_TYPE_RT
  340. },
  341. { }
  342. };
  343. static struct omap_hwmod_ocp_if am33xx_l3_main__debugss = {
  344. .master = &am33xx_l3_main_hwmod,
  345. .slave = &am33xx_debugss_hwmod,
  346. .clk = "dpll_core_m4_ck",
  347. .addr = am33xx_debugss_addrs,
  348. .user = OCP_USER_MPU,
  349. };
  350. /* l4 wkup -> smartreflex0 */
  351. static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex0 = {
  352. .master = &am33xx_l4_wkup_hwmod,
  353. .slave = &am33xx_smartreflex0_hwmod,
  354. .clk = "dpll_core_m4_div2_ck",
  355. .user = OCP_USER_MPU,
  356. };
  357. /* l4 wkup -> smartreflex1 */
  358. static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex1 = {
  359. .master = &am33xx_l4_wkup_hwmod,
  360. .slave = &am33xx_smartreflex1_hwmod,
  361. .clk = "dpll_core_m4_div2_ck",
  362. .user = OCP_USER_MPU,
  363. };
  364. /* l4 wkup -> control */
  365. static struct omap_hwmod_ocp_if am33xx_l4_wkup__control = {
  366. .master = &am33xx_l4_wkup_hwmod,
  367. .slave = &am33xx_control_hwmod,
  368. .clk = "dpll_core_m4_div2_ck",
  369. .user = OCP_USER_MPU,
  370. };
  371. /* L4 WKUP -> I2C1 */
  372. static struct omap_hwmod_ocp_if am33xx_l4_wkup__i2c1 = {
  373. .master = &am33xx_l4_wkup_hwmod,
  374. .slave = &am33xx_i2c1_hwmod,
  375. .clk = "dpll_core_m4_div2_ck",
  376. .user = OCP_USER_MPU,
  377. };
  378. /* L4 WKUP -> GPIO1 */
  379. static struct omap_hwmod_ocp_if am33xx_l4_wkup__gpio0 = {
  380. .master = &am33xx_l4_wkup_hwmod,
  381. .slave = &am33xx_gpio0_hwmod,
  382. .clk = "dpll_core_m4_div2_ck",
  383. .user = OCP_USER_MPU | OCP_USER_SDMA,
  384. };
  385. /* L4 WKUP -> ADC_TSC */
  386. static struct omap_hwmod_addr_space am33xx_adc_tsc_addrs[] = {
  387. {
  388. .pa_start = 0x44E0D000,
  389. .pa_end = 0x44E0D000 + SZ_8K - 1,
  390. .flags = ADDR_TYPE_RT
  391. },
  392. { }
  393. };
  394. static struct omap_hwmod_ocp_if am33xx_l4_wkup__adc_tsc = {
  395. .master = &am33xx_l4_wkup_hwmod,
  396. .slave = &am33xx_adc_tsc_hwmod,
  397. .clk = "dpll_core_m4_div2_ck",
  398. .addr = am33xx_adc_tsc_addrs,
  399. .user = OCP_USER_MPU,
  400. };
  401. static struct omap_hwmod_ocp_if am33xx_l4_hs__cpgmac0 = {
  402. .master = &am33xx_l4_hs_hwmod,
  403. .slave = &am33xx_cpgmac0_hwmod,
  404. .clk = "cpsw_125mhz_gclk",
  405. .user = OCP_USER_MPU,
  406. };
  407. static struct omap_hwmod_addr_space am33xx_lcdc_addr_space[] = {
  408. {
  409. .pa_start = 0x4830E000,
  410. .pa_end = 0x4830E000 + SZ_8K - 1,
  411. .flags = ADDR_TYPE_RT,
  412. },
  413. { }
  414. };
  415. static struct omap_hwmod_ocp_if am33xx_l3_main__lcdc = {
  416. .master = &am33xx_l3_main_hwmod,
  417. .slave = &am33xx_lcdc_hwmod,
  418. .clk = "dpll_core_m4_ck",
  419. .addr = am33xx_lcdc_addr_space,
  420. .user = OCP_USER_MPU,
  421. };
  422. /* l4 wkup -> timer1 */
  423. static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1 = {
  424. .master = &am33xx_l4_wkup_hwmod,
  425. .slave = &am33xx_timer1_hwmod,
  426. .clk = "dpll_core_m4_div2_ck",
  427. .user = OCP_USER_MPU,
  428. };
  429. /* l4 wkup -> uart1 */
  430. static struct omap_hwmod_ocp_if am33xx_l4_wkup__uart1 = {
  431. .master = &am33xx_l4_wkup_hwmod,
  432. .slave = &am33xx_uart1_hwmod,
  433. .clk = "dpll_core_m4_div2_ck",
  434. .user = OCP_USER_MPU,
  435. };
  436. /* l4 wkup -> wd_timer1 */
  437. static struct omap_hwmod_ocp_if am33xx_l4_wkup__wd_timer1 = {
  438. .master = &am33xx_l4_wkup_hwmod,
  439. .slave = &am33xx_wd_timer1_hwmod,
  440. .clk = "dpll_core_m4_div2_ck",
  441. .user = OCP_USER_MPU,
  442. };
  443. /* usbss */
  444. /* l3 s -> USBSS interface */
  445. static struct omap_hwmod_ocp_if am33xx_l3_s__usbss = {
  446. .master = &am33xx_l3_s_hwmod,
  447. .slave = &am33xx_usbss_hwmod,
  448. .clk = "l3s_gclk",
  449. .user = OCP_USER_MPU,
  450. .flags = OCPIF_SWSUP_IDLE,
  451. };
  452. /* rng */
  453. static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
  454. .rev_offs = 0x1fe0,
  455. .sysc_offs = 0x1fe4,
  456. .sysc_flags = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
  457. .idlemodes = SIDLE_FORCE | SIDLE_NO,
  458. .sysc_fields = &omap_hwmod_sysc_type1,
  459. };
  460. static struct omap_hwmod_class am33xx_rng_hwmod_class = {
  461. .name = "rng",
  462. .sysc = &am33xx_rng_sysc,
  463. };
  464. static struct omap_hwmod am33xx_rng_hwmod = {
  465. .name = "rng",
  466. .class = &am33xx_rng_hwmod_class,
  467. .clkdm_name = "l4ls_clkdm",
  468. .flags = HWMOD_SWSUP_SIDLE,
  469. .main_clk = "rng_fck",
  470. .prcm = {
  471. .omap4 = {
  472. .clkctrl_offs = AM33XX_CM_PER_RNG_CLKCTRL_OFFSET,
  473. .modulemode = MODULEMODE_SWCTRL,
  474. },
  475. },
  476. };
  477. static struct omap_hwmod_ocp_if am33xx_l4_per__rng = {
  478. .master = &am33xx_l4_ls_hwmod,
  479. .slave = &am33xx_rng_hwmod,
  480. .clk = "rng_fck",
  481. .user = OCP_USER_MPU,
  482. };
  483. static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
  484. &am33xx_l3_main__emif,
  485. &am33xx_mpu__l3_main,
  486. &am33xx_mpu__prcm,
  487. &am33xx_l3_s__l4_ls,
  488. &am33xx_l3_s__l4_wkup,
  489. &am33xx_l3_main__l4_hs,
  490. &am33xx_l3_main__l3_s,
  491. &am33xx_l3_main__l3_instr,
  492. &am33xx_l3_main__gfx,
  493. &am33xx_l3_s__l3_main,
  494. &am33xx_pruss__l3_main,
  495. &am33xx_wkup_m3__l4_wkup,
  496. &am33xx_gfx__l3_main,
  497. &am33xx_l3_main__debugss,
  498. &am33xx_l4_wkup__wkup_m3,
  499. &am33xx_l4_wkup__control,
  500. &am33xx_l4_wkup__smartreflex0,
  501. &am33xx_l4_wkup__smartreflex1,
  502. &am33xx_l4_wkup__uart1,
  503. &am33xx_l4_wkup__timer1,
  504. &am33xx_l4_wkup__rtc,
  505. &am33xx_l4_wkup__i2c1,
  506. &am33xx_l4_wkup__gpio0,
  507. &am33xx_l4_wkup__adc_tsc,
  508. &am33xx_l4_wkup__wd_timer1,
  509. &am33xx_l4_hs__pruss,
  510. &am33xx_l4_per__dcan0,
  511. &am33xx_l4_per__dcan1,
  512. &am33xx_l4_per__gpio1,
  513. &am33xx_l4_per__gpio2,
  514. &am33xx_l4_per__gpio3,
  515. &am33xx_l4_per__i2c2,
  516. &am33xx_l4_per__i2c3,
  517. &am33xx_l4_per__mailbox,
  518. &am33xx_l4_ls__mcasp0,
  519. &am33xx_l4_ls__mcasp1,
  520. &am33xx_l4_ls__mmc0,
  521. &am33xx_l4_ls__mmc1,
  522. &am33xx_l3_s__mmc2,
  523. &am33xx_l4_ls__timer2,
  524. &am33xx_l4_ls__timer3,
  525. &am33xx_l4_ls__timer4,
  526. &am33xx_l4_ls__timer5,
  527. &am33xx_l4_ls__timer6,
  528. &am33xx_l4_ls__timer7,
  529. &am33xx_l3_main__tpcc,
  530. &am33xx_l4_ls__uart2,
  531. &am33xx_l4_ls__uart3,
  532. &am33xx_l4_ls__uart4,
  533. &am33xx_l4_ls__uart5,
  534. &am33xx_l4_ls__uart6,
  535. &am33xx_l4_ls__spinlock,
  536. &am33xx_l4_ls__elm,
  537. &am33xx_l4_ls__epwmss0,
  538. &am33xx_l4_ls__epwmss1,
  539. &am33xx_l4_ls__epwmss2,
  540. &am33xx_l3_s__gpmc,
  541. &am33xx_l3_main__lcdc,
  542. &am33xx_l4_ls__mcspi0,
  543. &am33xx_l4_ls__mcspi1,
  544. &am33xx_l3_main__tptc0,
  545. &am33xx_l3_main__tptc1,
  546. &am33xx_l3_main__tptc2,
  547. &am33xx_l3_main__ocmc,
  548. &am33xx_l3_s__usbss,
  549. &am33xx_l4_hs__cpgmac0,
  550. &am33xx_cpgmac0__mdio,
  551. &am33xx_l3_main__sha0,
  552. &am33xx_l3_main__aes0,
  553. &am33xx_l4_per__rng,
  554. NULL,
  555. };
  556. int __init am33xx_hwmod_init(void)
  557. {
  558. omap_hwmod_am33xx_reg();
  559. omap_hwmod_init();
  560. return omap_hwmod_register_links(am33xx_hwmod_ocp_ifs);
  561. }