Before DPMS off driver disables vblank. It should be balanced by vblank enable after DPMS on. The patch fixes issue with page_flip ioctl not being able to acquire vblank counter introduced by patch: drm: Always reject drm_vblank_get() after drm_vblank_off()
Unified · Split
| @@ -71,13 +71,16 @@ static void exynos_drm_crtc_dpms(struct drm_crtc *crtc, int mode) · 70 unmodified lines | ||
| 71 | 71 | !atomic_read(&exynos_crtc->pending_flip), |
| 72 | 72 | HZ/20)) |
| 73 | 73 | atomic_set(&exynos_crtc->pending_flip, 0); |
| 74 | − drm_vblank_off(crtc->dev, exynos_crtc->pipe); | |
| 74 | + drm_crtc_vblank_off(crtc); | |
| 75 | 75 | } |
| 76 | 76 | |
| 77 | 77 | if (manager->ops->dpms) |
| 78 | 78 | manager->ops->dpms(manager, mode); |
| 79 | 79 | |
| 80 | 80 | exynos_crtc->dpms = mode; |
| 81 | + | |
| 82 | + if (mode == DRM_MODE_DPMS_ON) | |
| 83 | + drm_crtc_vblank_on(crtc); | |
| 81 | 84 | } |
| 82 | 85 | |
| 83 | 86 | static void exynos_drm_crtc_prepare(struct drm_crtc *crtc) |