int plane = intel_crtc->plane;
 
        intel_crtc_wait_for_pending_flips(crtc);
-       drm_vblank_off(dev, pipe);
+       drm_crtc_vblank_off(crtc);
 
        if (dev_priv->fbc.plane == plane)
                intel_disable_fbc(dev);
         */
        intel_wait_for_vblank(dev, intel_crtc->pipe);
 
-       drm_vblank_on(dev, pipe);
+       drm_crtc_vblank_on(crtc);
 }
 
 /* IPS only exists on ULT machines and is tied to pipe A. */
        haswell_mode_set_planes_workaround(intel_crtc);
        ilk_crtc_enable_planes(crtc);
 
-       drm_vblank_on(dev, pipe);
+       drm_crtc_vblank_on(crtc);
 }
 
 static void ironlake_pfit_disable(struct intel_crtc *crtc)
        for_each_encoder_on_crtc(dev, crtc, encoder)
                encoder->enable(encoder);
 
-       drm_vblank_on(dev, pipe);
+       drm_crtc_vblank_on(crtc);
 }
 
 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);
+       drm_crtc_vblank_on(crtc);
 }
 
 static void i9xx_pfit_disable(struct intel_crtc *crtc)
 
        /* Give the overlay scaler a chance to disable if it's on this pipe */
        intel_crtc_wait_for_pending_flips(crtc);
-       drm_vblank_off(dev, pipe);
+       drm_crtc_vblank_off(crtc);
 
        if (dev_priv->fbc.plane == plane)
                intel_disable_fbc(dev);
        if (work->event)
                drm_send_vblank_event(dev, intel_crtc->pipe, work->event);
 
-       drm_vblank_put(dev, intel_crtc->pipe);
+       drm_crtc_vblank_put(crtc);
 
        spin_unlock_irqrestore(&dev->event_lock, flags);
 
        work->old_fb_obj = to_intel_framebuffer(old_fb)->obj;
        INIT_WORK(&work->work, intel_unpin_work_fn);
 
-       ret = drm_vblank_get(dev, intel_crtc->pipe);
+       ret = drm_crtc_vblank_get(crtc);
        if (ret)
                goto free_work;
 
        if (intel_crtc->unpin_work) {
                spin_unlock_irqrestore(&dev->event_lock, flags);
                kfree(work);
-               drm_vblank_put(dev, intel_crtc->pipe);
+               drm_crtc_vblank_put(crtc);
 
                DRM_DEBUG_DRIVER("flip queue: crtc already busy\n");
                return -EBUSY;
        intel_crtc->unpin_work = NULL;
        spin_unlock_irqrestore(&dev->event_lock, flags);
 
-       drm_vblank_put(dev, intel_crtc->pipe);
+       drm_crtc_vblank_put(crtc);
 free_work:
        kfree(work);
 
        dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base;
 
        drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs);
+
+       WARN_ON(drm_crtc_index(&intel_crtc->base) != intel_crtc->pipe);
 }
 
 enum pipe intel_get_pipe_from_connector(struct intel_connector *connector)