OMAPDSS: DISPC: add no_framedone_tv feat
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 8 Nov 2012 08:01:33 +0000 (10:01 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 27 Nov 2012 10:27:01 +0000 (12:27 +0200)
OMAP2/3 do not have FRAMEDONETV irq, but later omaps do. We currently
always return 0 from dispc_mgr_get_framedone_irq() for TV output to be
compatible with OMAP2/3.

This patch implements "no_framedone_tv" dispc-feature that is used in
dispc_mgr_get_framedone_irq to return either 0 for OMAP2/3, or the
correct IRQ number for FRAMEDONETV on OMAP4+.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dispc.c

index 3d0ff5b..21fa587 100644 (file)
@@ -104,6 +104,9 @@ struct dispc_features {
 
        /* swap GFX & WB fifos */
        bool gfx_fifo_workaround:1;
+
+       /* no DISPC_IRQ_FRAMEDONETV on this SoC */
+       bool no_framedone_tv:1;
 };
 
 #define DISPC_MAX_NR_FIFOS 5
@@ -191,7 +194,7 @@ static const struct {
        [OMAP_DSS_CHANNEL_DIGIT] = {
                .name           = "DIGIT",
                .vsync_irq      = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN,
-               .framedone_irq  = 0,
+               .framedone_irq  = DISPC_IRQ_FRAMEDONETV,
                .sync_lost_irq  = DISPC_IRQ_SYNC_LOST_DIGIT,
                .reg_desc       = {
                        [DISPC_MGR_FLD_ENABLE]          = { DISPC_CONTROL,  1,  1 },
@@ -543,6 +546,9 @@ u32 dispc_mgr_get_vsync_irq(enum omap_channel channel)
 
 u32 dispc_mgr_get_framedone_irq(enum omap_channel channel)
 {
+       if (channel == OMAP_DSS_CHANNEL_DIGIT && dispc.feat->no_framedone_tv)
+               return 0;
+
        return mgr_desc[channel].framedone_irq;
 }
 
@@ -4095,6 +4101,7 @@ static const struct dispc_features omap24xx_dispc_feats __initconst = {
        .calc_scaling           =       dispc_ovl_calc_scaling_24xx,
        .calc_core_clk          =       calc_core_clk_24xx,
        .num_fifos              =       3,
+       .no_framedone_tv        =       true,
 };
 
 static const struct dispc_features omap34xx_rev1_0_dispc_feats __initconst = {
@@ -4111,6 +4118,7 @@ static const struct dispc_features omap34xx_rev1_0_dispc_feats __initconst = {
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
+       .no_framedone_tv        =       true,
 };
 
 static const struct dispc_features omap34xx_rev3_0_dispc_feats __initconst = {
@@ -4127,6 +4135,7 @@ static const struct dispc_features omap34xx_rev3_0_dispc_feats __initconst = {
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
+       .no_framedone_tv        =       true,
 };
 
 static const struct dispc_features omap44xx_dispc_feats __initconst = {