Merge tag 'drm-intel-next-2021-01-04' of git://anongit.freedesktop.org/drm/drm-intel...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / i915_irq.c
index 6cdb052e385050c1e74f45c0a0fd066649d6a3e2..dd1971040bbcc63ee0f5567439b0befb9da180a4 100644 (file)
@@ -327,10 +327,10 @@ i915_hotplug_interrupt_update_locked(struct drm_i915_private *dev_priv,
        lockdep_assert_held(&dev_priv->irq_lock);
        drm_WARN_ON(&dev_priv->drm, bits & ~mask);
 
-       val = I915_READ(PORT_HOTPLUG_EN);
+       val = intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_EN);
        val &= ~mask;
        val |= bits;
-       I915_WRITE(PORT_HOTPLUG_EN, val);
+       intel_uncore_write(&dev_priv->uncore, PORT_HOTPLUG_EN, val);
 }
 
 /**
@@ -376,8 +376,8 @@ void ilk_update_display_irq(struct drm_i915_private *dev_priv,
        if (new_val != dev_priv->irq_mask &&
            !drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv))) {
                dev_priv->irq_mask = new_val;
-               I915_WRITE(DEIMR, dev_priv->irq_mask);
-               POSTING_READ(DEIMR);
+               intel_uncore_write(&dev_priv->uncore, DEIMR, dev_priv->irq_mask);
+               intel_uncore_posting_read(&dev_priv->uncore, DEIMR);
        }
 }
 
@@ -401,15 +401,15 @@ static void bdw_update_port_irq(struct drm_i915_private *dev_priv,
        if (drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv)))
                return;
 
-       old_val = I915_READ(GEN8_DE_PORT_IMR);
+       old_val = intel_uncore_read(&dev_priv->uncore, GEN8_DE_PORT_IMR);
 
        new_val = old_val;
        new_val &= ~interrupt_mask;
        new_val |= (~enabled_irq_mask & interrupt_mask);
 
        if (new_val != old_val) {
-               I915_WRITE(GEN8_DE_PORT_IMR, new_val);
-               POSTING_READ(GEN8_DE_PORT_IMR);
+               intel_uncore_write(&dev_priv->uncore, GEN8_DE_PORT_IMR, new_val);
+               intel_uncore_posting_read(&dev_priv->uncore, GEN8_DE_PORT_IMR);
        }
 }
 
@@ -440,8 +440,8 @@ void bdw_update_pipe_irq(struct drm_i915_private *dev_priv,
 
        if (new_val != dev_priv->de_irq_mask[pipe]) {
                dev_priv->de_irq_mask[pipe] = new_val;
-               I915_WRITE(GEN8_DE_PIPE_IMR(pipe), dev_priv->de_irq_mask[pipe]);
-               POSTING_READ(GEN8_DE_PIPE_IMR(pipe));
+               intel_uncore_write(&dev_priv->uncore, GEN8_DE_PIPE_IMR(pipe), dev_priv->de_irq_mask[pipe]);
+               intel_uncore_posting_read(&dev_priv->uncore, GEN8_DE_PIPE_IMR(pipe));
        }
 }
 
@@ -455,7 +455,7 @@ void ibx_display_interrupt_update(struct drm_i915_private *dev_priv,
                                  u32 interrupt_mask,
                                  u32 enabled_irq_mask)
 {
-       u32 sdeimr = I915_READ(SDEIMR);
+       u32 sdeimr = intel_uncore_read(&dev_priv->uncore, SDEIMR);
        sdeimr &= ~interrupt_mask;
        sdeimr |= (~enabled_irq_mask & interrupt_mask);
 
@@ -466,8 +466,8 @@ void ibx_display_interrupt_update(struct drm_i915_private *dev_priv,
        if (drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv)))
                return;
 
-       I915_WRITE(SDEIMR, sdeimr);
-       POSTING_READ(SDEIMR);
+       intel_uncore_write(&dev_priv->uncore, SDEIMR, sdeimr);
+       intel_uncore_posting_read(&dev_priv->uncore, SDEIMR);
 }
 
 u32 i915_pipestat_enable_mask(struct drm_i915_private *dev_priv,
@@ -533,8 +533,8 @@ void i915_enable_pipestat(struct drm_i915_private *dev_priv,
        dev_priv->pipestat_irq_mask[pipe] |= status_mask;
        enable_mask = i915_pipestat_enable_mask(dev_priv, pipe);
 
-       I915_WRITE(reg, enable_mask | status_mask);
-       POSTING_READ(reg);
+       intel_uncore_write(&dev_priv->uncore, reg, enable_mask | status_mask);
+       intel_uncore_posting_read(&dev_priv->uncore, reg);
 }
 
 void i915_disable_pipestat(struct drm_i915_private *dev_priv,
@@ -556,8 +556,8 @@ void i915_disable_pipestat(struct drm_i915_private *dev_priv,
        dev_priv->pipestat_irq_mask[pipe] &= ~status_mask;
        enable_mask = i915_pipestat_enable_mask(dev_priv, pipe);
 
-       I915_WRITE(reg, enable_mask | status_mask);
-       POSTING_READ(reg);
+       intel_uncore_write(&dev_priv->uncore, reg, enable_mask | status_mask);
+       intel_uncore_posting_read(&dev_priv->uncore, reg);
 }
 
 static bool i915_has_asle(struct drm_i915_private *dev_priv)
@@ -715,7 +715,7 @@ u32 g4x_get_vblank_counter(struct drm_crtc *crtc)
        if (!vblank->max_vblank_count)
                return 0;
 
-       return I915_READ(PIPE_FRMCOUNT_G4X(pipe));
+       return intel_uncore_read(&dev_priv->uncore, PIPE_FRMCOUNT_G4X(pipe));
 }
 
 /*
@@ -1004,9 +1004,9 @@ static void ivb_parity_work(struct work_struct *work)
        if (drm_WARN_ON(&dev_priv->drm, !dev_priv->l3_parity.which_slice))
                goto out;
 
-       misccpctl = I915_READ(GEN7_MISCCPCTL);
-       I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
-       POSTING_READ(GEN7_MISCCPCTL);
+       misccpctl = intel_uncore_read(&dev_priv->uncore, GEN7_MISCCPCTL);
+       intel_uncore_write(&dev_priv->uncore, GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE);
+       intel_uncore_posting_read(&dev_priv->uncore, GEN7_MISCCPCTL);
 
        while ((slice = ffs(dev_priv->l3_parity.which_slice)) != 0) {
                i915_reg_t reg;
@@ -1020,13 +1020,13 @@ static void ivb_parity_work(struct work_struct *work)
 
                reg = GEN7_L3CDERRST1(slice);
 
-               error_status = I915_READ(reg);
+               error_status = intel_uncore_read(&dev_priv->uncore, reg);
                row = GEN7_PARITY_ERROR_ROW(error_status);
                bank = GEN7_PARITY_ERROR_BANK(error_status);
                subbank = GEN7_PARITY_ERROR_SUBBANK(error_status);
 
-               I915_WRITE(reg, GEN7_PARITY_ERROR_VALID | GEN7_L3CDERRST1_ENABLE);
-               POSTING_READ(reg);
+               intel_uncore_write(&dev_priv->uncore, reg, GEN7_PARITY_ERROR_VALID | GEN7_L3CDERRST1_ENABLE);
+               intel_uncore_posting_read(&dev_priv->uncore, reg);
 
                parity_event[0] = I915_L3_PARITY_UEVENT "=1";
                parity_event[1] = kasprintf(GFP_KERNEL, "ROW=%d", row);
@@ -1047,7 +1047,7 @@ static void ivb_parity_work(struct work_struct *work)
                kfree(parity_event[1]);
        }
 
-       I915_WRITE(GEN7_MISCCPCTL, misccpctl);
+       intel_uncore_write(&dev_priv->uncore, GEN7_MISCCPCTL, misccpctl);
 
 out:
        drm_WARN_ON(&dev_priv->drm, dev_priv->l3_parity.which_slice);
@@ -1062,17 +1062,12 @@ static bool gen11_port_hotplug_long_detect(enum hpd_pin pin, u32 val)
 {
        switch (pin) {
        case HPD_PORT_TC1:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC1);
        case HPD_PORT_TC2:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC2);
        case HPD_PORT_TC3:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC3);
        case HPD_PORT_TC4:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC4);
        case HPD_PORT_TC5:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC5);
        case HPD_PORT_TC6:
-               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(HPD_PORT_TC6);
+               return val & GEN11_HOTPLUG_CTL_LONG_DETECT(pin);
        default:
                return false;
        }
@@ -1096,13 +1091,10 @@ static bool icp_ddi_port_hotplug_long_detect(enum hpd_pin pin, u32 val)
 {
        switch (pin) {
        case HPD_PORT_A:
-               return val & SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(HPD_PORT_A);
        case HPD_PORT_B:
-               return val & SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(HPD_PORT_B);
        case HPD_PORT_C:
-               return val & SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(HPD_PORT_C);
        case HPD_PORT_D:
-               return val & SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(HPD_PORT_D);
+               return val & SHOTPLUG_CTL_DDI_HPD_LONG_DETECT(pin);
        default:
                return false;
        }
@@ -1112,17 +1104,12 @@ static bool icp_tc_port_hotplug_long_detect(enum hpd_pin pin, u32 val)
 {
        switch (pin) {
        case HPD_PORT_TC1:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC1);
        case HPD_PORT_TC2:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC2);
        case HPD_PORT_TC3:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC3);
        case HPD_PORT_TC4:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC4);
        case HPD_PORT_TC5:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC5);
        case HPD_PORT_TC6:
-               return val & ICP_TC_HPD_LONG_DETECT(HPD_PORT_TC6);
+               return val & ICP_TC_HPD_LONG_DETECT(pin);
        default:
                return false;
        }
@@ -1337,7 +1324,7 @@ static void hsw_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
                                     enum pipe pipe)
 {
        display_pipe_crc_irq_handler(dev_priv, pipe,
-                                    I915_READ(PIPE_CRC_RES_1_IVB(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_1_IVB(pipe)),
                                     0, 0, 0, 0);
 }
 
@@ -1345,11 +1332,11 @@ static void ivb_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
                                     enum pipe 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_4_IVB(pipe)),
-                                    I915_READ(PIPE_CRC_RES_5_IVB(pipe)));
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_1_IVB(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_2_IVB(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_3_IVB(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_4_IVB(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_5_IVB(pipe)));
 }
 
 static void i9xx_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
@@ -1358,19 +1345,19 @@ static void i9xx_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
        u32 res1, res2;
 
        if (INTEL_GEN(dev_priv) >= 3)
-               res1 = I915_READ(PIPE_CRC_RES_RES1_I915(pipe));
+               res1 = intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_RES1_I915(pipe));
        else
                res1 = 0;
 
        if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
-               res2 = I915_READ(PIPE_CRC_RES_RES2_G4X(pipe));
+               res2 = intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_RES2_G4X(pipe));
        else
                res2 = 0;
 
        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)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_RED(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_GREEN(pipe)),
+                                    intel_uncore_read(&dev_priv->uncore, PIPE_CRC_RES_BLUE(pipe)),
                                     res1, res2);
 }
 
@@ -1379,7 +1366,7 @@ static void i9xx_pipestat_irq_reset(struct drm_i915_private *dev_priv)
        enum pipe pipe;
 
        for_each_pipe(dev_priv, pipe) {
-               I915_WRITE(PIPESTAT(pipe),
+               intel_uncore_write(&dev_priv->uncore, PIPESTAT(pipe),
                           PIPESTAT_INT_STATUS_MASK |
                           PIPE_FIFO_UNDERRUN_STATUS);
 
@@ -1433,7 +1420,7 @@ static void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv,
                        continue;
 
                reg = PIPESTAT(pipe);
-               pipe_stats[pipe] = I915_READ(reg) & status_mask;
+               pipe_stats[pipe] = intel_uncore_read(&dev_priv->uncore, reg) & status_mask;
                enable_mask = i915_pipestat_enable_mask(dev_priv, pipe);
 
                /*
@@ -1446,8 +1433,8 @@ static void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv,
                 * an interrupt is still pending.
                 */
                if (pipe_stats[pipe]) {
-                       I915_WRITE(reg, pipe_stats[pipe]);
-                       I915_WRITE(reg, enable_mask);
+                       intel_uncore_write(&dev_priv->uncore, reg, pipe_stats[pipe]);
+                       intel_uncore_write(&dev_priv->uncore, reg, enable_mask);
                }
        }
        spin_unlock(&dev_priv->irq_lock);
