spin_unlock_irq(&dev_priv->irq_lock);
 }
 
-void gen6_enable_rps_interrupts(struct drm_device *dev)
+void gen6_enable_rps_interrupts(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
        spin_lock_irq(&dev_priv->irq_lock);
 
        WARN_ON(dev_priv->rps.pm_iir);
        return mask;
 }
 
-void gen6_disable_rps_interrupts(struct drm_device *dev)
+void gen6_disable_rps_interrupts(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
        spin_lock_irq(&dev_priv->irq_lock);
        dev_priv->rps.interrupts_enabled = false;
        spin_unlock_irq(&dev_priv->irq_lock);
 
        spin_unlock_irq(&dev_priv->irq_lock);
 
-       synchronize_irq(dev->irq);
+       synchronize_irq(dev_priv->dev->irq);
 }
 
 /**
  * i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion
  * @dev: drm device
  */
-static void i915_enable_asle_pipestat(struct drm_device *dev)
+static void i915_enable_asle_pipestat(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
-       if (!dev_priv->opregion.asle || !IS_MOBILE(dev))
+       if (!dev_priv->opregion.asle || !IS_MOBILE(dev_priv))
                return;
 
        spin_lock_irq(&dev_priv->irq_lock);
 
        i915_enable_pipestat(dev_priv, PIPE_B, PIPE_LEGACY_BLC_EVENT_STATUS);
-       if (INTEL_INFO(dev)->gen >= 4)
+       if (INTEL_GEN(dev_priv) >= 4)
                i915_enable_pipestat(dev_priv, PIPE_A,
                                     PIPE_LEGACY_BLC_EVENT_STATUS);
 
        if (mode->flags & DRM_MODE_FLAG_INTERLACE)
                vtotal /= 2;
 
-       if (IS_GEN2(dev))
+       if (IS_GEN2(dev_priv))
                position = I915_READ_FW(PIPEDSL(pipe)) & DSL_LINEMASK_GEN2;
        else
                position = I915_READ_FW(PIPEDSL(pipe)) & DSL_LINEMASK_GEN3;
         * problem.  We may need to extend this to include other platforms,
         * but so far testing only shows the problem on HSW.
         */
-       if (HAS_DDI(dev) && !position) {
+       if (HAS_DDI(dev_priv) && !position) {
                int i, temp;
 
                for (i = 0; i < 100; i++) {
        if (stime)
                *stime = ktime_get();
 
-       if (IS_GEN2(dev) || IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5) {
+       if (IS_GEN2(dev_priv) || IS_G4X(dev_priv) || INTEL_GEN(dev_priv) >= 5) {
                /* No obvious pixelcount register. Only query vertical
                 * scanout position from Display scan line register.
                 */
        else
                position += vtotal - vbl_end;
 
-       if (IS_GEN2(dev) || IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5) {
+       if (IS_GEN2(dev_priv) || IS_G4X(dev_priv) || INTEL_GEN(dev_priv) >= 5) {
                *vpos = position;
                *hpos = 0;
        } else {
                                                     &crtc->hwmode);
 }
 
-static void ironlake_rps_change_irq_handler(struct drm_device *dev)
+static void ironlake_rps_change_irq_handler(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 busy_up, busy_down, max_avg, min_avg;
        u8 new_delay;
 
                        new_delay = dev_priv->ips.min_delay;
        }
 
-       if (ironlake_set_drps(dev, new_delay))
+       if (ironlake_set_drps(dev_priv, new_delay))
                dev_priv->ips.cur_delay = new_delay;
 
        spin_unlock(&mchdev_lock);
 
 }
 
-static void gmbus_irq_handler(struct drm_device *dev)
+static void gmbus_irq_handler(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
        wake_up_all(&dev_priv->gmbus_wait_queue);
 }
 
-static void dp_aux_irq_handler(struct drm_device *dev)
+static void dp_aux_irq_handler(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
        wake_up_all(&dev_priv->gmbus_wait_queue);
 }
 
 #if defined(CONFIG_DEBUG_FS)
-static void display_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe,
+static void display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
+                                        enum pipe pipe,
                                         uint32_t crc0, uint32_t crc1,
                                         uint32_t crc2, uint32_t crc3,
                                         uint32_t crc4)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
        struct intel_pipe_crc_entry *entry;
        int head, tail;
 
        entry = &pipe_crc->entries[head];
 
-       entry->frame = dev->driver->get_vblank_counter(dev, pipe);
+       entry->frame = dev_priv->dev->driver->get_vblank_counter(dev_priv->dev,
+                                                                pipe);
        entry->crc[0] = crc0;
        entry->crc[1] = crc1;
        entry->crc[2] = crc2;
 }
 #else
 static inline void
-display_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe,
+display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
+                            enum pipe pipe,
                             uint32_t crc0, uint32_t crc1,
                             uint32_t crc2, uint32_t crc3,
                             uint32_t crc4) {}
 #endif
 
 
-static void hsw_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void hsw_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
+                                    enum pipe pipe)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
-       display_pipe_crc_irq_handler(dev, pipe,
+       display_pipe_crc_irq_handler(dev_priv, pipe,
                                     I915_READ(PIPE_CRC_RES_1_IVB(pipe)),
                                     0, 0, 0, 0);
 }
 
-static void ivb_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void ivb_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
+                                    enum pipe pipe)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
-
-       display_pipe_crc_irq_handler(dev, pipe,
+       display_pipe_crc_irq_handler(dev_priv, pipe,
                                     I915_READ(PIPE_CRC_RES_1_IVB(pipe)),
                                     I915_READ(PIPE_CRC_RES_2_IVB(pipe)),
                                     I915_READ(PIPE_CRC_RES_3_IVB(pipe)),
                                     I915_READ(PIPE_CRC_RES_5_IVB(pipe)));
 }
 
