|
35 | 35 | * TODO: panel support
|
36 | 36 | */
|
37 | 37 |
|
| 38 | +/* ----------------------------------------------------------------------------- |
| 39 | + * Page Flip |
| 40 | + */ |
| 41 | + |
| 42 | +void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) |
| 43 | +{ |
| 44 | + struct drm_pending_vblank_event *event; |
| 45 | + struct drm_device *dev = scrtc->base.dev; |
| 46 | + unsigned long flags; |
| 47 | + |
| 48 | + spin_lock_irqsave(&dev->event_lock, flags); |
| 49 | + event = scrtc->event; |
| 50 | + scrtc->event = NULL; |
| 51 | + if (event) { |
| 52 | + drm_crtc_send_vblank_event(&scrtc->base, event); |
| 53 | + drm_crtc_vblank_put(&scrtc->base); |
| 54 | + } |
| 55 | + spin_unlock_irqrestore(&dev->event_lock, flags); |
| 56 | +} |
| 57 | + |
38 | 58 | /* -----------------------------------------------------------------------------
|
39 | 59 | * CRTC
|
40 | 60 | */
|
@@ -364,22 +384,6 @@ static const struct drm_crtc_helper_funcs crtc_helper_funcs = {
|
364 | 384 | .mode_set_base = shmob_drm_crtc_mode_set_base,
|
365 | 385 | };
|
366 | 386 |
|
367 |
| -void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) |
368 |
| -{ |
369 |
| - struct drm_pending_vblank_event *event; |
370 |
| - struct drm_device *dev = scrtc->base.dev; |
371 |
| - unsigned long flags; |
372 |
| - |
373 |
| - spin_lock_irqsave(&dev->event_lock, flags); |
374 |
| - event = scrtc->event; |
375 |
| - scrtc->event = NULL; |
376 |
| - if (event) { |
377 |
| - drm_crtc_send_vblank_event(&scrtc->base, event); |
378 |
| - drm_crtc_vblank_put(&scrtc->base); |
379 |
| - } |
380 |
| - spin_unlock_irqrestore(&dev->event_lock, flags); |
381 |
| -} |
382 |
| - |
383 | 387 | static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc,
|
384 | 388 | struct drm_framebuffer *fb,
|
385 | 389 | struct drm_pending_vblank_event *event,
|
|
0 commit comments