diff options
author | Marcus Lorentzon <marcus.xm.lorentzon@stericsson.com> | 2011-12-22 14:20:58 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@linaro.org> | 2012-03-19 09:00:21 +0100 |
commit | 3a0868fc861613ab7d1b349973743e39bc9f2021 (patch) | |
tree | d18e11c207227ac26e287451b6151a5d72ffec58 /drivers/video/mcde/mcde_hw.c | |
parent | dc5967365b317ab365de4faa32c632c925fba24e (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.c | 4 |
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, |