|
@@ -3253,6 +3253,16 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
|
|
|
|
|
|
if (HAS_PCH_CPT(dev))
|
|
|
intel_cpt_verify_modeset(dev, intel_crtc->pipe);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * There seems to be a race in PCH platform hw (at least on some
|
|
|
+ * outputs) where an enabled pipe still completes any pageflip right
|
|
|
+ * away (as if the pipe is off) instead of waiting for vblank. As soon
|
|
|
+ * as the first vblank happend, everything works as expected. Hence just
|
|
|
+ * wait for one vblank before returning to avoid strange things
|
|
|
+ * happening.
|
|
|
+ */
|
|
|
+ intel_wait_for_vblank(dev, intel_crtc->pipe);
|
|
|
}
|
|
|
|
|
|
static void ironlake_crtc_disable(struct drm_crtc *crtc)
|