summaryrefslogtreecommitdiff
path: root/drivers/video/mcde/mcde_hw.c
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 /drivers/video/mcde/mcde_hw.c
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>
Diffstat (limited to 'drivers/video/mcde/mcde_hw.c')
-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,