@@ -1563,18 +1550,18 @@ static u32 i9xx_hpd_irq_ack(struct drm_i915_private *dev_priv)
         * bits can itself generate a new hotplug interrupt :(
         */
        for (i = 0; i < 10; i++) {
-               u32 tmp = I915_READ(PORT_HOTPLUG_STAT) & hotplug_status_mask;
+               u32 tmp = intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_STAT) & hotplug_status_mask;
 
                if (tmp == 0)
                        return hotplug_status;
 
                hotplug_status |= tmp;
-               I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
+               intel_uncore_write(&dev_priv->uncore, PORT_HOTPLUG_STAT, hotplug_status);
        }
 
        drm_WARN_ONCE(&dev_priv->drm, 1,
                      "PORT_HOTPLUG_STAT did not clear (0x%08x)\n",
-                     I915_READ(PORT_HOTPLUG_STAT));
+                     intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_STAT));
 
        return hotplug_status;
 }
@@ -1623,9 +1610,9 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
                u32 hotplug_status = 0;
                u32 ier = 0;
 
-               gt_iir = I915_READ(GTIIR);
-               pm_iir = I915_READ(GEN6_PMIIR);
-               iir = I915_READ(VLV_IIR);
+               gt_iir = intel_uncore_read(&dev_priv->uncore, GTIIR);
+               pm_iir = intel_uncore_read(&dev_priv->uncore, GEN6_PMIIR);
+               iir = intel_uncore_read(&dev_priv->uncore, VLV_IIR);
 
                if (gt_iir == 0 && pm_iir == 0 && iir == 0)
                        break;
