summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2014-10-24 12:02:29 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 12:01:05 +0900
commit12b11fe1d0a5e3225df260f8b4e0c5228594d075 (patch)
tree5c5dd065aca30702a4f704599cf6bee0a8151b7b /drivers/gpu
parent9b760e3f402bf24783c7ce61029680c805639781 (diff)
downloadlinux-3.10-12b11fe1d0a5e3225df260f8b4e0c5228594d075.tar.gz
linux-3.10-12b11fe1d0a5e3225df260f8b4e0c5228594d075.tar.bz2
linux-3.10-12b11fe1d0a5e3225df260f8b4e0c5228594d075.zip
drm/exynos: fimd: handle wait vsync event at irq handler
in case of all modes, i80 and rgb modes, wait vsync event should be handled at irq handler after framedone. Change-Id: I7dbd38119c5c27a694e3b1c7c160f8205a4b028c Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fimd.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index e9fb4b2ac20..ce4e25f1ed5 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -1002,12 +1002,6 @@ static int fimd_te_handler(struct exynos_drm_manager *mgr)
spin_unlock_irqrestore(&ctx->win_updated_lock, flags);
- /* Wakes up vsync event queue */
- if (atomic_read(&ctx->wait_vsync_event)) {
- atomic_set(&ctx->wait_vsync_event, 0);
- wake_up(&ctx->wait_vsync_queue);
- }
-
if (!atomic_read(&ctx->triggering))
drm_handle_vblank(ctx->drm_dev, ctx->pipe);
@@ -1064,12 +1058,12 @@ static irqreturn_t fimd_irq_handler(int irq, void *dev_id)
} else {
drm_handle_vblank(ctx->drm_dev, ctx->pipe);
exynos_drm_crtc_finish_pageflip(ctx->drm_dev, ctx->pipe);
+ }
- /* set wait vsync event to zero and wake up queue. */
- if (atomic_read(&ctx->wait_vsync_event)) {
- atomic_set(&ctx->wait_vsync_event, 0);
- wake_up(&ctx->wait_vsync_queue);
- }
+ /* set wait vsync event to zero and wake up queue. */
+ if (atomic_read(&ctx->wait_vsync_event)) {
+ atomic_set(&ctx->wait_vsync_event, 0);
+ wake_up(&ctx->wait_vsync_queue);
}
out: