Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef631f82 authored by Senthilvadivu Guruswamy's avatar Senthilvadivu Guruswamy Committed by Tomi Valkeinen
Browse files

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: default avatarPaul Walmsley <paul@pwsan.com>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Tested-by: default avatarKevin Hilman <khilman@ti.com>
Signed-off-by: default avatarSenthilvadivu Guruswamy <svadivu@ti.com>
Signed-off-by: default avatarSumit Semwal <sumit.semwal@ti.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent ea9da36a
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -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,7 +610,14 @@ 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,
	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,
@@ -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);
}