-static void i9xx_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void i9xx_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
+                                     enum pipe pipe)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        uint32_t res1, res2;
 
-       if (INTEL_INFO(dev)->gen >= 3)
+       if (INTEL_GEN(dev_priv) >= 3)
                res1 = I915_READ(PIPE_CRC_RES_RES1_I915(pipe));
        else
                res1 = 0;
 
-       if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev))
+       if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
                res2 = I915_READ(PIPE_CRC_RES_RES2_G4X(pipe));
        else
                res2 = 0;
 
-       display_pipe_crc_irq_handler(dev, pipe,
+       display_pipe_crc_irq_handler(dev_priv, pipe,
                                     I915_READ(PIPE_CRC_RES_RED(pipe)),
                                     I915_READ(PIPE_CRC_RES_GREEN(pipe)),
                                     I915_READ(PIPE_CRC_RES_BLUE(pipe)),
        }
 }
 
-static bool intel_pipe_handle_vblank(struct drm_device *dev, enum pipe pipe)
+static bool intel_pipe_handle_vblank(struct drm_i915_private *dev_priv,
+                                    enum pipe pipe)
 {
-       if (!drm_handle_vblank(dev, pipe))
-               return false;
-
-       return true;
+       return drm_handle_vblank(dev_priv->dev, pipe);
 }
 
-static void valleyview_pipestat_irq_ack(struct drm_device *dev, u32 iir,
-                                       u32 pipe_stats[I915_MAX_PIPES])
+static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv,
+                                       u32 iir, u32 pipe_stats[I915_MAX_PIPES])
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        int pipe;
 
        spin_lock(&dev_priv->irq_lock);
        spin_unlock(&dev_priv->irq_lock);
 }
 
-static void valleyview_pipestat_irq_handler(struct drm_device *dev,
+static void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
                                            u32 pipe_stats[I915_MAX_PIPES])
 {
-       struct drm_i915_private *dev_priv = to_i915(dev);
        enum pipe pipe;
 
        for_each_pipe(dev_priv, pipe) {
                if (pipe_stats[pipe] & PIPE_START_VBLANK_INTERRUPT_STATUS &&
-                   intel_pipe_handle_vblank(dev, pipe))
-                       intel_check_page_flip(dev, pipe);
+                   intel_pipe_handle_vblank(dev_priv, pipe))
+                       intel_check_page_flip(dev_priv, pipe);
 
                if (pipe_stats[pipe] & PLANE_FLIP_DONE_INT_STATUS_VLV) {
-                       intel_prepare_page_flip(dev, pipe);
-                       intel_finish_page_flip(dev, pipe);
+                       intel_prepare_page_flip(dev_priv, pipe);
+                       intel_finish_page_flip(dev_priv, pipe);
                }
 
                if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
-                       i9xx_pipe_crc_irq_handler(dev, pipe);
+                       i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 
                if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS)
                        intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
        }
 
        if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
-               gmbus_irq_handler(dev);
+               gmbus_irq_handler(dev_priv);
 }
 
 static u32 i9xx_hpd_irq_ack(struct drm_i915_private *dev_priv)
        return hotplug_status;
 }
 
-static void i9xx_hpd_irq_handler(struct drm_device *dev,
+static void i9xx_hpd_irq_handler(struct drm_i915_private *dev_priv,
                                 u32 hotplug_status)
 {
        u32 pin_mask = 0, long_mask = 0;
 
-       if (IS_G4X(dev) || IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) {
+       if (IS_G4X(dev_priv) || IS_VALLEYVIEW(dev_priv) ||
+           IS_CHERRYVIEW(dev_priv)) {
                u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
 
                if (hotplug_trigger) {
                                           hotplug_trigger, hpd_status_g4x,
                                           i9xx_port_hotplug_long_detect);
 
-                       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+                       intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
                }
 
                if (hotplug_status & DP_AUX_CHANNEL_MASK_INT_STATUS_G4X)
-                       dp_aux_irq_handler(dev);
+                       dp_aux_irq_handler(dev_priv);
        } else {
                u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915;
 
                        intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
                                           hotplug_trigger, hpd_status_i915,
                                           i9xx_port_hotplug_long_detect);
-                       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+                       intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
                }
        }
 }
 
                /* Call regardless, as some status bits might not be
                 * signalled in iir */
