From 476bdd627a2358b29d25f77a7452f3823cdbbd76 Mon Sep 17 00:00:00 2001 From: Marcus Lorentzon Date: Thu, 22 Dec 2011 14:20:58 +0100 Subject: 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 Reviewed-by: QABUILD Reviewed-by: Marta LOFSTEDT Tested-by: Marta LOFSTEDT Reviewed-by: Anders BAUER Reviewed-by: Jimmy RUBIN --- drivers/video/mcde/mcde_hw.c | 4 ++++ 1 file changed, 4 insertions(+) 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, -- cgit v1.2.3