@@ -1645,14 +1632,14 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
                 * don't end up clearing all the VLV_IIR, GT_IIR, GEN6_PMIIR
                 * bits this time around.
                 */
-               I915_WRITE(VLV_MASTER_IER, 0);
-               ier = I915_READ(VLV_IER);
-               I915_WRITE(VLV_IER, 0);
+               intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, 0);
+               ier = intel_uncore_read(&dev_priv->uncore, VLV_IER);
+               intel_uncore_write(&dev_priv->uncore, VLV_IER, 0);
 
                if (gt_iir)
-                       I915_WRITE(GTIIR, gt_iir);
+                       intel_uncore_write(&dev_priv->uncore, GTIIR, gt_iir);
                if (pm_iir)
-                       I915_WRITE(GEN6_PMIIR, pm_iir);
+                       intel_uncore_write(&dev_priv->uncore, GEN6_PMIIR, pm_iir);
 
                if (iir & I915_DISPLAY_PORT_INTERRUPT)
                        hotplug_status = i9xx_hpd_irq_ack(dev_priv);
@@ -1670,10 +1657,10 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
                 * from PIPESTAT/PORT_HOTPLUG_STAT, hence clear it last.
                 */
                if (iir)
-                       I915_WRITE(VLV_IIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, VLV_IIR, iir);
 
-               I915_WRITE(VLV_IER, ier);
-               I915_WRITE(VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE);
+               intel_uncore_write(&dev_priv->uncore, VLV_IER, ier);
+               intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE);
 
                if (gt_iir)
                        gen6_gt_irq_handler(&dev_priv->gt, gt_iir);
@@ -1710,8 +1697,8 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
                u32 hotplug_status = 0;
                u32 ier = 0;
 
-               master_ctl = I915_READ(GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL;
-               iir = I915_READ(VLV_IIR);
+               master_ctl = intel_uncore_read(&dev_priv->uncore, GEN8_MASTER_IRQ) & ~GEN8_MASTER_IRQ_CONTROL;
+               iir = intel_uncore_read(&dev_priv->uncore, VLV_IIR);
 
                if (master_ctl == 0 && iir == 0)
                        break;
@@ -1731,9 +1718,9 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
                 * don't end up clearing all the VLV_IIR and GEN8_MASTER_IRQ_CONTROL
                 * bits this time around.
                 */
-               I915_WRITE(GEN8_MASTER_IRQ, 0);
-               ier = I915_READ(VLV_IER);
-               I915_WRITE(VLV_IER, 0);
+               intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, 0);
+               ier = intel_uncore_read(&dev_priv->uncore, VLV_IER);
+               intel_uncore_write(&dev_priv->uncore, VLV_IER, 0);
 
                gen8_gt_irq_handler(&dev_priv->gt, master_ctl);
 
@@ -1754,10 +1741,10 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
                 * from PIPESTAT/PORT_HOTPLUG_STAT, hence clear it last.
                 */
                if (iir)
-                       I915_WRITE(VLV_IIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, VLV_IIR, iir);
 
-               I915_WRITE(VLV_IER, ier);
-               I915_WRITE(GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL);
+               intel_uncore_write(&dev_priv->uncore, VLV_IER, ier);
+               intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL);
 
                if (hotplug_status)
                        i9xx_hpd_irq_handler(dev_priv, hotplug_status);
@@ -1783,7 +1770,7 @@ static void ibx_hpd_irq_handler(struct drm_i915_private *dev_priv,
         * zero. Not acking leads to "The master control interrupt lied (SDE)!"
         * errors.
         */
-       dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
+       dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
        if (!hotplug_trigger) {
                u32 mask = PORTA_HOTPLUG_STATUS_MASK |
                        PORTD_HOTPLUG_STATUS_MASK |
@@ -1792,7 +1779,7 @@ static void ibx_hpd_irq_handler(struct drm_i915_private *dev_priv,
                dig_hotplug_reg &= ~mask;
        }
 
-       I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, dig_hotplug_reg);
        if (!hotplug_trigger)
                return;
 
@@ -1837,7 +1824,7 @@ static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
                for_each_pipe(dev_priv, pipe)
                        drm_dbg(&dev_priv->drm, "  pipe %c FDI IIR: 0x%08x\n",
                                pipe_name(pipe),
-                               I915_READ(FDI_RX_IIR(pipe)));
+                               intel_uncore_read(&dev_priv->uncore, FDI_RX_IIR(pipe)));
        }
 
        if (pch_iir & (SDE_TRANSB_CRC_DONE | SDE_TRANSA_CRC_DONE))
@@ -1856,7 +1843,7 @@ static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
 
 static void ivb_err_int_handler(struct drm_i915_private *dev_priv)
 {
-       u32 err_int = I915_READ(GEN7_ERR_INT);
+       u32 err_int = intel_uncore_read(&dev_priv->uncore, GEN7_ERR_INT);
        enum pipe pipe;
 
        if (err_int & ERR_INT_POISON)
@@ -1874,12 +1861,12 @@ static void ivb_err_int_handler(struct drm_i915_private *dev_priv)
                }
        }
 
-       I915_WRITE(GEN7_ERR_INT, err_int);
+       intel_uncore_write(&dev_priv->uncore, GEN7_ERR_INT, err_int);
 }
 
 static void cpt_serr_int_handler(struct drm_i915_private *dev_priv)
 {
-       u32 serr_int = I915_READ(SERR_INT);
+       u32 serr_int = intel_uncore_read(&dev_priv->uncore, SERR_INT);
        enum pipe pipe;
 
        if (serr_int & SERR_INT_POISON)
@@ -1889,7 +1876,7 @@ static void cpt_serr_int_handler(struct drm_i915_private *dev_priv)
                if (serr_int & SERR_INT_TRANS_FIFO_UNDERRUN(pipe))
                        intel_pch_fifo_underrun_irq_handler(dev_priv, pipe);
 
-       I915_WRITE(SERR_INT, serr_int);
+       intel_uncore_write(&dev_priv->uncore, SERR_INT, serr_int);
 }
 
 static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
