aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorSenthilvadivu Guruswamy <svadivu@ti.com>2011-02-16 00:14:00 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-03-11 08:46:21 -0500
commitef631f82500390b3dfc20b16214e53c443d675a4 (patch)
tree56ac1e674524f5cfd5755f60d74f8b361ae02611 /drivers/video
parentea9da36a304eed585fc5ef89c0f1c460eca61b48 (diff)
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>
Diffstat (limited to 'drivers/video')
-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 ee9ce4af58b5..a00733d6436a 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -79,6 +79,7 @@ static struct {
79 enum dss_clk_source dispc_clk_source; 79 enum dss_clk_source dispc_clk_source;
80 80
81 u32 ctx[DSS_SZ_REGS / sizeof(u32)]; 81 u32 ctx[DSS_SZ_REGS / sizeof(u32)];
82 int dss_irq;
82} dss; 83} dss;
83 84
84static void dss_clk_enable_all_no_ctx(void); 85static void dss_clk_enable_all_no_ctx(void);
@@ -609,11 +610,18 @@ static int dss_init(bool skip_init)
609 REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */ 610 REG_FLD_MOD(DSS_CONTROL, 0, 2, 2); /* venc clock mode = normal */
610#endif 611#endif
611 612
612 r = request_irq(INT_24XX_DSS_IRQ, 613 dss.dss_irq = platform_get_irq(dss.pdev, 0);
613 cpu_is_omap24xx() 614 if (dss.dss_irq < 0) {
614 ? dss_irq_handler_omap2 615 DSSERR("omap2 dss: platform_get_irq failed\n");
615 : dss_irq_handler_omap3, 616 r = -ENODEV;
616 0, "OMAP DSS", NULL); 617 goto fail1;
618 }
619
620 r = request_irq(dss.dss_irq,
621 cpu_is_omap24xx()
622 ? dss_irq_handler_omap2
623 : dss_irq_handler_omap3,
624 0, "OMAP DSS", NULL);
617 625
618 if (r < 0) { 626 if (r < 0) {
619 DSSERR("omap2 dss: request_irq failed\n"); 627 DSSERR("omap2 dss: request_irq failed\n");
@@ -641,7 +649,7 @@ static int dss_init(bool skip_init)
641 return 0; 649 return 0;
642 650
643fail2: 651fail2:
644 free_irq(INT_24XX_DSS_IRQ, NULL); 652 free_irq(dss.dss_irq, NULL);
645fail1: 653fail1:
646 iounmap(dss.base); 654 iounmap(dss.base);
647fail0: 655fail0:
@@ -653,7 +661,7 @@ static void dss_exit(void)
653 if (cpu_is_omap34xx()) 661 if (cpu_is_omap34xx())
654 clk_put(dss.dpll4_m4_ck); 662 clk_put(dss.dpll4_m4_ck);
655 663
656 free_irq(INT_24XX_DSS_IRQ, NULL); 664 free_irq(dss.dss_irq, NULL);
657 665
658 iounmap(dss.base); 666 iounmap(dss.base);
659} 667}