-               valleyview_pipestat_irq_ack(dev, iir, pipe_stats);
+               valleyview_pipestat_irq_ack(dev_priv, iir, pipe_stats);
 
                /*
                 * VLV_IIR is single buffered, and reflects the level
                        gen6_rps_irq_handler(dev_priv, pm_iir);
 
                if (hotplug_status)
-                       i9xx_hpd_irq_handler(dev, hotplug_status);
+                       i9xx_hpd_irq_handler(dev_priv, hotplug_status);
 
-               valleyview_pipestat_irq_handler(dev, pipe_stats);
+               valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
        } while (0);
 
        enable_rpm_wakeref_asserts(dev_priv);
 
                /* Call regardless, as some status bits might not be
                 * signalled in iir */
-               valleyview_pipestat_irq_ack(dev, iir, pipe_stats);
+               valleyview_pipestat_irq_ack(dev_priv, iir, pipe_stats);
 
                /*
                 * VLV_IIR is single buffered, and reflects the level
                gen8_gt_irq_handler(dev_priv, gt_iir);
 
                if (hotplug_status)
-                       i9xx_hpd_irq_handler(dev, hotplug_status);
+                       i9xx_hpd_irq_handler(dev_priv, hotplug_status);
 
-               valleyview_pipestat_irq_handler(dev, pipe_stats);
+               valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
        } while (0);
 
        enable_rpm_wakeref_asserts(dev_priv);
        return ret;
 }
 
-static void ibx_hpd_irq_handler(struct drm_device *dev, u32 hotplug_trigger,
+static void ibx_hpd_irq_handler(struct drm_i915_private *dev_priv,
+                               u32 hotplug_trigger,
                                const u32 hpd[HPD_NUM_PINS])
 {
-       struct drm_i915_private *dev_priv = to_i915(dev);
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
        /*
                           dig_hotplug_reg, hpd,
                           pch_port_hotplug_long_detect);
 
-       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+       intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
 }
 
-static void ibx_irq_handler(struct drm_device *dev, u32 pch_iir)
+static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK;
 
-       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_ibx);
+       ibx_hpd_irq_handler(dev_priv, hotplug_trigger, hpd_ibx);
 
        if (pch_iir & SDE_AUDIO_POWER_MASK) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK) >>
        }
 
        if (pch_iir & SDE_AUX_MASK)
-               dp_aux_irq_handler(dev);
+               dp_aux_irq_handler(dev_priv);
 
        if (pch_iir & SDE_GMBUS)
-               gmbus_irq_handler(dev);
+               gmbus_irq_handler(dev_priv);
 
        if (pch_iir & SDE_AUDIO_HDCP_MASK)
                DRM_DEBUG_DRIVER("PCH HDCP audio interrupt\n");
                intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_B);
 }
 
-static void ivb_err_int_handler(struct drm_device *dev)
+static void ivb_err_int_handler(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 err_int = I915_READ(GEN7_ERR_INT);
        enum pipe pipe;
 
                        intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
 
                if (err_int & ERR_INT_PIPE_CRC_DONE(pipe)) {
-                       if (IS_IVYBRIDGE(dev))
-                               ivb_pipe_crc_irq_handler(dev, pipe);
+                       if (IS_IVYBRIDGE(dev_priv))
+                               ivb_pipe_crc_irq_handler(dev_priv, pipe);
                        else
-                               hsw_pipe_crc_irq_handler(dev, pipe);
+                               hsw_pipe_crc_irq_handler(dev_priv, pipe);
                }
        }
 
        I915_WRITE(GEN7_ERR_INT, err_int);
 }
 
-static void cpt_serr_int_handler(struct drm_device *dev)
+static void cpt_serr_int_handler(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 serr_int = I915_READ(SERR_INT);
 
        if (serr_int & SERR_INT_POISON)
        I915_WRITE(SERR_INT, serr_int);
 }
 
-static void cpt_irq_handler(struct drm_device *dev, u32 pch_iir)
+static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
 
-       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
+       ibx_hpd_irq_handler(dev_priv, hotplug_trigger, hpd_cpt);
 
        if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>
        }
 
        if (pch_iir & SDE_AUX_MASK_CPT)
-               dp_aux_irq_handler(dev);
+               dp_aux_irq_handler(dev_priv);
 
        if (pch_iir & SDE_GMBUS_CPT)
-               gmbus_irq_handler(dev);
+               gmbus_irq_handler(dev_priv);
 
        if (pch_iir & SDE_AUDIO_CP_REQ_CPT)
                DRM_DEBUG_DRIVER("Audio CP request interrupt\n");
                                         I915_READ(FDI_RX_IIR(pipe)));
 
        if (pch_iir & SDE_ERROR_CPT)
-               cpt_serr_int_handler(dev);
+               cpt_serr_int_handler(dev_priv);
 }
 
-static void spt_irq_handler(struct drm_device *dev, u32 pch_iir)
+static void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_SPT &
                ~SDE_PORTE_HOTPLUG_SPT;
        u32 hotplug2_trigger = pch_iir & SDE_PORTE_HOTPLUG_SPT;
        }
 
        if (pin_mask)
-               intel_hpd_irq_handler(dev, pin_mask, long_mask);
+               intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
 
        if (pch_iir & SDE_GMBUS_CPT)
-               gmbus_irq_handler(dev);
+               gmbus_irq_handler(dev_priv);
 }
 
-static void ilk_hpd_irq_handler(struct drm_device *dev, u32 hotplug_trigger,
+static void ilk_hpd_irq_handler(struct drm_i915_private *dev_priv,
+                               u32 hotplug_trigger,
                                const u32 hpd[HPD_NUM_PINS])
 {
-       struct drm_i915_private *dev_priv = to_i915(dev);
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
        dig_hotplug_reg = I915_READ(DIGITAL_PORT_HOTPLUG_CNTRL);
                           dig_hotplug_reg, hpd,
                           ilk_port_hotplug_long_detect);
 
-       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+       intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
 }
 
-static void ilk_display_irq_handler(struct drm_device *dev, u32 de_iir)
+static void ilk_display_irq_handler(struct drm_i915_private *dev_priv,
+                                   u32 de_iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        enum pipe pipe;
        u32 hotplug_trigger = de_iir & DE_DP_A_HOTPLUG;
 
        if (hotplug_trigger)
-               ilk_hpd_irq_handler(dev, hotplug_trigger, hpd_ilk);
+               ilk_hpd_irq_handler(dev_priv, hotplug_trigger, hpd_ilk);
 
        if (de_iir & DE_AUX_CHANNEL_A)
-               dp_aux_irq_handler(dev);
+               dp_aux_irq_handler(dev_priv);
 
        if (de_iir & DE_GSE)
-               intel_opregion_asle_intr(dev);
+               intel_opregion_asle_intr(dev_priv);
 
        if (de_iir & DE_POISON)
                DRM_ERROR("Poison interrupt\n");
 
        for_each_pipe(dev_priv, pipe) {
                if (de_iir & DE_PIPE_VBLANK(pipe) &&
-                   intel_pipe_handle_vblank(dev, pipe))
-                       intel_check_page_flip(dev, pipe);
+                   intel_pipe_handle_vblank(dev_priv, pipe))
+                       intel_check_page_flip(dev_priv, pipe);
 
                if (de_iir & DE_PIPE_FIFO_UNDERRUN(pipe))
                        intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
 
                if (de_iir & DE_PIPE_CRC_DONE(pipe))
-                       i9xx_pipe_crc_irq_handler(dev, pipe);
+                       i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 
                /* plane/pipes map 1:1 on ilk+ */
                if (de_iir & DE_PLANE_FLIP_DONE(pipe)) {
-                       intel_prepare_page_flip(dev, pipe);
-                       intel_finish_page_flip_plane(dev, pipe);
+                       intel_prepare_page_flip(dev_priv, pipe);
+                       intel_finish_page_flip_plane(dev_priv, pipe);
                }
        }
 
        if (de_iir & DE_PCH_EVENT) {
                u32 pch_iir = I915_READ(SDEIIR);
 
-               if (HAS_PCH_CPT(dev))
-                       cpt_irq_handler(dev, pch_iir);
+               if (HAS_PCH_CPT(dev_priv))
+                       cpt_irq_handler(dev_priv, pch_iir);
                else
-                       ibx_irq_handler(dev, pch_iir);
+                       ibx_irq_handler(dev_priv, pch_iir);
 
                /* should clear PCH hotplug event before clear CPU irq */
                I915_WRITE(SDEIIR, pch_iir);
        }
 
