spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);
 
-       drm_vblank_put(rdev->ddev, radeon_crtc->crtc_id);
+       drm_crtc_vblank_put(&radeon_crtc->base);
        radeon_irq_kms_pflip_irq_put(rdev, work->crtc_id);
        queue_work(radeon_crtc->flip_queue, &work->unpin_work);
 }
        }
        work->base = base;
 
-       r = drm_vblank_get(crtc->dev, radeon_crtc->crtc_id);
+       r = drm_crtc_vblank_get(crtc);
        if (r) {
                DRM_ERROR("failed to get vblank before flip\n");
                goto pflip_cleanup;
        return 0;
 
 vblank_cleanup:
-       drm_vblank_put(crtc->dev, radeon_crtc->crtc_id);
+       drm_crtc_vblank_put(&radeon_crtc->base);
 
 pflip_cleanup:
        if (unlikely(radeon_bo_reserve(new_rbo, false) != 0)) {
 
 
 static void radeon_pm_set_clocks(struct radeon_device *rdev)
 {
+       struct drm_crtc *crtc;
        int i, r;
 
        /* no need to take locks, etc. if nothing's going to change */
        radeon_unmap_vram_bos(rdev);
 
        if (rdev->irq.installed) {
-               for (i = 0; i < rdev->num_crtc; i++) {
+               i = 0;
+               drm_for_each_crtc(crtc, rdev->ddev) {
                        if (rdev->pm.active_crtcs & (1 << i)) {
                                /* This can fail if a modeset is in progress */
-                               if (drm_vblank_get(rdev->ddev, i) == 0)
+                               if (drm_crtc_vblank_get(crtc) == 0)
                                        rdev->pm.req_vblank |= (1 << i);
                                else
                                        DRM_DEBUG_DRIVER("crtc %d no vblank, can glitch\n",
                                                         i);
                        }
+                       i++;
                }
        }
 
        radeon_set_power_state(rdev);
 
        if (rdev->irq.installed) {
-               for (i = 0; i < rdev->num_crtc; i++) {
+               i = 0;
+               drm_for_each_crtc(crtc, rdev->ddev) {
                        if (rdev->pm.req_vblank & (1 << i)) {
                                rdev->pm.req_vblank &= ~(1 << i);
-                               drm_vblank_put(rdev->ddev, i);
+                               drm_crtc_vblank_put(crtc);
                        }
+                       i++;
                }
        }