aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>2015-08-15 12:26:19 -0400
committerInki Dae <daeinki@gmail.com>2015-08-30 11:27:38 -0400
commit7cf23eaf0d8e6f34f3bc89141efc96b2502b290c (patch)
tree9a4f3fb2fa74db85f3f59e33020446521f3ef2db
parentc4533665d819271dad890440b887776ac3d5f265 (diff)
drm/exynos: remove wait queue for pending page flip
Exynos atomic commit procedures already does this job of waiting for pending updates to finish, that means using pending_flip_queue is pointless now because the disable CRTC procedure will never happen during a page_flip. Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_crtc.c11
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.h1
2 files changed, 1 insertions, 11 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
index d6c2c3f8bc6e..0872aa2f450f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
@@ -35,11 +35,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
35{ 35{
36 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); 36 struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
37 37
38 /* wait for the completion of page flip. */
39 if (!wait_event_timeout(exynos_crtc->pending_flip_queue,
40 (exynos_crtc->event == NULL), HZ/20))
41 exynos_crtc->event = NULL;
42
43 drm_crtc_vblank_off(crtc); 38 drm_crtc_vblank_off(crtc);
44 39
45 if (exynos_crtc->ops->disable) 40 if (exynos_crtc->ops->disable)
@@ -146,8 +141,6 @@ struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
146 if (!exynos_crtc) 141 if (!exynos_crtc)
147 return ERR_PTR(-ENOMEM); 142 return ERR_PTR(-ENOMEM);
148 143
149 init_waitqueue_head(&exynos_crtc->pending_flip_queue);
150
151 exynos_crtc->pipe = pipe; 144 exynos_crtc->pipe = pipe;
152 exynos_crtc->type = type; 145 exynos_crtc->type = type;
153 exynos_crtc->ops = ops; 146 exynos_crtc->ops = ops;
@@ -215,10 +208,8 @@ void exynos_drm_crtc_finish_update(struct exynos_drm_crtc *exynos_crtc,
215 wake_up(&exynos_crtc->wait_update); 208 wake_up(&exynos_crtc->wait_update);
216 209
217 spin_lock_irqsave(&crtc->dev->event_lock, flags); 210 spin_lock_irqsave(&crtc->dev->event_lock, flags);
218 if (exynos_crtc->event) { 211 if (exynos_crtc->event)
219 drm_crtc_send_vblank_event(crtc, exynos_crtc->event); 212 drm_crtc_send_vblank_event(crtc, exynos_crtc->event);
220 wake_up(&exynos_crtc->pending_flip_queue);
221 }
222 213
223 exynos_crtc->event = NULL; 214 exynos_crtc->event = NULL;
224 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); 215 spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index 7193d94fde3b..b7ba21dfb696 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -145,7 +145,6 @@ struct exynos_drm_crtc {
145 struct drm_crtc base; 145 struct drm_crtc base;
146 enum exynos_drm_output_type type; 146 enum exynos_drm_output_type type;
147 unsigned int pipe; 147 unsigned int pipe;
148 wait_queue_head_t pending_flip_queue;
149 struct drm_pending_vblank_event *event; 148 struct drm_pending_vblank_event *event;
150 wait_queue_head_t wait_update; 149 wait_queue_head_t wait_update;
151 atomic_t pending_update; 150 atomic_t pending_update;