-       if (IS_GEN5(dev) && de_iir & DE_PCU_EVENT)
-               ironlake_rps_change_irq_handler(dev);
+       if (IS_GEN5(dev_priv) && de_iir & DE_PCU_EVENT)
+               ironlake_rps_change_irq_handler(dev_priv);
 }
 
-static void ivb_display_irq_handler(struct drm_device *dev, u32 de_iir)
+static void ivb_display_irq_handler(struct drm_i915_private *dev_priv,
+                                   u32 de_iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        enum pipe pipe;
        u32 hotplug_trigger = de_iir & DE_DP_A_HOTPLUG_IVB;
 
        if (hotplug_trigger)
-               ilk_hpd_irq_handler(dev, hotplug_trigger, hpd_ivb);
+               ilk_hpd_irq_handler(dev_priv, hotplug_trigger, hpd_ivb);
 
        if (de_iir & DE_ERR_INT_IVB)
-               ivb_err_int_handler(dev);
+               ivb_err_int_handler(dev_priv);
 
        if (de_iir & DE_AUX_CHANNEL_A_IVB)
-               dp_aux_irq_handler(dev);
+               dp_aux_irq_handler(dev_priv);
 
        if (de_iir & DE_GSE_IVB)
-               intel_opregion_asle_intr(dev);
+               intel_opregion_asle_intr(dev_priv);
 
        for_each_pipe(dev_priv, pipe) {
                if (de_iir & (DE_PIPE_VBLANK_IVB(pipe)) &&
-                   intel_pipe_handle_vblank(dev, pipe))
-                       intel_check_page_flip(dev, pipe);
+                   intel_pipe_handle_vblank(dev_priv, pipe))
+                       intel_check_page_flip(dev_priv, pipe);
 
                /* plane/pipes map 1:1 on ilk+ */
                if (de_iir & DE_PLANE_FLIP_DONE_IVB(pipe)) {
-                       intel_prepare_page_flip(dev, pipe);
-                       intel_finish_page_flip_plane(dev, pipe);
+                       intel_prepare_page_flip(dev_priv, pipe);
+                       intel_finish_page_flip_plane(dev_priv, pipe);
                }
        }
 
        /* check event from PCH */