@@ -1922,7 +1909,7 @@ static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
                for_each_pipe(dev_priv, pipe)
                        drm_dbg(&dev_priv->drm, "  pipe %c FDI IIR: 0x%08x\n",
                                pipe_name(pipe),
-                               I915_READ(FDI_RX_IIR(pipe)));
+                               intel_uncore_read(&dev_priv->uncore, FDI_RX_IIR(pipe)));
        }
 
        if (pch_iir & SDE_ERROR_CPT)
@@ -1938,8 +1925,8 @@ static void icp_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
        if (ddi_hotplug_trigger) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(SHOTPLUG_CTL_DDI);
-               I915_WRITE(SHOTPLUG_CTL_DDI, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_DDI);
+               intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_DDI, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   ddi_hotplug_trigger, dig_hotplug_reg,
@@ -1950,8 +1937,8 @@ static void icp_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
        if (tc_hotplug_trigger) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(SHOTPLUG_CTL_TC);
-               I915_WRITE(SHOTPLUG_CTL_TC, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_TC);
+               intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_TC, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   tc_hotplug_trigger, dig_hotplug_reg,
@@ -1976,8 +1963,8 @@ static void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
        if (hotplug_trigger) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
-               I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
+               intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   hotplug_trigger, dig_hotplug_reg,
@@ -1988,8 +1975,8 @@ static void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
        if (hotplug2_trigger) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG2);
