@@ -3612,6 +3612,8 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
* happening.
*/
intel_wait_for_vblank(dev, intel_crtc->pipe);
+
+ drm_vblank_on(dev, pipe);
}
/* IPS only exists on ULT machines and is tied to pipe A. */
@@ -3637,6 +3639,8 @@ static void haswell_crtc_enable_planes(struct drm_crtc *crtc)
mutex_lock(&dev->struct_mutex);
intel_update_fbc(dev);
mutex_unlock(&dev->struct_mutex);
+
+ drm_vblank_on(dev, pipe);
}
static void haswell_crtc_disable_planes(struct drm_crtc *crtc)
@@ -4235,6 +4239,8 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
for_each_encoder_on_crtc(dev, crtc, encoder)
encoder->enable(encoder);
+
+ drm_vblank_on(dev, pipe);
}
static void i9xx_crtc_enable(struct drm_crtc *crtc)
@@ -4280,6 +4286,8 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
for_each_encoder_on_crtc(dev, crtc, encoder)
encoder->enable(encoder);
+
+ drm_vblank_on(dev, pipe);
}
static void i9xx_pfit_disable(struct intel_crtc *crtc)
@@ -7014,15 +7022,10 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
struct intel_encoder *encoder;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
struct drm_display_mode *mode = &intel_crtc->config.requested_mode;
- int pipe = intel_crtc->pipe;
int ret;
- drm_vblank_pre_modeset(dev, pipe);
-
ret = dev_priv->display.crtc_mode_set(crtc, x, y, fb);
- drm_vblank_post_modeset(dev, pipe);
-
if (ret != 0)
return ret;