-       if (!HAS_PCH_NOP(dev) && (de_iir & DE_PCH_EVENT_IVB)) {
+       if (!HAS_PCH_NOP(dev_priv) && (de_iir & DE_PCH_EVENT_IVB)) {
                u32 pch_iir = I915_READ(SDEIIR);
 
-               cpt_irq_handler(dev, pch_iir);
+               cpt_irq_handler(dev_priv, pch_iir);
 
                /* clear PCH hotplug event before clear CPU irq */
                I915_WRITE(SDEIIR, pch_iir);
         * able to process them after we restore SDEIER (as soon as we restore
         * it, we'll get an interrupt if SDEIIR still has something to process
         * due to its back queue). */
-       if (!HAS_PCH_NOP(dev)) {
+       if (!HAS_PCH_NOP(dev_priv)) {
                sde_ier = I915_READ(SDEIER);
                I915_WRITE(SDEIER, 0);
                POSTING_READ(SDEIER);
        if (gt_iir) {
                I915_WRITE(GTIIR, gt_iir);
                ret = IRQ_HANDLED;
-               if (INTEL_INFO(dev)->gen >= 6)
+               if (INTEL_GEN(dev_priv) >= 6)
                        snb_gt_irq_handler(dev_priv, gt_iir);
                else
                        ilk_gt_irq_handler(dev_priv, gt_iir);
        if (de_iir) {
                I915_WRITE(DEIIR, de_iir);
                ret = IRQ_HANDLED;
-               if (INTEL_INFO(dev)->gen >= 7)
-                       ivb_display_irq_handler(dev, de_iir);
+               if (INTEL_GEN(dev_priv) >= 7)
+                       ivb_display_irq_handler(dev_priv, de_iir);
                else
-                       ilk_display_irq_handler(dev, de_iir);
+                       ilk_display_irq_handler(dev_priv, de_iir);
        }
 
-       if (INTEL_INFO(dev)->gen >= 6) {
+       if (INTEL_GEN(dev_priv) >= 6) {
                u32 pm_iir = I915_READ(GEN6_PMIIR);
                if (pm_iir) {
                        I915_WRITE(GEN6_PMIIR, pm_iir);
 
        I915_WRITE(DEIER, de_ier);
        POSTING_READ(DEIER);
-       if (!HAS_PCH_NOP(dev)) {
+       if (!HAS_PCH_NOP(dev_priv)) {
                I915_WRITE(SDEIER, sde_ier);
                POSTING_READ(SDEIER);
        }
        return ret;
 }
 
-static void bxt_hpd_irq_handler(struct drm_device *dev, u32 hotplug_trigger,
+static void bxt_hpd_irq_handler(struct drm_i915_private *dev_priv,
+                               u32 hotplug_trigger,
                                const u32 hpd[HPD_NUM_PINS])
 {
-       struct drm_i915_private *dev_priv = to_i915(dev);
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
        dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
                           dig_hotplug_reg, hpd,
                           bxt_port_hotplug_long_detect);
 
-       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+       intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
 }
 
 static irqreturn_t
 gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
 {
-       struct drm_device *dev = dev_priv->dev;
        irqreturn_t ret = IRQ_NONE;
        u32 iir;
        enum pipe pipe;
                        I915_WRITE(GEN8_DE_MISC_IIR, iir);
                        ret = IRQ_HANDLED;
                        if (iir & GEN8_DE_MISC_GSE)
-                               intel_opregion_asle_intr(dev);
+                               intel_opregion_asle_intr(dev_priv);
                        else
                                DRM_ERROR("Unexpected DE Misc interrupt\n");
                }
                                            GEN9_AUX_CHANNEL_D;
 
                        if (iir & tmp_mask) {
-                               dp_aux_irq_handler(dev);
+                               dp_aux_irq_handler(dev_priv);
                                found = true;
                        }
 
                        if (IS_BROXTON(dev_priv)) {
                                tmp_mask = iir & BXT_DE_PORT_HOTPLUG_MASK;
                                if (tmp_mask) {
-                                       bxt_hpd_irq_handler(dev, tmp_mask, hpd_bxt);
+                                       bxt_hpd_irq_handler(dev_priv, tmp_mask,
+                                                           hpd_bxt);
                                        found = true;
                                }
                        } else if (IS_BROADWELL(dev_priv)) {
                                tmp_mask = iir & GEN8_PORT_DP_A_HOTPLUG;
                                if (tmp_mask) {
-                                       ilk_hpd_irq_handler(dev, tmp_mask, hpd_bdw);
+                                       ilk_hpd_irq_handler(dev_priv,
+                                                           tmp_mask, hpd_bdw);
                                        found = true;
                                }
                        }
 
-                       if (IS_BROXTON(dev) && (iir & BXT_DE_PORT_GMBUS)) {
-                               gmbus_irq_handler(dev);
+                       if (IS_BROXTON(dev_priv) && (iir & BXT_DE_PORT_GMBUS)) {
+                               gmbus_irq_handler(dev_priv);
                                found = true;
                        }
 
                I915_WRITE(GEN8_DE_PIPE_IIR(pipe), iir);
 
                if (iir & GEN8_PIPE_VBLANK &&
-                   intel_pipe_handle_vblank(dev, pipe))
-                       intel_check_page_flip(dev, pipe);
+                   intel_pipe_handle_vblank(dev_priv, pipe))
+                       intel_check_page_flip(dev_priv, pipe);
 
                flip_done = iir;
                if (INTEL_INFO(dev_priv)->gen >= 9)
                        flip_done &= GEN8_PIPE_PRIMARY_FLIP_DONE;
 
                if (flip_done) {
-                       intel_prepare_page_flip(dev, pipe);
-                       intel_finish_page_flip_plane(dev, pipe);
+                       intel_prepare_page_flip(dev_priv, pipe);
+                       intel_finish_page_flip_plane(dev_priv, pipe);
                }
 
                if (iir & GEN8_PIPE_CDCLK_CRC_DONE)
-                       hsw_pipe_crc_irq_handler(dev, pipe);
+                       hsw_pipe_crc_irq_handler(dev_priv, pipe);
 
                if (iir & GEN8_PIPE_FIFO_UNDERRUN)
                        intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
                                  fault_errors);
        }
 
-       if (HAS_PCH_SPLIT(dev) && !HAS_PCH_NOP(dev) &&
+       if (HAS_PCH_SPLIT(dev_priv) && !HAS_PCH_NOP(dev_priv) &&
            master_ctl & GEN8_DE_PCH_IRQ) {
                /*
                 * FIXME(BDW): Assume for now that the new interrupt handling
                        ret = IRQ_HANDLED;
 
                        if (HAS_PCH_SPT(dev_priv))
-                               spt_irq_handler(dev, iir);
+                               spt_irq_handler(dev_priv, iir);
                        else
-                               cpt_irq_handler(dev, iir);
+                               cpt_irq_handler(dev_priv, iir);
                } else {
                        /*
                         * Like on previous PCH there seems to be something
        spin_unlock_irq(&dev_priv->irq_lock);
 }
 
-static u32 intel_hpd_enabled_irqs(struct drm_device *dev,
+static u32 intel_hpd_enabled_irqs(struct drm_i915_private *dev_priv,
                                  const u32 hpd[HPD_NUM_PINS])
 {
-       struct drm_i915_private *dev_priv = to_i915(dev);
        struct intel_encoder *encoder;
        u32 enabled_irqs = 0;
 
-       for_each_intel_encoder(dev, encoder)
+       for_each_intel_encoder(dev_priv->dev, encoder)
                if (dev_priv->hotplug.stats[encoder->hpd_pin].state == HPD_ENABLED)
                        enabled_irqs |= hpd[encoder->hpd_pin];
 
        return enabled_irqs;
 }
 
-static void ibx_hpd_irq_setup(struct drm_device *dev)
+static void ibx_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_irqs, hotplug, enabled_irqs;
 
-       if (HAS_PCH_IBX(dev)) {
+       if (HAS_PCH_IBX(dev_priv)) {
                hotplug_irqs = SDE_HOTPLUG_MASK;
-               enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_ibx);
+               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_ibx);
        } else {
                hotplug_irqs = SDE_HOTPLUG_MASK_CPT;
-               enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_cpt);
+               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_cpt);
        }
 
        ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
         * When CPU and PCH are on the same package, port A
         * HPD must be enabled in both north and south.
         */
-       if (HAS_PCH_LPT_LP(dev))
+       if (HAS_PCH_LPT_LP(dev_priv))
                hotplug |= PORTA_HOTPLUG_ENABLE;
        I915_WRITE(PCH_PORT_HOTPLUG, hotplug);
 }
 
-static void spt_hpd_irq_setup(struct drm_device *dev)
+static void spt_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_irqs, hotplug, enabled_irqs;
 
        hotplug_irqs = SDE_HOTPLUG_MASK_SPT;
-       enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_spt);
+       enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_spt);
 
        ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
 
        I915_WRITE(PCH_PORT_HOTPLUG2, hotplug);
 }
 
-static void ilk_hpd_irq_setup(struct drm_device *dev)
+static void ilk_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_irqs, hotplug, enabled_irqs;
 
-       if (INTEL_INFO(dev)->gen >= 8) {
+       if (INTEL_GEN(dev_priv) >= 8) {
                hotplug_irqs = GEN8_PORT_DP_A_HOTPLUG;
-               enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_bdw);
+               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_bdw);
 
                bdw_update_port_irq(dev_priv, hotplug_irqs, enabled_irqs);
-       } else if (INTEL_INFO(dev)->gen >= 7) {
+       } else if (INTEL_GEN(dev_priv) >= 7) {
                hotplug_irqs = DE_DP_A_HOTPLUG_IVB;
-               enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_ivb);
+               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_ivb);
 
                ilk_update_display_irq(dev_priv, hotplug_irqs, enabled_irqs);
        } else {
                hotplug_irqs = DE_DP_A_HOTPLUG;
-               enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_ilk);
+               enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_ilk);
 
                ilk_update_display_irq(dev_priv, hotplug_irqs, enabled_irqs);
        }
        hotplug |= DIGITAL_PORTA_HOTPLUG_ENABLE | DIGITAL_PORTA_PULSE_DURATION_2ms;
        I915_WRITE(DIGITAL_PORT_HOTPLUG_CNTRL, hotplug);
 