-               I915_WRITE(PCH_PORT_HOTPLUG2, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG2);
+               intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG2, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   hotplug2_trigger, dig_hotplug_reg,
@@ -2009,8 +1996,8 @@ static void ilk_hpd_irq_handler(struct drm_i915_private *dev_priv,
 {
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
-       dig_hotplug_reg = I915_READ(DIGITAL_PORT_HOTPLUG_CNTRL);
-       I915_WRITE(DIGITAL_PORT_HOTPLUG_CNTRL, dig_hotplug_reg);
+       dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, DIGITAL_PORT_HOTPLUG_CNTRL);
+       intel_uncore_write(&dev_priv->uncore, DIGITAL_PORT_HOTPLUG_CNTRL, dig_hotplug_reg);
 
        intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                           hotplug_trigger, dig_hotplug_reg,
@@ -2051,7 +2038,7 @@ static void ilk_display_irq_handler(struct drm_i915_private *dev_priv,
 
        /* check event from PCH */
        if (de_iir & DE_PCH_EVENT) {
-               u32 pch_iir = I915_READ(SDEIIR);
+               u32 pch_iir = intel_uncore_read(&dev_priv->uncore, SDEIIR);
 
                if (HAS_PCH_CPT(dev_priv))
                        cpt_irq_handler(dev_priv, pch_iir);
@@ -2059,7 +2046,7 @@ static void ilk_display_irq_handler(struct drm_i915_private *dev_priv,
                        ibx_irq_handler(dev_priv, pch_iir);
 
                /* should clear PCH hotplug event before clear CPU irq */
-               I915_WRITE(SDEIIR, pch_iir);
+               intel_uncore_write(&dev_priv->uncore, SDEIIR, pch_iir);
        }
 
        if (IS_GEN(dev_priv, 5) && de_iir & DE_PCU_EVENT)
@@ -2079,10 +2066,10 @@ static void ivb_display_irq_handler(struct drm_i915_private *dev_priv,
                ivb_err_int_handler(dev_priv);
 
        if (de_iir & DE_EDP_PSR_INT_HSW) {
-               u32 psr_iir = I915_READ(EDP_PSR_IIR);
+               u32 psr_iir = intel_uncore_read(&dev_priv->uncore, EDP_PSR_IIR);
 
                intel_psr_irq_handler(dev_priv, psr_iir);
-               I915_WRITE(EDP_PSR_IIR, psr_iir);
+               intel_uncore_write(&dev_priv->uncore, EDP_PSR_IIR, psr_iir);
        }
 
        if (de_iir & DE_AUX_CHANNEL_A_IVB)
@@ -2098,12 +2085,12 @@ static void ivb_display_irq_handler(struct drm_i915_private *dev_priv,
 
        /* check event from PCH */
        if (!HAS_PCH_NOP(dev_priv) && (de_iir & DE_PCH_EVENT_IVB)) {
-               u32 pch_iir = I915_READ(SDEIIR);
+               u32 pch_iir = intel_uncore_read(&dev_priv->uncore, SDEIIR);
 
                cpt_irq_handler(dev_priv, pch_iir);
 
                /* clear PCH hotplug event before clear CPU irq */
-               I915_WRITE(SDEIIR, pch_iir);
+               intel_uncore_write(&dev_priv->uncore, SDEIIR, pch_iir);
        }
 }
 
@@ -2190,8 +2177,8 @@ static void bxt_hpd_irq_handler(struct drm_i915_private *dev_priv,
 {
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
-       dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
-       I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+       dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, dig_hotplug_reg);
 
        intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                           hotplug_trigger, dig_hotplug_reg,
@@ -2210,8 +2197,8 @@ static void gen11_hpd_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
        if (trigger_tc) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(GEN11_TC_HOTPLUG_CTL);
-               I915_WRITE(GEN11_TC_HOTPLUG_CTL, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, GEN11_TC_HOTPLUG_CTL);
+               intel_uncore_write(&dev_priv->uncore, GEN11_TC_HOTPLUG_CTL, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   trigger_tc, dig_hotplug_reg,
@@ -2222,8 +2209,8 @@ static void gen11_hpd_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
        if (trigger_tbt) {
                u32 dig_hotplug_reg;
 
-               dig_hotplug_reg = I915_READ(GEN11_TBT_HOTPLUG_CTL);
-               I915_WRITE(GEN11_TBT_HOTPLUG_CTL, dig_hotplug_reg);
+               dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, GEN11_TBT_HOTPLUG_CTL);
+               intel_uncore_write(&dev_priv->uncore, GEN11_TBT_HOTPLUG_CTL, dig_hotplug_reg);
 
                intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
                                   trigger_tbt, dig_hotplug_reg,
@@ -2300,8 +2287,8 @@ gen8_de_misc_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
                else
                        iir_reg = EDP_PSR_IIR;
 
-               psr_iir = I915_READ(iir_reg);
-               I915_WRITE(iir_reg, psr_iir);
+               psr_iir = intel_uncore_read(&dev_priv->uncore, iir_reg);
+               intel_uncore_write(&dev_priv->uncore, iir_reg, psr_iir);
 
                if (psr_iir)
                        found = true;
@@ -2325,7 +2312,7 @@ static void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
         * Incase of dual link, TE comes from DSI_1
         * this is to check if dual link is enabled
         */
-       val = I915_READ(TRANS_DDI_FUNC_CTL2(TRANSCODER_DSI_0));
+       val = intel_uncore_read(&dev_priv->uncore, TRANS_DDI_FUNC_CTL2(TRANSCODER_DSI_0));
        val &= PORT_SYNC_MODE_ENABLE;
 
        /*
@@ -2337,7 +2324,7 @@ static void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
        dsi_trans = (port == PORT_A) ? TRANSCODER_DSI_0 : TRANSCODER_DSI_1;
 
        /* Check if DSI configured in command mode */
-       val = I915_READ(DSI_TRANS_FUNC_CONF(dsi_trans));
+       val = intel_uncore_read(&dev_priv->uncore, DSI_TRANS_FUNC_CONF(dsi_trans));
        val = val & OP_MODE_MASK;
 
        if (val != CMD_MODE_NO_GATE && val != CMD_MODE_TE_GATE) {
@@ -2346,7 +2333,7 @@ static void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
        }
 
        /* Get PIPE for handling VBLANK event */
-       val = I915_READ(TRANS_DDI_FUNC_CTL(dsi_trans));
+       val = intel_uncore_read(&dev_priv->uncore, TRANS_DDI_FUNC_CTL(dsi_trans));
        switch (val & TRANS_DDI_EDP_INPUT_MASK) {
        case TRANS_DDI_EDP_INPUT_A_ON:
                pipe = PIPE_A;
@@ -2366,8 +2353,8 @@ static void gen11_dsi_te_interrupt_handler(struct drm_i915_private *dev_priv,
 
        /* clear TE in dsi IIR */
        port = (te_trigger & DSI1_TE) ? PORT_B : PORT_A;
-       tmp = I915_READ(DSI_INTR_IDENT_REG(port));
-       I915_WRITE(DSI_INTR_IDENT_REG(port), tmp);
+       tmp = intel_uncore_read(&dev_priv->uncore, DSI_INTR_IDENT_REG(port));
+       intel_uncore_write(&dev_priv->uncore, DSI_INTR_IDENT_REG(port), tmp);
 }
 
 static irqreturn_t
@@ -2378,9 +2365,9 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
        enum pipe pipe;
 
        if (master_ctl & GEN8_DE_MISC_IRQ) {
-               iir = I915_READ(GEN8_DE_MISC_IIR);
+               iir = intel_uncore_read(&dev_priv->uncore, GEN8_DE_MISC_IIR);
                if (iir) {
-                       I915_WRITE(GEN8_DE_MISC_IIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, GEN8_DE_MISC_IIR, iir);
                        ret = IRQ_HANDLED;
                        gen8_de_misc_irq_handler(dev_priv, iir);
                } else {
@@ -2390,9 +2377,9 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
        }
 
        if (INTEL_GEN(dev_priv) >= 11 && (master_ctl & GEN11_DE_HPD_IRQ)) {
-               iir = I915_READ(GEN11_DE_HPD_IIR);
+               iir = intel_uncore_read(&dev_priv->uncore, GEN11_DE_HPD_IIR);
                if (iir) {
-                       I915_WRITE(GEN11_DE_HPD_IIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, GEN11_DE_HPD_IIR, iir);
                        ret = IRQ_HANDLED;
                        gen11_hpd_irq_handler(dev_priv, iir);
                } else {
@@ -2402,11 +2389,11 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
        }
 
        if (master_ctl & GEN8_DE_PORT_IRQ) {
-               iir = I915_READ(GEN8_DE_PORT_IIR);
+               iir = intel_uncore_read(&dev_priv->uncore, GEN8_DE_PORT_IIR);
                if (iir) {
                        bool found = false;
 
-                       I915_WRITE(GEN8_DE_PORT_IIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, GEN8_DE_PORT_IIR, iir);
                        ret = IRQ_HANDLED;
 
                        if (iir & gen8_de_port_aux_mask(dev_priv)) {
@@ -2459,7 +2446,7 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                if (!(master_ctl & GEN8_DE_PIPE_IRQ(pipe)))
                        continue;
 
-               iir = I915_READ(GEN8_DE_PIPE_IIR(pipe));
+               iir = intel_uncore_read(&dev_priv->uncore, GEN8_DE_PIPE_IIR(pipe));
                if (!iir) {
                        drm_err(&dev_priv->drm,
                                "The master control interrupt lied (DE PIPE)!\n");
@@ -2467,7 +2454,7 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                }
 
                ret = IRQ_HANDLED;
-               I915_WRITE(GEN8_DE_PIPE_IIR(pipe), iir);
+               intel_uncore_write(&dev_priv->uncore, GEN8_DE_PIPE_IIR(pipe), iir);
 
                if (iir & GEN8_PIPE_VBLANK)
                        intel_handle_vblank(dev_priv, pipe);
@@ -2496,9 +2483,9 @@ gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)
                 * scheme also closed the SDE interrupt handling race we've seen
                 * on older pch-split platforms. But this needs testing.
                 */
-               iir = I915_READ(SDEIIR);
+               iir = intel_uncore_read(&dev_priv->uncore, SDEIIR);
                if (iir) {
-                       I915_WRITE(SDEIIR, iir);
+                       intel_uncore_write(&dev_priv->uncore, SDEIIR, iir);
                        ret = IRQ_HANDLED;
 
                        if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
@@ -2741,7 +2728,7 @@ int i915gm_enable_vblank(struct drm_crtc *crtc)
         * only when vblank interrupts are actually enabled.
         */
        if (dev_priv->vblank_enabled++ == 0)
-               I915_WRITE(SCPD0, _MASKED_BIT_ENABLE(CSTATE_RENDER_CLOCK_GATE_DISABLE));
+               intel_uncore_write(&dev_priv->uncore, SCPD0, _MASKED_BIT_ENABLE(CSTATE_RENDER_CLOCK_GATE_DISABLE));
 
        return i8xx_enable_vblank(crtc);
 }
@@ -2798,16 +2785,16 @@ static bool gen11_dsi_configure_te(struct intel_crtc *intel_crtc,
        else
                port = PORT_A;
 
-       tmp =  I915_READ(DSI_INTR_MASK_REG(port));
+       tmp =  intel_uncore_read(&dev_priv->uncore, DSI_INTR_MASK_REG(port));
        if (enable)
                tmp &= ~DSI_TE_EVENT;
        else
                tmp |= DSI_TE_EVENT;
 
-       I915_WRITE(DSI_INTR_MASK_REG(port), tmp);
+       intel_uncore_write(&dev_priv->uncore, DSI_INTR_MASK_REG(port), tmp);
 
-       tmp = I915_READ(DSI_INTR_IDENT_REG(port));
-       I915_WRITE(DSI_INTR_IDENT_REG(port), tmp);
+       tmp = intel_uncore_read(&dev_priv->uncore, DSI_INTR_IDENT_REG(port));
+       intel_uncore_write(&dev_priv->uncore, DSI_INTR_IDENT_REG(port), tmp);
 
        return true;
 }
@@ -2869,7 +2856,7 @@ void i915gm_disable_vblank(struct drm_crtc *crtc)
        i8xx_disable_vblank(crtc);
 
        if (--dev_priv->vblank_enabled == 0)
-               I915_WRITE(SCPD0, _MASKED_BIT_DISABLE(CSTATE_RENDER_CLOCK_GATE_DISABLE));
+               intel_uncore_write(&dev_priv->uncore, SCPD0, _MASKED_BIT_DISABLE(CSTATE_RENDER_CLOCK_GATE_DISABLE));
 }
 
 void i965_disable_vblank(struct drm_crtc *crtc)
@@ -2935,7 +2922,7 @@ static void ibx_irq_reset(struct drm_i915_private *dev_priv)
        GEN3_IRQ_RESET(uncore, SDE);
 
        if (HAS_PCH_CPT(dev_priv) || HAS_PCH_LPT(dev_priv))
-               I915_WRITE(SERR_INT, 0xffffffff);
+               intel_uncore_write(&dev_priv->uncore, SERR_INT, 0xffffffff);
 }
 
 static void vlv_display_irq_reset(struct drm_i915_private *dev_priv)
@@ -2948,7 +2935,7 @@ static void vlv_display_irq_reset(struct drm_i915_private *dev_priv)
                intel_uncore_write(uncore, DPINVGTT, DPINVGTT_STATUS_MASK);
 
        i915_hotplug_interrupt_update_locked(dev_priv, 0xffffffff, 0);
-       intel_uncore_write(uncore, PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT));
+       intel_uncore_write(uncore, PORT_HOTPLUG_STAT, intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_STAT));
 
        i9xx_pipestat_irq_reset(dev_priv);
 
@@ -3011,8 +2998,8 @@ static void ilk_irq_reset(struct drm_i915_private *dev_priv)
 
 static void valleyview_irq_reset(struct drm_i915_private *dev_priv)
 {
-       I915_WRITE(VLV_MASTER_IER, 0);
-       POSTING_READ(VLV_MASTER_IER);
+       intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, 0);
+       intel_uncore_posting_read(&dev_priv->uncore, VLV_MASTER_IER);
 
        gen5_gt_irq_reset(&dev_priv->gt);
 
@@ -3165,8 +3152,8 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv)
 {
        struct intel_uncore *uncore = &dev_priv->uncore;
 
-       I915_WRITE(GEN8_MASTER_IRQ, 0);
-       POSTING_READ(GEN8_MASTER_IRQ);
+       intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, 0);
+       intel_uncore_posting_read(&dev_priv->uncore, GEN8_MASTER_IRQ);
 
        gen8_gt_irq_reset(&dev_priv->gt);
 
@@ -3212,7 +3199,7 @@ static void ibx_hpd_detection_setup(struct drm_i915_private *dev_priv)
         * duration to 2ms (which is the minimum in the Display Port spec).
         * The pulse duration bits are reserved on LPT+.
         */
-       hotplug = I915_READ(PCH_PORT_HOTPLUG);
+       hotplug = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
        hotplug &= ~(PORTA_HOTPLUG_ENABLE |
                     PORTB_HOTPLUG_ENABLE |
                     PORTC_HOTPLUG_ENABLE |
@@ -3221,7 +3208,7 @@ static void ibx_hpd_detection_setup(struct drm_i915_private *dev_priv)
                     PORTC_PULSE_DURATION_MASK |
                     PORTD_PULSE_DURATION_MASK);
        hotplug |= intel_hpd_hotplug_enables(dev_priv, ibx_hotplug_enables);
-       I915_WRITE(PCH_PORT_HOTPLUG, hotplug);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, hotplug);
 }
 
 static void ibx_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3270,20 +3257,20 @@ static void icp_ddi_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
 
-       hotplug = I915_READ(SHOTPLUG_CTL_DDI);
+       hotplug = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_DDI);
        hotplug &= ~(SHOTPLUG_CTL_DDI_HPD_ENABLE(HPD_PORT_A) |
                     SHOTPLUG_CTL_DDI_HPD_ENABLE(HPD_PORT_B) |
                     SHOTPLUG_CTL_DDI_HPD_ENABLE(HPD_PORT_C) |
                     SHOTPLUG_CTL_DDI_HPD_ENABLE(HPD_PORT_D));
        hotplug |= intel_hpd_hotplug_enables(dev_priv, icp_ddi_hotplug_enables);
-       I915_WRITE(SHOTPLUG_CTL_DDI, hotplug);
+       intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_DDI, hotplug);
 }
 
 static void icp_tc_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
 
-       hotplug = I915_READ(SHOTPLUG_CTL_TC);
+       hotplug = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_TC);
        hotplug &= ~(ICP_TC_HPD_ENABLE(HPD_PORT_TC1) |
                     ICP_TC_HPD_ENABLE(HPD_PORT_TC2) |
                     ICP_TC_HPD_ENABLE(HPD_PORT_TC3) |
@@ -3291,7 +3278,7 @@ static void icp_tc_hpd_detection_setup(struct drm_i915_private *dev_priv)
                     ICP_TC_HPD_ENABLE(HPD_PORT_TC5) |
                     ICP_TC_HPD_ENABLE(HPD_PORT_TC6));
        hotplug |= intel_hpd_hotplug_enables(dev_priv, icp_tc_hotplug_enables);
