The mechanism to cache manager and overlay settings and configure them into the HW registers in VSYNC is meant only for auto-update displays, as it doesn't make sense (and doesn't work) for manual-update displays. This patchs adds a check so that we skip the above for manual update displays. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> --- drivers/video/omap2/dss/apply.c | 27 +++++++++++++++------------ 1 files changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index 9af5809..04f3ff5 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c @@ -629,23 +629,26 @@ int omap_dss_mgr_apply(struct omap_overlay_manager *mgr) } r = 0; - if (!dss_cache.irq_enabled) { - u32 mask; + if (!mgr_manual_update(mgr)) { + if (!dss_cache.irq_enabled) { + u32 mask; - mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_ODD | - DISPC_IRQ_EVSYNC_EVEN; - if (dss_has_feature(FEAT_MGR_LCD2)) - mask |= DISPC_IRQ_VSYNC2; + mask = DISPC_IRQ_VSYNC | DISPC_IRQ_EVSYNC_ODD | + DISPC_IRQ_EVSYNC_EVEN; + if (dss_has_feature(FEAT_MGR_LCD2)) + mask |= DISPC_IRQ_VSYNC2; - r = omap_dispc_register_isr(dss_apply_irq_handler, NULL, mask); + r = omap_dispc_register_isr(dss_apply_irq_handler, + NULL, mask); - if (r) - DSSERR("failed to register apply isr\n"); + if (r) + DSSERR("failed to register apply isr\n"); - dss_cache.irq_enabled = true; - } + dss_cache.irq_enabled = true; + } - configure_dispc(); + configure_dispc(); + } spin_unlock_irqrestore(&dss_cache.lock, flags); -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html