-       ibx_hpd_irq_setup(dev);
+       ibx_hpd_irq_setup(dev_priv);
 }
 
-static void bxt_hpd_irq_setup(struct drm_device *dev)
+static void bxt_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_irqs, hotplug, enabled_irqs;
 
-       enabled_irqs = intel_hpd_enabled_irqs(dev, hpd_bxt);
+       enabled_irqs = intel_hpd_enabled_irqs(dev_priv, hpd_bxt);
        hotplug_irqs = BXT_DE_PORT_HOTPLUG_MASK;
 
        bdw_update_port_irq(dev_priv, hotplug_irqs, enabled_irqs);
 /*
  * Returns true when a page flip has completed.
  */
-static bool i8xx_handle_vblank(struct drm_device *dev,
+static bool i8xx_handle_vblank(struct drm_i915_private *dev_priv,
                               int plane, int pipe, u32 iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u16 flip_pending = DISPLAY_PLANE_FLIP_PENDING(plane);
 
-       if (!intel_pipe_handle_vblank(dev, pipe))
+       if (!intel_pipe_handle_vblank(dev_priv, pipe))
                return false;
 
        if ((iir & flip_pending) == 0)
        if (I915_READ16(ISR) & flip_pending)
                goto check_page_flip;
 
-       intel_prepare_page_flip(dev, plane);
-       intel_finish_page_flip(dev, pipe);
+       intel_prepare_page_flip(dev_priv, plane);
+       intel_finish_page_flip(dev_priv, pipe);
        return true;
 
 check_page_flip:
-       intel_check_page_flip(dev, pipe);
+       intel_check_page_flip(dev_priv, pipe);
        return false;
 }
 
 
                for_each_pipe(dev_priv, pipe) {
                        int plane = pipe;
-                       if (HAS_FBC(dev))
+                       if (HAS_FBC(dev_priv))
                                plane = !plane;
 
                        if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS &&
-                           i8xx_handle_vblank(dev, plane, pipe, iir))
+                           i8xx_handle_vblank(dev_priv, plane, pipe, iir))
                                flip_mask &= ~DISPLAY_PLANE_FLIP_PENDING(plane);
 
                        if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
