diff options
author | Benoit Cousson <b-cousson@ti.com> | 2010-12-21 23:08:34 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-12-21 23:08:34 -0500 |
commit | 8f25bdc55d619bdd469a90b82743248680422507 (patch) | |
tree | 26c0dfb8f67b73b6e8a2d332c163d65de547144e /arch | |
parent | 659fa8222c0ca1061d74cb3282614c017f415fe5 (diff) |
OMAP4: hwmod data: Add IVA and DSP
Add IVA and DSP hwmods in order to allow the pm code to
initialize properly the processors devices during
omap2_init_processor_devices.
It will avoid the following warnings.
_init_omap_device: could not find omap_hwmod for iva
_init_omap_device: could not find omap_hwmod for dsp
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 243 |
1 files changed, 241 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 92d446997e56..ad8015857f20 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -42,7 +42,9 @@ | |||
42 | /* Backward references (IPs with Bus Master capability) */ | 42 | /* Backward references (IPs with Bus Master capability) */ |
43 | static struct omap_hwmod omap44xx_dma_system_hwmod; | 43 | static struct omap_hwmod omap44xx_dma_system_hwmod; |
44 | static struct omap_hwmod omap44xx_dmm_hwmod; | 44 | static struct omap_hwmod omap44xx_dmm_hwmod; |
45 | static struct omap_hwmod omap44xx_dsp_hwmod; | ||
45 | static struct omap_hwmod omap44xx_emif_fw_hwmod; | 46 | static struct omap_hwmod omap44xx_emif_fw_hwmod; |
47 | static struct omap_hwmod omap44xx_iva_hwmod; | ||
46 | static struct omap_hwmod omap44xx_l3_instr_hwmod; | 48 | static struct omap_hwmod omap44xx_l3_instr_hwmod; |
47 | static struct omap_hwmod omap44xx_l3_main_1_hwmod; | 49 | static struct omap_hwmod omap44xx_l3_main_1_hwmod; |
48 | static struct omap_hwmod omap44xx_l3_main_2_hwmod; | 50 | static struct omap_hwmod omap44xx_l3_main_2_hwmod; |
@@ -172,6 +174,14 @@ static struct omap_hwmod_class omap44xx_l3_hwmod_class = { | |||
172 | }; | 174 | }; |
173 | 175 | ||
174 | /* l3_instr interface data */ | 176 | /* l3_instr interface data */ |
177 | /* iva -> l3_instr */ | ||
178 | static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = { | ||
179 | .master = &omap44xx_iva_hwmod, | ||
180 | .slave = &omap44xx_l3_instr_hwmod, | ||
181 | .clk = "l3_div_ck", | ||
182 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
183 | }; | ||
184 | |||
175 | /* l3_main_3 -> l3_instr */ | 185 | /* l3_main_3 -> l3_instr */ |
176 | static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { | 186 | static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { |
177 | .master = &omap44xx_l3_main_3_hwmod, | 187 | .master = &omap44xx_l3_main_3_hwmod, |
@@ -182,6 +192,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { | |||
182 | 192 | ||
183 | /* l3_instr slave ports */ | 193 | /* l3_instr slave ports */ |
184 | static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = { | 194 | static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = { |
195 | &omap44xx_iva__l3_instr, | ||
185 | &omap44xx_l3_main_3__l3_instr, | 196 | &omap44xx_l3_main_3__l3_instr, |
186 | }; | 197 | }; |
187 | 198 | ||
@@ -194,6 +205,14 @@ static struct omap_hwmod omap44xx_l3_instr_hwmod = { | |||
194 | }; | 205 | }; |
195 | 206 | ||
196 | /* l3_main_1 interface data */ | 207 | /* l3_main_1 interface data */ |
208 | /* dsp -> l3_main_1 */ | ||
209 | static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = { | ||
210 | .master = &omap44xx_dsp_hwmod, | ||
211 | .slave = &omap44xx_l3_main_1_hwmod, | ||
212 | .clk = "l3_div_ck", | ||
213 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
214 | }; | ||
215 | |||
197 | /* l3_main_2 -> l3_main_1 */ | 216 | /* l3_main_2 -> l3_main_1 */ |
198 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { | 217 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { |
199 | .master = &omap44xx_l3_main_2_hwmod, | 218 | .master = &omap44xx_l3_main_2_hwmod, |
@@ -220,6 +239,7 @@ static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { | |||
220 | 239 | ||
221 | /* l3_main_1 slave ports */ | 240 | /* l3_main_1 slave ports */ |
222 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { | 241 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { |
242 | &omap44xx_dsp__l3_main_1, | ||
223 | &omap44xx_l3_main_2__l3_main_1, | 243 | &omap44xx_l3_main_2__l3_main_1, |
224 | &omap44xx_l4_cfg__l3_main_1, | 244 | &omap44xx_l4_cfg__l3_main_1, |
225 | &omap44xx_mpu__l3_main_1, | 245 | &omap44xx_mpu__l3_main_1, |
@@ -234,6 +254,14 @@ static struct omap_hwmod omap44xx_l3_main_1_hwmod = { | |||
234 | }; | 254 | }; |
235 | 255 | ||
236 | /* l3_main_2 interface data */ | 256 | /* l3_main_2 interface data */ |
257 | /* iva -> l3_main_2 */ | ||
258 | static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = { | ||
259 | .master = &omap44xx_iva_hwmod, | ||
260 | .slave = &omap44xx_l3_main_2_hwmod, | ||
261 | .clk = "l3_div_ck", | ||
262 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
263 | }; | ||
264 | |||
237 | /* l3_main_1 -> l3_main_2 */ | 265 | /* l3_main_1 -> l3_main_2 */ |
238 | static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { | 266 | static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { |
239 | .master = &omap44xx_l3_main_1_hwmod, | 267 | .master = &omap44xx_l3_main_1_hwmod, |
@@ -261,6 +289,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { | |||
261 | /* l3_main_2 slave ports */ | 289 | /* l3_main_2 slave ports */ |
262 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { | 290 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { |
263 | &omap44xx_dma_system__l3_main_2, | 291 | &omap44xx_dma_system__l3_main_2, |
292 | &omap44xx_iva__l3_main_2, | ||
264 | &omap44xx_l3_main_1__l3_main_2, | 293 | &omap44xx_l3_main_1__l3_main_2, |
265 | &omap44xx_l4_cfg__l3_main_2, | 294 | &omap44xx_l4_cfg__l3_main_2, |
266 | }; | 295 | }; |
@@ -322,6 +351,14 @@ static struct omap_hwmod_class omap44xx_l4_hwmod_class = { | |||
322 | }; | 351 | }; |
323 | 352 | ||
324 | /* l4_abe interface data */ | 353 | /* l4_abe interface data */ |
354 | /* dsp -> l4_abe */ | ||
355 | static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { | ||
356 | .master = &omap44xx_dsp_hwmod, | ||
357 | .slave = &omap44xx_l4_abe_hwmod, | ||
358 | .clk = "ocp_abe_iclk", | ||
359 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
360 | }; | ||
361 | |||
325 | /* l3_main_1 -> l4_abe */ | 362 | /* l3_main_1 -> l4_abe */ |
326 | static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = { | 363 | static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = { |
327 | .master = &omap44xx_l3_main_1_hwmod, | 364 | .master = &omap44xx_l3_main_1_hwmod, |
@@ -340,6 +377,7 @@ static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = { | |||
340 | 377 | ||
341 | /* l4_abe slave ports */ | 378 | /* l4_abe slave ports */ |
342 | static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { | 379 | static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { |
380 | &omap44xx_dsp__l4_abe, | ||
343 | &omap44xx_l3_main_1__l4_abe, | 381 | &omap44xx_l3_main_1__l4_abe, |
344 | &omap44xx_mpu__l4_abe, | 382 | &omap44xx_mpu__l4_abe, |
345 | }; | 383 | }; |
@@ -470,7 +508,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
470 | * debugss | 508 | * debugss |
471 | * dma_system | 509 | * dma_system |
472 | * dmic | 510 | * dmic |
473 | * dsp | ||
474 | * dss | 511 | * dss |
475 | * dss_dispc | 512 | * dss_dispc |
476 | * dss_dsi1 | 513 | * dss_dsi1 |
@@ -490,7 +527,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
490 | * hsi | 527 | * hsi |
491 | * ipu | 528 | * ipu |
492 | * iss | 529 | * iss |
493 | * iva | ||
494 | * kbd | 530 | * kbd |
495 | * mailbox | 531 | * mailbox |
496 | * mcasp | 532 | * mcasp |
@@ -544,6 +580,91 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
544 | */ | 580 | */ |
545 | 581 | ||
546 | /* | 582 | /* |
583 | * 'dsp' class | ||
584 | * dsp sub-system | ||
585 | */ | ||
586 | |||
587 | static struct omap_hwmod_class omap44xx_dsp_hwmod_class = { | ||
588 | .name = "dsp", | ||
589 | }; | ||
590 | |||
591 | /* dsp */ | ||
592 | static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = { | ||
593 | { .irq = 28 + OMAP44XX_IRQ_GIC_START }, | ||
594 | }; | ||
595 | |||
596 | static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = { | ||
597 | { .name = "mmu_cache", .rst_shift = 1 }, | ||
598 | }; | ||
599 | |||
600 | static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = { | ||
601 | { .name = "dsp", .rst_shift = 0 }, | ||
602 | }; | ||
603 | |||
604 | /* dsp -> iva */ | ||
605 | static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { | ||
606 | .master = &omap44xx_dsp_hwmod, | ||
607 | .slave = &omap44xx_iva_hwmod, | ||
608 | .clk = "dpll_iva_m5x2_ck", | ||
609 | }; | ||
610 | |||
611 | /* dsp master ports */ | ||
612 | static struct omap_hwmod_ocp_if *omap44xx_dsp_masters[] = { | ||
613 | &omap44xx_dsp__l3_main_1, | ||
614 | &omap44xx_dsp__l4_abe, | ||
615 | &omap44xx_dsp__iva, | ||
616 | }; | ||
617 | |||
618 | /* l4_cfg -> dsp */ | ||
619 | static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = { | ||
620 | .master = &omap44xx_l4_cfg_hwmod, | ||
621 | .slave = &omap44xx_dsp_hwmod, | ||
622 | .clk = "l4_div_ck", | ||
623 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
624 | }; | ||
625 | |||
626 | /* dsp slave ports */ | ||
627 | static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = { | ||
628 | &omap44xx_l4_cfg__dsp, | ||
629 | }; | ||
630 | |||
631 | /* Pseudo hwmod for reset control purpose only */ | ||
632 | static struct omap_hwmod omap44xx_dsp_c0_hwmod = { | ||
633 | .name = "dsp_c0", | ||
634 | .class = &omap44xx_dsp_hwmod_class, | ||
635 | .flags = HWMOD_INIT_NO_RESET, | ||
636 | .rst_lines = omap44xx_dsp_c0_resets, | ||
637 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_c0_resets), | ||
638 | .prcm = { | ||
639 | .omap4 = { | ||
640 | .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL, | ||
641 | }, | ||
642 | }, | ||
643 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
644 | }; | ||
645 | |||
646 | static struct omap_hwmod omap44xx_dsp_hwmod = { | ||
647 | .name = "dsp", | ||
648 | .class = &omap44xx_dsp_hwmod_class, | ||
649 | .mpu_irqs = omap44xx_dsp_irqs, | ||
650 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dsp_irqs), | ||
651 | .rst_lines = omap44xx_dsp_resets, | ||
652 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets), | ||
653 | .main_clk = "dsp_fck", | ||
654 | .prcm = { | ||
655 | .omap4 = { | ||
656 | .clkctrl_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL, | ||
657 | .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL, | ||
658 | }, | ||
659 | }, | ||
660 | .slaves = omap44xx_dsp_slaves, | ||
661 | .slaves_cnt = ARRAY_SIZE(omap44xx_dsp_slaves), | ||
662 | .masters = omap44xx_dsp_masters, | ||
663 | .masters_cnt = ARRAY_SIZE(omap44xx_dsp_masters), | ||
664 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
665 | }; | ||
666 | |||
667 | /* | ||
547 | * 'gpio' class | 668 | * 'gpio' class |
548 | * general purpose io module | 669 | * general purpose io module |
549 | */ | 670 | */ |
@@ -1110,6 +1231,115 @@ static struct omap_hwmod omap44xx_i2c4_hwmod = { | |||
1110 | }; | 1231 | }; |
1111 | 1232 | ||
1112 | /* | 1233 | /* |
1234 | * 'iva' class | ||
1235 | * multi-standard video encoder/decoder hardware accelerator | ||
1236 | */ | ||
1237 | |||
1238 | static struct omap_hwmod_class omap44xx_iva_hwmod_class = { | ||
1239 | .name = "iva", | ||
1240 | }; | ||
1241 | |||
1242 | /* iva */ | ||
1243 | static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = { | ||
1244 | { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START }, | ||
1245 | { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START }, | ||
1246 | { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START }, | ||
1247 | }; | ||
1248 | |||
1249 | static struct omap_hwmod_rst_info omap44xx_iva_resets[] = { | ||
1250 | { .name = "logic", .rst_shift = 2 }, | ||
1251 | }; | ||
1252 | |||
1253 | static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = { | ||
1254 | { .name = "seq0", .rst_shift = 0 }, | ||
1255 | }; | ||
1256 | |||
1257 | static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = { | ||
1258 | { .name = "seq1", .rst_shift = 1 }, | ||
1259 | }; | ||
1260 | |||
1261 | /* iva master ports */ | ||
1262 | static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = { | ||
1263 | &omap44xx_iva__l3_main_2, | ||
1264 | &omap44xx_iva__l3_instr, | ||
1265 | }; | ||
1266 | |||
1267 | static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = { | ||
1268 | { | ||
1269 | .pa_start = 0x5a000000, | ||
1270 | .pa_end = 0x5a07ffff, | ||
1271 | .flags = ADDR_TYPE_RT | ||
1272 | }, | ||
1273 | }; | ||
1274 | |||
1275 | /* l3_main_2 -> iva */ | ||
1276 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = { | ||
1277 | .master = &omap44xx_l3_main_2_hwmod, | ||
1278 | .slave = &omap44xx_iva_hwmod, | ||
1279 | .clk = "l3_div_ck", | ||
1280 | .addr = omap44xx_iva_addrs, | ||
1281 | .addr_cnt = ARRAY_SIZE(omap44xx_iva_addrs), | ||
1282 | .user = OCP_USER_MPU, | ||
1283 | }; | ||
1284 | |||
1285 | /* iva slave ports */ | ||
1286 | static struct omap_hwmod_ocp_if *omap44xx_iva_slaves[] = { | ||
1287 | &omap44xx_dsp__iva, | ||
1288 | &omap44xx_l3_main_2__iva, | ||
1289 | }; | ||
1290 | |||
1291 | /* Pseudo hwmod for reset control purpose only */ | ||
1292 | static struct omap_hwmod omap44xx_iva_seq0_hwmod = { | ||
1293 | .name = "iva_seq0", | ||
1294 | .class = &omap44xx_iva_hwmod_class, | ||
1295 | .flags = HWMOD_INIT_NO_RESET, | ||
1296 | .rst_lines = omap44xx_iva_seq0_resets, | ||
1297 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq0_resets), | ||
1298 | .prcm = { | ||
1299 | .omap4 = { | ||
1300 | .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL, | ||
1301 | }, | ||
1302 | }, | ||
1303 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1304 | }; | ||
1305 | |||
1306 | /* Pseudo hwmod for reset control purpose only */ | ||
1307 | static struct omap_hwmod omap44xx_iva_seq1_hwmod = { | ||
1308 | .name = "iva_seq1", | ||
1309 | .class = &omap44xx_iva_hwmod_class, | ||
1310 | .flags = HWMOD_INIT_NO_RESET, | ||
1311 | .rst_lines = omap44xx_iva_seq1_resets, | ||
1312 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq1_resets), | ||
1313 | .prcm = { | ||
1314 | .omap4 = { | ||
1315 | .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL, | ||
1316 | }, | ||
1317 | }, | ||
1318 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1319 | }; | ||
1320 | |||
1321 | static struct omap_hwmod omap44xx_iva_hwmod = { | ||
1322 | .name = "iva", | ||
1323 | .class = &omap44xx_iva_hwmod_class, | ||
1324 | .mpu_irqs = omap44xx_iva_irqs, | ||
1325 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_iva_irqs), | ||
1326 | .rst_lines = omap44xx_iva_resets, | ||
1327 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets), | ||
1328 | .main_clk = "iva_fck", | ||
1329 | .prcm = { | ||
1330 | .omap4 = { | ||
1331 | .clkctrl_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL, | ||
1332 | .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL, | ||
1333 | }, | ||
1334 | }, | ||
1335 | .slaves = omap44xx_iva_slaves, | ||
1336 | .slaves_cnt = ARRAY_SIZE(omap44xx_iva_slaves), | ||
1337 | .masters = omap44xx_iva_masters, | ||
1338 | .masters_cnt = ARRAY_SIZE(omap44xx_iva_masters), | ||
1339 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1340 | }; | ||
1341 | |||
1342 | /* | ||
1113 | * 'mpu' class | 1343 | * 'mpu' class |
1114 | * mpu sub-system | 1344 | * mpu sub-system |
1115 | */ | 1345 | */ |
@@ -1622,6 +1852,10 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
1622 | /* mpu_bus class */ | 1852 | /* mpu_bus class */ |
1623 | &omap44xx_mpu_private_hwmod, | 1853 | &omap44xx_mpu_private_hwmod, |
1624 | 1854 | ||
1855 | /* dsp class */ | ||
1856 | &omap44xx_dsp_hwmod, | ||
1857 | &omap44xx_dsp_c0_hwmod, | ||
1858 | |||
1625 | /* gpio class */ | 1859 | /* gpio class */ |
1626 | &omap44xx_gpio1_hwmod, | 1860 | &omap44xx_gpio1_hwmod, |
1627 | &omap44xx_gpio2_hwmod, | 1861 | &omap44xx_gpio2_hwmod, |
@@ -1636,6 +1870,11 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
1636 | &omap44xx_i2c3_hwmod, | 1870 | &omap44xx_i2c3_hwmod, |
1637 | &omap44xx_i2c4_hwmod, | 1871 | &omap44xx_i2c4_hwmod, |
1638 | 1872 | ||
1873 | /* iva class */ | ||
1874 | &omap44xx_iva_hwmod, | ||
1875 | &omap44xx_iva_seq0_hwmod, | ||
1876 | &omap44xx_iva_seq1_hwmod, | ||
1877 | |||
1639 | /* mpu class */ | 1878 | /* mpu class */ |
1640 | &omap44xx_mpu_hwmod, | 1879 | &omap44xx_mpu_hwmod, |
1641 | 1880 | ||