aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorBenoit Cousson <b-cousson@ti.com>2010-12-21 23:08:34 -0500
committerPaul Walmsley <paul@pwsan.com>2010-12-21 23:08:34 -0500
commit8f25bdc55d619bdd469a90b82743248680422507 (patch)
tree26c0dfb8f67b73b6e8a2d332c163d65de547144e /arch
parent659fa8222c0ca1061d74cb3282614c017f415fe5 (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.c243
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) */
43static struct omap_hwmod omap44xx_dma_system_hwmod; 43static struct omap_hwmod omap44xx_dma_system_hwmod;
44static struct omap_hwmod omap44xx_dmm_hwmod; 44static struct omap_hwmod omap44xx_dmm_hwmod;
45static struct omap_hwmod omap44xx_dsp_hwmod;
45static struct omap_hwmod omap44xx_emif_fw_hwmod; 46static struct omap_hwmod omap44xx_emif_fw_hwmod;
47static struct omap_hwmod omap44xx_iva_hwmod;
46static struct omap_hwmod omap44xx_l3_instr_hwmod; 48static struct omap_hwmod omap44xx_l3_instr_hwmod;
47static struct omap_hwmod omap44xx_l3_main_1_hwmod; 49static struct omap_hwmod omap44xx_l3_main_1_hwmod;
48static struct omap_hwmod omap44xx_l3_main_2_hwmod; 50static 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 */
178static 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 */
176static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { 186static 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 */
184static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = { 194static 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 */
209static 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 */
198static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { 217static 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 */
222static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { 241static 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 */
258static 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 */
238static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { 266static 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 */
262static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { 290static 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 */
355static 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 */
326static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = { 363static 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 */
342static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { 379static 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
587static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
588 .name = "dsp",
589};
590
591/* dsp */
592static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
593 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
594};
595
596static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
597 { .name = "mmu_cache", .rst_shift = 1 },
598};
599
600static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = {
601 { .name = "dsp", .rst_shift = 0 },
602};
603
604/* dsp -> iva */
605static 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 */
612static 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 */
619static 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 */
627static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = {
628 &omap44xx_l4_cfg__dsp,
629};
630
631/* Pseudo hwmod for reset control purpose only */
632static 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
646static 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
1238static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
1239 .name = "iva",
1240};
1241
1242/* iva */
1243static 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
1249static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
1250 { .name = "logic", .rst_shift = 2 },
1251};
1252
1253static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = {
1254 { .name = "seq0", .rst_shift = 0 },
1255};
1256
1257static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = {
1258 { .name = "seq1", .rst_shift = 1 },
1259};
1260
1261/* iva master ports */
1262static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = {
1263 &omap44xx_iva__l3_main_2,
1264 &omap44xx_iva__l3_instr,
1265};
1266
1267static 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 */
1276static 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 */
1286static 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 */
1292static 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 */
1307static 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
1321static 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