-                               i9xx_pipe_crc_irq_handler(dev, pipe);
+                               i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 
                        if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS)
                                intel_cpu_fifo_underrun_irq_handler(dev_priv,
        I915_WRITE(IER, enable_mask);
        POSTING_READ(IER);
 
-       i915_enable_asle_pipestat(dev);
+       i915_enable_asle_pipestat(dev_priv);
 
        /* Interrupt setup is already guaranteed to be single-threaded, this is
         * just to make the assert_spin_locked check happy. */
 /*
  * Returns true when a page flip has completed.
  */
-static bool i915_handle_vblank(struct drm_device *dev,
+static bool i915_handle_vblank(struct drm_i915_private *dev_priv,
                               int plane, int pipe, u32 iir)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 flip_pending = DISPLAY_PLANE_FLIP_PENDING(plane);
 
-       if (!intel_pipe_handle_vblank(dev, pipe))
+       if (!intel_pipe_handle_vblank(dev_priv, pipe))
                return false;
 
        if ((iir & flip_pending) == 0)
        if (I915_READ(ISR) & flip_pending)
                goto check_page_flip;
 
-       intel_prepare_page_flip(dev, plane);
-       intel_finish_page_flip(dev, pipe);
+       intel_prepare_page_flip(dev_priv, plane);
+       intel_finish_page_flip(dev_priv, pipe);
        return true;
 
 check_page_flip:
-       intel_check_page_flip(dev, pipe);
+       intel_check_page_flip(dev_priv, pipe);
        return false;
 }
 
                        break;
 
                /* Consume port.  Then clear IIR or we'll miss events */
-               if (I915_HAS_HOTPLUG(dev) &&
+               if (I915_HAS_HOTPLUG(dev_priv) &&
                    iir & I915_DISPLAY_PORT_INTERRUPT) {
                        u32 hotplug_status = i9xx_hpd_irq_ack(dev_priv);
                        if (hotplug_status)
-                               i9xx_hpd_irq_handler(dev, hotplug_status);
+                               i9xx_hpd_irq_handler(dev_priv, hotplug_status);
                }
 
                I915_WRITE(IIR, iir & ~flip_mask);
 
                for_each_pipe(dev_priv, pipe) {
                        int plane = pipe;
-                       if (HAS_FBC(dev))
+                       if (HAS_FBC(dev_priv))
                                plane = !plane;
 
                        if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS &&
-                           i915_handle_vblank(dev, plane, pipe, iir))
+                           i915_handle_vblank(dev_priv, plane, pipe, iir))
                                flip_mask &= ~DISPLAY_PLANE_FLIP_PENDING(plane);
 
                        if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS)
                                blc_event = true;
 
                        if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
