summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Lorentzon <marcus.xm.lorentzon@stericsson.com>2011-12-22 14:20:58 +0100
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:00:21 +0100
commit3a0868fc861613ab7d1b349973743e39bc9f2021 (patch)
treed18e11c207227ac26e287451b6151a5d72ffec58
parentdc5967365b317ab365de4faa32c632c925fba24e (diff)
video: mcde: Overlay register access race
When two updates are requested before display vsync interrupt of first update has arrived, then MCDE update screen using the buffer of the second update for both updates. This fix makes sure MCDE driver wait for first update before updating overlay registers. ST-Ericsson ID: 406356 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I65aa73455ac4a27d150ae196477d6a313cada85b Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/43515 Reviewed-by: Marcus LORENTZON <marcus.xm.lorentzon@stericsson.com> Reviewed-by: QABUILD Reviewed-by: Marta LOFSTEDT <marta.lofstedt@stericsson.com> Tested-by: Marta LOFSTEDT <marta.lofstedt@stericsson.com> Reviewed-by: Anders BAUER <anders.bauer@stericsson.com> Reviewed-by: Jimmy RUBIN <jimmy.rubin@stericsson.com>
-rw-r--r--drivers/video/mcde/mcde_hw.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/mcde/mcde_hw.c b/drivers/video/mcde/mcde_hw.c
index 3db1d50d3c1..6e846e60f47 100644
--- a/drivers/video/mcde/mcde_hw.c
+++ b/drivers/video/mcde/mcde_hw.c
@@ -2764,10 +2764,14 @@ static void chnl_update_overlay(struct mcde_chnl_state *chnl,
return;
if (ovly->regs.dirty_buf) {
+ if (!chnl->port.update_auto_trig)
+ set_channel_state_sync(chnl, CHNLSTATE_SETUP);
update_overlay_registers_on_the_fly(ovly->idx, &ovly->regs);
mcde_debugfs_overlay_update(chnl->id, ovly != chnl->ovly0);
}
if (ovly->regs.dirty) {
+ if (!chnl->port.update_auto_trig)
+ set_channel_state_sync(chnl, CHNLSTATE_SETUP);
chnl_ovly_pixel_format_apply(chnl, ovly);
update_overlay_registers(ovly->idx, &ovly->regs, &chnl->port,
chnl->fifo, chnl->regs.x, chnl->regs.y,