diff options
author | Inki Dae <inki.dae@samsung.com> | 2014-10-24 12:02:29 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 12:01:05 +0900 |
commit | 12b11fe1d0a5e3225df260f8b4e0c5228594d075 (patch) | |
tree | 5c5dd065aca30702a4f704599cf6bee0a8151b7b /drivers/gpu/drm | |
parent | 9b760e3f402bf24783c7ce61029680c805639781 (diff) | |
download | linux-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/drm')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fimd.c | 16 |
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: |