-                               i9xx_pipe_crc_irq_handler(dev, pipe);
+                               i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 
                        if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS)
                                intel_cpu_fifo_underrun_irq_handler(dev_priv,
                }
 
                if (blc_event || (iir & I915_ASLE_INTERRUPT))
-                       intel_opregion_asle_intr(dev);
+                       intel_opregion_asle_intr(dev_priv);
 
                /* With MSI, interrupts are only generated when iir
                 * transitions from zero to nonzero.  If another bit got
                         I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
        enable_mask |= I915_USER_INTERRUPT;
 
-       if (IS_G4X(dev))
+       if (IS_G4X(dev_priv))
                enable_mask |= I915_BSD_USER_INTERRUPT;
 
        /* Interrupt setup is already guaranteed to be single-threaded, this is
         * Enable some error detection, note the instruction error mask
         * bit is reserved, so we leave it masked.
         */
-       if (IS_G4X(dev)) {
+       if (IS_G4X(dev_priv)) {
                error_mask = ~(GM45_ERROR_PAGE_TABLE |
                               GM45_ERROR_MEM_PRIV |
                               GM45_ERROR_CP_PRIV |
        i915_hotplug_interrupt_update(dev_priv, 0xffffffff, 0);
        POSTING_READ(PORT_HOTPLUG_EN);
 
-       i915_enable_asle_pipestat(dev);
+       i915_enable_asle_pipestat(dev_priv);
 
        return 0;
 }
 
-static void i915_hpd_irq_setup(struct drm_device *dev)
+static void i915_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
-       struct drm_i915_private *dev_priv = dev->dev_private;
        u32 hotplug_en;
 
        assert_spin_locked(&dev_priv->irq_lock);
 
        /* Note HDMI and DP share hotplug bits */
        /* enable bits are the same for all generations */
-       hotplug_en = intel_hpd_enabled_irqs(dev, hpd_mask_i915);
+       hotplug_en = intel_hpd_enabled_irqs(dev_priv, hpd_mask_i915);
        /* Programming the CRT detection parameters tends
           to generate a spurious hotplug event about three
           seconds later.  So just do it once.
        */
-       if (IS_G4X(dev))
+       if (IS_G4X(dev_priv))
                hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64;
        hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50;
 
                if (iir & I915_DISPLAY_PORT_INTERRUPT) {
                        u32 hotplug_status = i9xx_hpd_irq_ack(dev_priv);
                        if (hotplug_status)
-                               i9xx_hpd_irq_handler(dev, hotplug_status);
+                               i9xx_hpd_irq_handler(dev_priv, hotplug_status);
                }
 
                I915_WRITE(IIR, iir & ~flip_mask);
 
                for_each_pipe(dev_priv, pipe) {
                        if (pipe_stats[pipe] & PIPE_START_VBLANK_INTERRUPT_STATUS &&
-                           i915_handle_vblank(dev, pipe, pipe, iir))
+                           i915_handle_vblank(dev_priv, pipe, pipe, iir))
                                flip_mask &= ~DISPLAY_PLANE_FLIP_PENDING(pipe);
 
                        if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS)
                                blc_event = true;
 
                        if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
-                               i9xx_pipe_crc_irq_handler(dev, pipe);
+                               i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 
                        if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS)
                                intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
                }
 
                if (blc_event || (iir & I915_ASLE_INTERRUPT))
-                       intel_opregion_asle_intr(dev);
+                       intel_opregion_asle_intr(dev_priv);
 
                if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
-                       gmbus_irq_handler(dev);
+                       gmbus_irq_handler(dev_priv);
 
                /* With MSI, interrupts are only generated when iir
                 * transitions from zero to nonzero.  If another bit got