-       I915_WRITE(SHOTPLUG_CTL_TC, hotplug);
+       intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_TC, hotplug);
 }
 
 static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3302,7 +3289,7 @@ static void icp_hpd_irq_setup(struct drm_i915_private *dev_priv)
        hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.pch_hpd);
 
        if (INTEL_PCH_TYPE(dev_priv) <= PCH_TGP)
-               I915_WRITE(SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
+               intel_uncore_write(&dev_priv->uncore, SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
 
        ibx_display_interrupt_update(dev_priv, hotplug_irqs, enabled_irqs);
 
@@ -3330,12 +3317,12 @@ static void dg1_hpd_irq_setup(struct drm_i915_private *dev_priv)
 {
        u32 val;
 
-       val = I915_READ(SOUTH_CHICKEN1);
+       val = intel_uncore_read(&dev_priv->uncore, SOUTH_CHICKEN1);
        val |= (INVERT_DDIA_HPD |
                INVERT_DDIB_HPD |
                INVERT_DDIC_HPD |
                INVERT_DDID_HPD);
-       I915_WRITE(SOUTH_CHICKEN1, val);
+       intel_uncore_write(&dev_priv->uncore, SOUTH_CHICKEN1, val);
 
        icp_hpd_irq_setup(dev_priv);
 }
@@ -3344,7 +3331,7 @@ static void gen11_tc_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
 
-       hotplug = I915_READ(GEN11_TC_HOTPLUG_CTL);
+       hotplug = intel_uncore_read(&dev_priv->uncore, GEN11_TC_HOTPLUG_CTL);
        hotplug &= ~(GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC1) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC2) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC3) |
@@ -3352,14 +3339,14 @@ static void gen11_tc_hpd_detection_setup(struct drm_i915_private *dev_priv)
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC5) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC6));
        hotplug |= intel_hpd_hotplug_enables(dev_priv, gen11_hotplug_enables);
