aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorarchit taneja <archit@ti.com>2011-02-23 03:41:03 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-03-11 08:46:24 -0500
commitaffe360d13e54b415cde2f11cee02369b4ed54bd (patch)
tree5c3b0382ac358351c86e73bb16004cc90aa930ab /arch
parent371e2081447ce2bc6a25c20b513b9ba33cf5769e (diff)
OMAP: DSS2: Have separate irq handlers for DISPC and DSI
Currently, the core DSS platform device requests for an irq line for OMAP2 and OMAP3. Make DISPC and DSI platform devices request for a shared IRQ line. On OMAP3, the logical OR of DSI and DISPC interrupt lines goes to the MPU. There is a register DSS_IRQSTATUS which tells if the interrupt came from DISPC or DSI. On OMAP2, there is no DSI, only DISPC interrupts goto the MPU. There is no DSS_IRQSTATUS register. Hence, it makes more sense to have separate irq handlers corresponding to the DSS sub modules instead of having a common handler. Since on OMAP3 the logical OR of the lines goes to MPU, the irq line is shared among the IRQ handlers. The hwmod irq info has been removed for DSS to DISPC and DSI for OMAP2 and OMAP3 hwmod databases. The Probes of DISPC and DSI now request for irq handlers. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2420_data.c13
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2430_data.c12
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c21
3 files changed, 24 insertions, 22 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index 61e58bd27ae..3a1ad007497 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -1168,11 +1168,6 @@ static struct omap_hwmod_class omap2420_dss_hwmod_class = {
1168 .sysc = &omap2420_dss_sysc, 1168 .sysc = &omap2420_dss_sysc,
1169}; 1169};
1170 1170
1171/* dss */
1172static struct omap_hwmod_irq_info omap2420_dss_irqs[] = {
1173 { .irq = 25 },
1174};
1175
1176static struct omap_hwmod_dma_info omap2420_dss_sdma_chs[] = { 1171static struct omap_hwmod_dma_info omap2420_dss_sdma_chs[] = {
1177 { .name = "dispc", .dma_req = 5 }, 1172 { .name = "dispc", .dma_req = 5 },
1178}; 1173};
@@ -1221,8 +1216,6 @@ static struct omap_hwmod omap2420_dss_core_hwmod = {
1221 .name = "dss_core", 1216 .name = "dss_core",
1222 .class = &omap2420_dss_hwmod_class, 1217 .class = &omap2420_dss_hwmod_class,
1223 .main_clk = "dss1_fck", /* instead of dss_fck */ 1218 .main_clk = "dss1_fck", /* instead of dss_fck */
1224 .mpu_irqs = omap2420_dss_irqs,
1225 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_dss_irqs),
1226 .sdma_reqs = omap2420_dss_sdma_chs, 1219 .sdma_reqs = omap2420_dss_sdma_chs,
1227 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_dss_sdma_chs), 1220 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_dss_sdma_chs),
1228 .prcm = { 1221 .prcm = {
@@ -1265,6 +1258,10 @@ static struct omap_hwmod_class omap2420_dispc_hwmod_class = {
1265 .sysc = &omap2420_dispc_sysc, 1258 .sysc = &omap2420_dispc_sysc,
1266}; 1259};
1267 1260
1261static struct omap_hwmod_irq_info omap2420_dispc_irqs[] = {
1262 { .irq = 25 },
1263};
1264
1268static struct omap_hwmod_addr_space omap2420_dss_dispc_addrs[] = { 1265static struct omap_hwmod_addr_space omap2420_dss_dispc_addrs[] = {
1269 { 1266 {
1270 .pa_start = 0x48050400, 1267 .pa_start = 0x48050400,
@@ -1297,6 +1294,8 @@ static struct omap_hwmod_ocp_if *omap2420_dss_dispc_slaves[] = {
1297static struct omap_hwmod omap2420_dss_dispc_hwmod = { 1294static struct omap_hwmod omap2420_dss_dispc_hwmod = {
1298 .name = "dss_dispc", 1295 .name = "dss_dispc",
1299 .class = &omap2420_dispc_hwmod_class, 1296 .class = &omap2420_dispc_hwmod_class,
1297 .mpu_irqs = omap2420_dispc_irqs,
1298 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_dispc_irqs),
1300 .main_clk = "dss1_fck", 1299 .main_clk = "dss1_fck",
1301 .prcm = { 1300 .prcm = {
1302 .omap2 = { 1301 .omap2 = {
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index 490789a6bed..c905c1bf90c 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -1268,10 +1268,6 @@ static struct omap_hwmod_class omap2430_dss_hwmod_class = {
1268 .sysc = &omap2430_dss_sysc, 1268 .sysc = &omap2430_dss_sysc,
1269}; 1269};
1270 1270
1271/* dss */
1272static struct omap_hwmod_irq_info omap2430_dss_irqs[] = {
1273 { .irq = 25 },
1274};
1275static struct omap_hwmod_dma_info omap2430_dss_sdma_chs[] = { 1271static struct omap_hwmod_dma_info omap2430_dss_sdma_chs[] = {
1276 { .name = "dispc", .dma_req = 5 }, 1272 { .name = "dispc", .dma_req = 5 },
1277}; 1273};
@@ -1314,8 +1310,6 @@ static struct omap_hwmod omap2430_dss_core_hwmod = {
1314 .name = "dss_core", 1310 .name = "dss_core",
1315 .class = &omap2430_dss_hwmod_class, 1311 .class = &omap2430_dss_hwmod_class,
1316 .main_clk = "dss1_fck", /* instead of dss_fck */ 1312 .main_clk = "dss1_fck", /* instead of dss_fck */
1317 .mpu_irqs = omap2430_dss_irqs,
1318 .mpu_irqs_cnt = ARRAY_SIZE(omap2430_dss_irqs),
1319 .sdma_reqs = omap2430_dss_sdma_chs, 1313 .sdma_reqs = omap2430_dss_sdma_chs,
1320 .sdma_reqs_cnt = ARRAY_SIZE(omap2430_dss_sdma_chs), 1314 .sdma_reqs_cnt = ARRAY_SIZE(omap2430_dss_sdma_chs),
1321 .prcm = { 1315 .prcm = {
@@ -1358,6 +1352,10 @@ static struct omap_hwmod_class omap2430_dispc_hwmod_class = {
1358 .sysc = &omap2430_dispc_sysc, 1352 .sysc = &omap2430_dispc_sysc,
1359}; 1353};
1360 1354
1355static struct omap_hwmod_irq_info omap2430_dispc_irqs[] = {
1356 { .irq = 25 },
1357};
1358
1361static struct omap_hwmod_addr_space omap2430_dss_dispc_addrs[] = { 1359static struct omap_hwmod_addr_space omap2430_dss_dispc_addrs[] = {
1362 { 1360 {
1363 .pa_start = 0x48050400, 1361 .pa_start = 0x48050400,
@@ -1384,6 +1382,8 @@ static struct omap_hwmod_ocp_if *omap2430_dss_dispc_slaves[] = {
1384static struct omap_hwmod omap2430_dss_dispc_hwmod = { 1382static struct omap_hwmod omap2430_dss_dispc_hwmod = {
1385 .name = "dss_dispc", 1383 .name = "dss_dispc",
1386 .class = &omap2430_dispc_hwmod_class, 1384 .class = &omap2430_dispc_hwmod_class,
1385 .mpu_irqs = omap2430_dispc_irqs,
1386 .mpu_irqs_cnt = ARRAY_SIZE(omap2430_dispc_irqs),
1387 .main_clk = "dss1_fck", 1387 .main_clk = "dss1_fck",
1388 .prcm = { 1388 .prcm = {
1389 .omap2 = { 1389 .omap2 = {
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 4ed48cab06f..f997b0e9759 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -1503,11 +1503,6 @@ static struct omap_hwmod_class omap3xxx_dss_hwmod_class = {
1503 .sysc = &omap3xxx_dss_sysc, 1503 .sysc = &omap3xxx_dss_sysc,
1504}; 1504};
1505 1505
1506/* dss */
1507static struct omap_hwmod_irq_info omap3xxx_dss_irqs[] = {
1508 { .irq = 25 },
1509};
1510
1511static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = { 1506static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {
1512 { .name = "dispc", .dma_req = 5 }, 1507 { .name = "dispc", .dma_req = 5 },
1513 { .name = "dsi1", .dma_req = 74 }, 1508 { .name = "dsi1", .dma_req = 74 },
@@ -1579,8 +1574,6 @@ static struct omap_hwmod omap3430es1_dss_core_hwmod = {
1579 .name = "dss_core", 1574 .name = "dss_core",
1580 .class = &omap3xxx_dss_hwmod_class, 1575 .class = &omap3xxx_dss_hwmod_class,
1581 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ 1576 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
1582 .mpu_irqs = omap3xxx_dss_irqs,
1583 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dss_irqs),
1584 .sdma_reqs = omap3xxx_dss_sdma_chs, 1577 .sdma_reqs = omap3xxx_dss_sdma_chs,
1585 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs), 1578 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs),
1586 1579
@@ -1607,8 +1600,6 @@ static struct omap_hwmod omap3xxx_dss_core_hwmod = {
1607 .name = "dss_core", 1600 .name = "dss_core",
1608 .class = &omap3xxx_dss_hwmod_class, 1601 .class = &omap3xxx_dss_hwmod_class,
1609 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */ 1602 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
1610 .mpu_irqs = omap3xxx_dss_irqs,
1611 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dss_irqs),
1612 .sdma_reqs = omap3xxx_dss_sdma_chs, 1603 .sdma_reqs = omap3xxx_dss_sdma_chs,
1613 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs), 1604 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs),
1614 1605
@@ -1654,6 +1645,10 @@ static struct omap_hwmod_class omap3xxx_dispc_hwmod_class = {
1654 .sysc = &omap3xxx_dispc_sysc, 1645 .sysc = &omap3xxx_dispc_sysc,
1655}; 1646};
1656 1647
1648static struct omap_hwmod_irq_info omap3xxx_dispc_irqs[] = {
1649 { .irq = 25 },
1650};
1651
1657static struct omap_hwmod_addr_space omap3xxx_dss_dispc_addrs[] = { 1652static struct omap_hwmod_addr_space omap3xxx_dss_dispc_addrs[] = {
1658 { 1653 {
1659 .pa_start = 0x48050400, 1654 .pa_start = 0x48050400,
@@ -1687,6 +1682,8 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = {
1687static struct omap_hwmod omap3xxx_dss_dispc_hwmod = { 1682static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
1688 .name = "dss_dispc", 1683 .name = "dss_dispc",
1689 .class = &omap3xxx_dispc_hwmod_class, 1684 .class = &omap3xxx_dispc_hwmod_class,
1685 .mpu_irqs = omap3xxx_dispc_irqs,
1686 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dispc_irqs),
1690 .main_clk = "dss1_alwon_fck", 1687 .main_clk = "dss1_alwon_fck",
1691 .prcm = { 1688 .prcm = {
1692 .omap2 = { 1689 .omap2 = {
@@ -1712,6 +1709,10 @@ static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = {
1712 .name = "dsi", 1709 .name = "dsi",
1713}; 1710};
1714 1711
1712static struct omap_hwmod_irq_info omap3xxx_dsi1_irqs[] = {
1713 { .irq = 25 },
1714};
1715
1715/* dss_dsi1 */ 1716/* dss_dsi1 */
1716static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = { 1717static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
1717 { 1718 {
@@ -1745,6 +1746,8 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {
1745static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { 1746static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
1746 .name = "dss_dsi1", 1747 .name = "dss_dsi1",
1747 .class = &omap3xxx_dsi_hwmod_class, 1748 .class = &omap3xxx_dsi_hwmod_class,
1749 .mpu_irqs = omap3xxx_dsi1_irqs,
1750 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dsi1_irqs),
1748 .main_clk = "dss1_alwon_fck", 1751 .main_clk = "dss1_alwon_fck",
1749 .prcm = { 1752 .prcm = {
1750 .omap2 = { 1753 .omap2 = {