summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenthilvadivu Guruswamy <svadivu@ti.com>2011-02-16 05:14:00 (GMT)
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-03-11 13:46:21 (GMT)
commitef631f82500390b3dfc20b16214e53c443d675a4 (patch)
tree56ac1e674524f5cfd5755f60d74f8b361ae02611
parentea9da36a304eed585fc5ef89c0f1c460eca61b48 (diff)
downloadlinux-ef631f82500390b3dfc20b16214e53c443d675a4.tar.xz
OMAP2,3: DSS2: Get DSS IRQ from platform device
DSS IRQ number can be obtained from platform_get_irq(). This API in turn picks the right IRQ number belonging to HW IP from the hwmod database. So hardcoding of IRQ number could be removed. This IRQ is stored in dss_irq as part of dss structure, and freed it in dss_exit(). Reviewed-by: Paul Walmsley <paul@pwsan.com> Reviewed-by: Kevin Hilman <khilman@ti.com> Tested-by: Kevin Hilman <khilman@ti.com> Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/video/omap2/dss/dss.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index ee9ce4a..a00733d 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -79,6 +79,7 @@ static struct {
enum dss_clk_source dispc_clk_source;
u32 ctx[DSS_SZ_REGS / sizeof(u32)];
+ int dss_irq;
} dss;
static void dss_clk_enable_all_no_ctx(void);
@@ -609,11 +610,18 @@ static int dss_init(bool skip_init)
REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */
#endif
- r = request_irq(INT_24XX_DSS_IRQ,
- cpu_is_omap24xx()
- ? dss_irq_handler_omap2
- : dss_irq_handler_omap3,
- 0, "OMAP DSS", NULL);
+ dss.dss_irq = platform_get_irq(dss.pdev, 0);
+ if (dss.dss_irq < 0) {
+ DSSERR("omap2 dss: platform_get_irq failed\n");
+ r = -ENODEV;
+ goto fail1;
+ }
+
+ r = request_irq(dss.dss_irq,
+ cpu_is_omap24xx()
+ ? dss_irq_handler_omap2
+ : dss_irq_handler_omap3,
+ 0, "OMAP DSS", NULL);
if (r < 0) {
DSSERR("omap2 dss: request_irq failed\n");
@@ -641,7 +649,7 @@ static int dss_init(bool skip_init)
return 0;
fail2:
- free_irq(INT_24XX_DSS_IRQ, NULL);
+ free_irq(dss.dss_irq, NULL);
fail1:
iounmap(dss.base);
fail0:
@@ -653,7 +661,7 @@ static void dss_exit(void)
if (cpu_is_omap34xx())
clk_put(dss.dpll4_m4_ck);
- free_irq(INT_24XX_DSS_IRQ, NULL);
+ free_irq(dss.dss_irq, NULL);
iounmap(dss.base);
}