-       I915_WRITE(GEN11_TC_HOTPLUG_CTL, hotplug);
+       intel_uncore_write(&dev_priv->uncore, GEN11_TC_HOTPLUG_CTL, hotplug);
 }
 
 static void gen11_tbt_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
 
-       hotplug = I915_READ(GEN11_TBT_HOTPLUG_CTL);
+       hotplug = intel_uncore_read(&dev_priv->uncore, GEN11_TBT_HOTPLUG_CTL);
        hotplug &= ~(GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC1) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC2) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC3) |
@@ -3367,7 +3354,7 @@ static void gen11_tbt_hpd_detection_setup(struct drm_i915_private *dev_priv)
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC5) |
                     GEN11_HOTPLUG_CTL_ENABLE(HPD_PORT_TC6));
        hotplug |= intel_hpd_hotplug_enables(dev_priv, gen11_hotplug_enables);
-       I915_WRITE(GEN11_TBT_HOTPLUG_CTL, hotplug);
+       intel_uncore_write(&dev_priv->uncore, GEN11_TBT_HOTPLUG_CTL, hotplug);
 }
 
 static void gen11_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3378,11 +3365,11 @@ static void gen11_hpd_irq_setup(struct drm_i915_private *dev_priv)
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.hpd);
        hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.hpd);
 
-       val = I915_READ(GEN11_DE_HPD_IMR);
+       val = intel_uncore_read(&dev_priv->uncore, GEN11_DE_HPD_IMR);
        val &= ~hotplug_irqs;
        val |= ~enabled_irqs & hotplug_irqs;
-       I915_WRITE(GEN11_DE_HPD_IMR, val);
-       POSTING_READ(GEN11_DE_HPD_IMR);
+       intel_uncore_write(&dev_priv->uncore, GEN11_DE_HPD_IMR, val);
+       intel_uncore_posting_read(&dev_priv->uncore, GEN11_DE_HPD_IMR);
 
        gen11_tc_hpd_detection_setup(dev_priv);
        gen11_tbt_hpd_detection_setup(dev_priv);
@@ -3425,25 +3412,25 @@ static void spt_hpd_detection_setup(struct drm_i915_private *dev_priv)
 
        /* Display WA #1179 WaHardHangonHotPlug: cnp */
        if (HAS_PCH_CNP(dev_priv)) {
-               val = I915_READ(SOUTH_CHICKEN1);
+               val = intel_uncore_read(&dev_priv->uncore, SOUTH_CHICKEN1);
                val &= ~CHASSIS_CLK_REQ_DURATION_MASK;
                val |= CHASSIS_CLK_REQ_DURATION(0xf);
-               I915_WRITE(SOUTH_CHICKEN1, val);
+               intel_uncore_write(&dev_priv->uncore, SOUTH_CHICKEN1, val);
        }
 
        /* Enable digital hotplug on the PCH */
-       hotplug = I915_READ(PCH_PORT_HOTPLUG);
+       hotplug = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
        hotplug &= ~(PORTA_HOTPLUG_ENABLE |
                     PORTB_HOTPLUG_ENABLE |
                     PORTC_HOTPLUG_ENABLE |
                     PORTD_HOTPLUG_ENABLE);
        hotplug |= intel_hpd_hotplug_enables(dev_priv, spt_hotplug_enables);
-       I915_WRITE(PCH_PORT_HOTPLUG, hotplug);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, hotplug);
 
-       hotplug = I915_READ(PCH_PORT_HOTPLUG2);
+       hotplug = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG2);
        hotplug &= ~PORTE_HOTPLUG_ENABLE;
        hotplug |= intel_hpd_hotplug_enables(dev_priv, spt_hotplug2_enables);
-       I915_WRITE(PCH_PORT_HOTPLUG2, hotplug);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG2, hotplug);
 }
 
 static void spt_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3451,7 +3438,7 @@ static void spt_hpd_irq_setup(struct drm_i915_private *dev_priv)
        u32 hotplug_irqs, enabled_irqs;
 
        if (INTEL_PCH_TYPE(dev_priv) >= PCH_CNP)
-               I915_WRITE(SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
+               intel_uncore_write(&dev_priv->uncore, SHPD_FILTER_CNT, SHPD_FILTER_CNT_500_ADJ);
 
        enabled_irqs = intel_hpd_enabled_irqs(dev_priv, dev_priv->hotplug.pch_hpd);
        hotplug_irqs = intel_hpd_hotplug_irqs(dev_priv, dev_priv->hotplug.pch_hpd);
@@ -3482,11 +3469,11 @@ static void ilk_hpd_detection_setup(struct drm_i915_private *dev_priv)
         * duration to 2ms (which is the minimum in the Display Port spec)
         * The pulse duration bits are reserved on HSW+.
         */
-       hotplug = I915_READ(DIGITAL_PORT_HOTPLUG_CNTRL);
+       hotplug = intel_uncore_read(&dev_priv->uncore, DIGITAL_PORT_HOTPLUG_CNTRL);
        hotplug &= ~(DIGITAL_PORTA_HOTPLUG_ENABLE |
                     DIGITAL_PORTA_PULSE_DURATION_MASK);
        hotplug |= intel_hpd_hotplug_enables(dev_priv, ilk_hotplug_enables);
-       I915_WRITE(DIGITAL_PORT_HOTPLUG_CNTRL, hotplug);
+       intel_uncore_write(&dev_priv->uncore, DIGITAL_PORT_HOTPLUG_CNTRL, hotplug);
 }
 
 static void ilk_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3536,7 +3523,7 @@ static void bxt_hpd_detection_setup(struct drm_i915_private *dev_priv)
 {
        u32 hotplug;
 
-       hotplug = I915_READ(PCH_PORT_HOTPLUG);
+       hotplug = intel_uncore_read(&dev_priv->uncore, PCH_PORT_HOTPLUG);
        hotplug &= ~(PORTA_HOTPLUG_ENABLE |
                     PORTB_HOTPLUG_ENABLE |
                     PORTC_HOTPLUG_ENABLE |
@@ -3544,7 +3531,7 @@ static void bxt_hpd_detection_setup(struct drm_i915_private *dev_priv)
                     BXT_DDIB_HPD_INVERT |
                     BXT_DDIC_HPD_INVERT);
        hotplug |= intel_hpd_hotplug_enables(dev_priv, bxt_hotplug_enables);
-       I915_WRITE(PCH_PORT_HOTPLUG, hotplug);
+       intel_uncore_write(&dev_priv->uncore, PCH_PORT_HOTPLUG, hotplug);
 }
 
 static void bxt_hpd_irq_setup(struct drm_i915_private *dev_priv)
@@ -3664,8 +3651,8 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv)
                vlv_display_irq_postinstall(dev_priv);
        spin_unlock_irq(&dev_priv->irq_lock);
 
