aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/imx-drm/ipuv3-crtc.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c
index b028b0d1317b..1cd74f5e4c76 100644
--- a/drivers/staging/imx-drm/ipuv3-crtc.c
+++ b/drivers/staging/imx-drm/ipuv3-crtc.c
@@ -311,31 +311,14 @@ static int ipu_crtc_mode_set(struct drm_crtc *crtc,
311 311
312static void ipu_crtc_handle_pageflip(struct ipu_crtc *ipu_crtc) 312static void ipu_crtc_handle_pageflip(struct ipu_crtc *ipu_crtc)
313{ 313{
314 struct drm_pending_vblank_event *e;
315 struct timeval now;
316 unsigned long flags; 314 unsigned long flags;
317 struct drm_device *drm = ipu_crtc->base.dev; 315 struct drm_device *drm = ipu_crtc->base.dev;
318 316
319 spin_lock_irqsave(&drm->event_lock, flags); 317 spin_lock_irqsave(&drm->event_lock, flags);
320 318 if (ipu_crtc->page_flip_event)
321 e = ipu_crtc->page_flip_event; 319 drm_send_vblank_event(drm, -1, ipu_crtc->page_flip_event);
322 if (!e) {
323 spin_unlock_irqrestore(&drm->event_lock, flags);
324 return;
325 }
326
327 do_gettimeofday(&now);
328 e->event.sequence = 0;
329 e->event.tv_sec = now.tv_sec;
330 e->event.tv_usec = now.tv_usec;
331 ipu_crtc->page_flip_event = NULL; 320 ipu_crtc->page_flip_event = NULL;
332
333 imx_drm_crtc_vblank_put(ipu_crtc->imx_crtc); 321 imx_drm_crtc_vblank_put(ipu_crtc->imx_crtc);
334
335 list_add_tail(&e->base.link, &e->base.file_priv->event_list);
336
337 wake_up_interruptible(&e->base.file_priv->event_wait);
338
339 spin_unlock_irqrestore(&drm->event_lock, flags); 322 spin_unlock_irqrestore(&drm->event_lock, flags);
340} 323}
341 324