-       I915_WRITE(VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE);
-       POSTING_READ(VLV_MASTER_IER);
+       intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE);
+       intel_uncore_posting_read(&dev_priv->uncore, VLV_MASTER_IER);
 }
 
 static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
@@ -3778,14 +3765,14 @@ static void gen11_irq_postinstall(struct drm_i915_private *dev_priv)
 
        GEN3_IRQ_INIT(uncore, GEN11_GU_MISC_, ~gu_misc_masked, gu_misc_masked);
 
-       I915_WRITE(GEN11_DISPLAY_INT_CTL, GEN11_DISPLAY_IRQ_ENABLE);
+       intel_uncore_write(&dev_priv->uncore, GEN11_DISPLAY_INT_CTL, GEN11_DISPLAY_IRQ_ENABLE);
 
        if (HAS_MASTER_UNIT_IRQ(dev_priv)) {
                dg1_master_intr_enable(uncore->regs);
-               POSTING_READ(DG1_MSTR_UNIT_INTR);
+               intel_uncore_posting_read(&dev_priv->uncore, DG1_MSTR_UNIT_INTR);
        } else {
                gen11_master_intr_enable(uncore->regs);
-               POSTING_READ(GEN11_GFX_MSTR_IRQ);
+               intel_uncore_posting_read(&dev_priv->uncore, GEN11_GFX_MSTR_IRQ);
        }
 }
 
@@ -3798,8 +3785,8 @@ static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv)
                vlv_display_irq_postinstall(dev_priv);
        spin_unlock_irq(&dev_priv->irq_lock);
 
-       I915_WRITE(GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL);
-       POSTING_READ(GEN8_MASTER_IRQ);
+       intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL);
+       intel_uncore_posting_read(&dev_priv->uncore, GEN8_MASTER_IRQ);
 }
 
 static void i8xx_irq_reset(struct drm_i915_private *dev_priv)
@@ -3889,11 +3876,11 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
 {
        u32 emr;
 
-       *eir = I915_READ(EIR);
+       *eir = intel_uncore_read(&dev_priv->uncore, EIR);
 
-       I915_WRITE(EIR, *eir);
+       intel_uncore_write(&dev_priv->uncore, EIR, *eir);
 
-       *eir_stuck = I915_READ(EIR);
+       *eir_stuck = intel_uncore_read(&dev_priv->uncore, EIR);
        if (*eir_stuck == 0)
                return;
 
@@ -3907,9 +3894,9 @@ static void i9xx_error_irq_ack(struct drm_i915_private *dev_priv,
         * (or by a GPU reset) so we mask any bit that
         * remains set.
         */
-       emr = I915_READ(EMR);
-       I915_WRITE(EMR, 0xffffffff);
-       I915_WRITE(EMR, emr | *eir_stuck);
+       emr = intel_uncore_read(&dev_priv->uncore, EMR);
+       intel_uncore_write(&dev_priv->uncore, EMR, 0xffffffff);
+       intel_uncore_write(&dev_priv->uncore, EMR, emr | *eir_stuck);
 }
 
 static void i9xx_error_irq_handler(struct drm_i915_private *dev_priv,
@@ -3975,7 +3962,7 @@ static void i915_irq_reset(struct drm_i915_private *dev_priv)
 
        if (I915_HAS_HOTPLUG(dev_priv)) {
                i915_hotplug_interrupt_update(dev_priv, 0xffffffff, 0);
-               I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT));
+               intel_uncore_write(&dev_priv->uncore, PORT_HOTPLUG_STAT, intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_STAT));
        }
 
        i9xx_pipestat_irq_reset(dev_priv);
@@ -3989,7 +3976,7 @@ static void i915_irq_postinstall(struct drm_i915_private *dev_priv)
        struct intel_uncore *uncore = &dev_priv->uncore;
        u32 enable_mask;
 
-       I915_WRITE(EMR, ~(I915_ERROR_PAGE_TABLE |
+       intel_uncore_write(&dev_priv->uncore, EMR, ~(I915_ERROR_PAGE_TABLE |
                          I915_ERROR_MEMORY_REFRESH));
 
        /* Unmask the interrupts that we always want on. */
@@ -4042,7 +4029,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)
                u32 hotplug_status = 0;
                u32 iir;
 
-               iir = I915_READ(GEN2_IIR);
+               iir = intel_uncore_read(&dev_priv->uncore, GEN2_IIR);
                if (iir == 0)
                        break;
 
@@ -4059,7 +4046,7 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)
                if (iir & I915_MASTER_ERROR_INTERRUPT)
                        i9xx_error_irq_ack(dev_priv, &eir, &eir_stuck);
 
-               I915_WRITE(GEN2_IIR, iir);
+               intel_uncore_write(&dev_priv->uncore, GEN2_IIR, iir);
 
                if (iir & I915_USER_INTERRUPT)
                        intel_engine_signal_breadcrumbs(dev_priv->gt.engine[RCS0]);
@@ -4085,7 +4072,7 @@ static void i965_irq_reset(struct drm_i915_private *dev_priv)
        struct intel_uncore *uncore = &dev_priv->uncore;
 
        i915_hotplug_interrupt_update(dev_priv, 0xffffffff, 0);
-       I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT));
+       intel_uncore_write(&dev_priv->uncore, PORT_HOTPLUG_STAT, intel_uncore_read(&dev_priv->uncore, PORT_HOTPLUG_STAT));
 
        i9xx_pipestat_irq_reset(dev_priv);
 
@@ -4112,7 +4099,7 @@ static void i965_irq_postinstall(struct drm_i915_private *dev_priv)
                error_mask = ~(I915_ERROR_PAGE_TABLE |
                               I915_ERROR_MEMORY_REFRESH);
        }
-       I915_WRITE(EMR, error_mask);
+       intel_uncore_write(&dev_priv->uncore, EMR, error_mask);
 
        /* Unmask the interrupts that we always want on. */
        dev_priv->irq_mask =
@@ -4188,7 +4175,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg)
                u32 hotplug_status = 0;
                u32 iir;
 
-               iir = I915_READ(GEN2_IIR);
+               iir = intel_uncore_read(&dev_priv->uncore, GEN2_IIR);
                if (iir == 0)
                        break;
 
@@ -4204,7 +4191,7 @@ static irqreturn_t i965_irq_handler(int irq, void *arg)
                if (iir & I915_MASTER_ERROR_INTERRUPT)
                        i9xx_error_irq_ack(dev_priv, &eir, &eir_stuck);
 
-               I915_WRITE(GEN2_IIR, iir);
+               intel_uncore_write(&dev_priv->uncore, GEN2_IIR, iir);
 
                if (iir & I915_USER_INTERRUPT)
                        intel_engine_signal_breadcrumbs(dev_priv->gt.engine[RCS0]);