]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/intel_runtime_pm.c
drm/i915: Rearrange i915_wait_request() accounting with callers
[karo-tx-linux.git] / drivers / gpu / drm / i915 / intel_runtime_pm.c
index 1c603bbe5784fa7e21049e267eab52af25a60360..95034a06d4ad3dd38c09edf998394321806dc025 100644 (file)
@@ -287,7 +287,7 @@ void intel_display_set_init_power(struct drm_i915_private *dev_priv,
  */
 static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
 
        /*
         * After we re-enable the power well, if we touch VGA register 0x3d5
@@ -299,11 +299,11 @@ static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
         * sure vgacon can keep working normally without triggering interrupts
         * and error messages.
         */
-       vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
+       vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
        outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
-       vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
+       vga_put(pdev, VGA_RSRC_LEGACY_IO);
 
-       if (IS_BROADWELL(dev))
+       if (IS_BROADWELL(dev_priv))
                gen8_irq_power_well_post_enable(dev_priv,
                                                1 << PIPE_C | 1 << PIPE_B);
 }
@@ -318,7 +318,7 @@ static void hsw_power_well_pre_disable(struct drm_i915_private *dev_priv)
 static void skl_power_well_post_enable(struct drm_i915_private *dev_priv,
                                       struct i915_power_well *power_well)
 {
-       struct drm_device *dev = &dev_priv->drm;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
 
        /*
         * After we re-enable the power well, if we touch VGA register 0x3d5
@@ -330,10 +330,10 @@ static void skl_power_well_post_enable(struct drm_i915_private *dev_priv,
         * sure vgacon can keep working normally without triggering interrupts
         * and error messages.
         */
-       if (power_well->data == SKL_DISP_PW_2) {
-               vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
+       if (power_well->id == SKL_DISP_PW_2) {
+               vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
                outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
-               vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
+               vga_put(pdev, VGA_RSRC_LEGACY_IO);
 
                gen8_irq_power_well_post_enable(dev_priv,
                                                1 << PIPE_C | 1 << PIPE_B);
@@ -343,7 +343,7 @@ static void skl_power_well_post_enable(struct drm_i915_private *dev_priv,
 static void skl_power_well_pre_disable(struct drm_i915_private *dev_priv,
                                       struct i915_power_well *power_well)
 {
-       if (power_well->data == SKL_DISP_PW_2)
+       if (power_well->id == SKL_DISP_PW_2)
                gen8_irq_power_well_pre_disable(dev_priv,
                                                1 << PIPE_C | 1 << PIPE_B);
 }
@@ -592,6 +592,8 @@ void bxt_disable_dc9(struct drm_i915_private *dev_priv)
        DRM_DEBUG_KMS("Disabling DC9\n");
 
        gen9_set_dc_state(dev_priv, DC_STATE_DISABLE);
+
+       intel_pps_unlock_regs_wa(dev_priv);
 }
 
 static void assert_csr_loaded(struct drm_i915_private *dev_priv)
@@ -656,7 +658,7 @@ static void
 gen9_sanitize_power_well_requests(struct drm_i915_private *dev_priv,
                                  struct i915_power_well *power_well)
 {
-       enum skl_disp_power_wells power_well_id = power_well->data;
+       enum skl_disp_power_wells power_well_id = power_well->id;
        u32 val;
        u32 mask;
 
@@ -701,7 +703,7 @@ static void skl_set_power_well(struct drm_i915_private *dev_priv,
        tmp = I915_READ(HSW_PWR_WELL_DRIVER);
        fuse_status = I915_READ(SKL_FUSE_STATUS);
 
-       switch (power_well->data) {
+       switch (power_well->id) {
        case SKL_DISP_PW_1:
                if (intel_wait_for_register(dev_priv,
                                            SKL_FUSE_STATUS,
@@ -725,13 +727,13 @@ static void skl_set_power_well(struct drm_i915_private *dev_priv,
        case SKL_DISP_PW_MISC_IO:
                break;
        default:
-               WARN(1, "Unknown power well %lu\n", power_well->data);
+               WARN(1, "Unknown power well %lu\n", power_well->id);
                return;
        }
 
-       req_mask = SKL_POWER_WELL_REQ(power_well->data);
+       req_mask = SKL_POWER_WELL_REQ(power_well->id);
        enable_requested = tmp & req_mask;
-       state_mask = SKL_POWER_WELL_STATE(power_well->data);
+       state_mask = SKL_POWER_WELL_STATE(power_well->id);
        is_enabled = tmp & state_mask;
 
        if (!enable && enable_requested)
@@ -767,14 +769,14 @@ static void skl_set_power_well(struct drm_i915_private *dev_priv,
                          power_well->name, enable ? "enable" : "disable");
 
        if (check_fuse_status) {
-               if (power_well->data == SKL_DISP_PW_1) {
+               if (power_well->id == SKL_DISP_PW_1) {
                        if (intel_wait_for_register(dev_priv,
                                                    SKL_FUSE_STATUS,
                                                    SKL_FUSE_PG1_DIST_STATUS,
                                                    SKL_FUSE_PG1_DIST_STATUS,
                                                    1))
                                DRM_ERROR("PG1 distributing status timeout\n");
-               } else if (power_well->data == SKL_DISP_PW_2) {
+               } else if (power_well->id == SKL_DISP_PW_2) {
                        if (intel_wait_for_register(dev_priv,
                                                    SKL_FUSE_STATUS,
                                                    SKL_FUSE_PG2_DIST_STATUS,
@@ -816,8 +818,8 @@ static void hsw_power_well_disable(struct drm_i915_private *dev_priv,
 static bool skl_power_well_enabled(struct drm_i915_private *dev_priv,
                                        struct i915_power_well *power_well)
 {
-       uint32_t mask = SKL_POWER_WELL_REQ(power_well->data) |
-               SKL_POWER_WELL_STATE(power_well->data);
+       uint32_t mask = SKL_POWER_WELL_REQ(power_well->id) |
+               SKL_POWER_WELL_STATE(power_well->id);
 
        return (I915_READ(HSW_PWR_WELL_DRIVER) & mask) == mask;
 }
@@ -843,45 +845,22 @@ static void skl_power_well_disable(struct drm_i915_private *dev_priv,
        skl_set_power_well(dev_priv, power_well, false);
 }
 
-static enum dpio_phy bxt_power_well_to_phy(struct i915_power_well *power_well)
-{
-       enum skl_disp_power_wells power_well_id = power_well->data;
-
-       return power_well_id == BXT_DPIO_CMN_A ? DPIO_PHY1 : DPIO_PHY0;
-}
-
 static void bxt_dpio_cmn_power_well_enable(struct drm_i915_private *dev_priv,
                                           struct i915_power_well *power_well)
 {
-       enum skl_disp_power_wells power_well_id = power_well->data;
-       struct i915_power_well *cmn_a_well;
-
-       if (power_well_id == BXT_DPIO_CMN_BC) {
-               /*
-                * We need to copy the GRC calibration value from the eDP PHY,
-                * so make sure it's powered up.
-                */
-               cmn_a_well = lookup_power_well(dev_priv, BXT_DPIO_CMN_A);
-               intel_power_well_get(dev_priv, cmn_a_well);
-       }
-
-       bxt_ddi_phy_init(dev_priv, bxt_power_well_to_phy(power_well));
-
-       if (power_well_id == BXT_DPIO_CMN_BC)
-               intel_power_well_put(dev_priv, cmn_a_well);
+       bxt_ddi_phy_init(dev_priv, power_well->data);
 }
 
 static void bxt_dpio_cmn_power_well_disable(struct drm_i915_private *dev_priv,
                                            struct i915_power_well *power_well)
 {
-       bxt_ddi_phy_uninit(dev_priv, bxt_power_well_to_phy(power_well));
+       bxt_ddi_phy_uninit(dev_priv, power_well->data);
 }
 
 static bool bxt_dpio_cmn_power_well_enabled(struct drm_i915_private *dev_priv,
                                            struct i915_power_well *power_well)
 {
-       return bxt_ddi_phy_is_enabled(dev_priv,
-                                     bxt_power_well_to_phy(power_well));
+       return bxt_ddi_phy_is_enabled(dev_priv, power_well->data);
 }
 
 static void bxt_dpio_cmn_power_well_sync_hw(struct drm_i915_private *dev_priv,
@@ -900,13 +879,11 @@ static void bxt_verify_ddi_phy_power_wells(struct drm_i915_private *dev_priv)
 
        power_well = lookup_power_well(dev_priv, BXT_DPIO_CMN_A);
        if (power_well->count > 0)
-               bxt_ddi_phy_verify_state(dev_priv,
-                                        bxt_power_well_to_phy(power_well));
+               bxt_ddi_phy_verify_state(dev_priv, power_well->data);
 
        power_well = lookup_power_well(dev_priv, BXT_DPIO_CMN_BC);
        if (power_well->count > 0)
-               bxt_ddi_phy_verify_state(dev_priv,
-                                        bxt_power_well_to_phy(power_well));
+               bxt_ddi_phy_verify_state(dev_priv, power_well->data);
 }
 
 static bool gen9_dc_off_power_well_enabled(struct drm_i915_private *dev_priv,
@@ -973,7 +950,7 @@ static bool i9xx_always_on_power_well_enabled(struct drm_i915_private *dev_priv,
 static void vlv_set_power_well(struct drm_i915_private *dev_priv,
                               struct i915_power_well *power_well, bool enable)
 {
-       enum punit_power_well power_well_id = power_well->data;
+       enum punit_power_well power_well_id = power_well->id;
        u32 mask;
        u32 state;
        u32 ctrl;
@@ -1027,7 +1004,7 @@ static void vlv_power_well_disable(struct drm_i915_private *dev_priv,
 static bool vlv_power_well_enabled(struct drm_i915_private *dev_priv,
                                   struct i915_power_well *power_well)
 {
-       int power_well_id = power_well->data;
+       int power_well_id = power_well->id;
        bool enabled = false;
        u32 mask;
        u32 state;
@@ -1121,6 +1098,8 @@ static void vlv_display_power_well_init(struct drm_i915_private *dev_priv)
        }
 
        i915_redisable_vga_power_on(&dev_priv->drm);
+
+       intel_pps_unlock_regs_wa(dev_priv);
 }
 
 static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
@@ -1140,7 +1119,7 @@ static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
 static void vlv_display_power_well_enable(struct drm_i915_private *dev_priv,
                                          struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DISP2D);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DISP2D);
 
        vlv_set_power_well(dev_priv, power_well, true);
 
@@ -1150,7 +1129,7 @@ static void vlv_display_power_well_enable(struct drm_i915_private *dev_priv,
 static void vlv_display_power_well_disable(struct drm_i915_private *dev_priv,
                                           struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DISP2D);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DISP2D);
 
        vlv_display_power_well_deinit(dev_priv);
 
@@ -1160,7 +1139,7 @@ static void vlv_display_power_well_disable(struct drm_i915_private *dev_priv,
 static void vlv_dpio_cmn_power_well_enable(struct drm_i915_private *dev_priv,
                                           struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DPIO_CMN_BC);
 
        /* since ref/cri clock was enabled */
        udelay(1); /* >10ns for cmnreset, >0ns for sidereset */
@@ -1186,7 +1165,7 @@ static void vlv_dpio_cmn_power_well_disable(struct drm_i915_private *dev_priv,
 {
        enum pipe pipe;
 
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DPIO_CMN_BC);
 
        for_each_pipe(dev_priv, pipe)
                assert_pll_disabled(dev_priv, pipe);
@@ -1209,7 +1188,7 @@ static struct i915_power_well *lookup_power_well(struct drm_i915_private *dev_pr
                struct i915_power_well *power_well;
 
                power_well = &power_domains->power_wells[i];
-               if (power_well->data == power_well_id)
+               if (power_well->id == power_well_id)
                        return power_well;
        }
 
@@ -1333,10 +1312,10 @@ static void chv_dpio_cmn_power_well_enable(struct drm_i915_private *dev_priv,
        enum pipe pipe;
        uint32_t tmp;
 
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC &&
-                    power_well->data != PUNIT_POWER_WELL_DPIO_CMN_D);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DPIO_CMN_BC &&
+                    power_well->id != PUNIT_POWER_WELL_DPIO_CMN_D);
 
-       if (power_well->data == PUNIT_POWER_WELL_DPIO_CMN_BC) {
+       if (power_well->id == PUNIT_POWER_WELL_DPIO_CMN_BC) {
                pipe = PIPE_A;
                phy = DPIO_PHY0;
        } else {
@@ -1364,7 +1343,7 @@ static void chv_dpio_cmn_power_well_enable(struct drm_i915_private *dev_priv,
                DPIO_SUS_CLK_CONFIG_GATE_CLKREQ;
        vlv_dpio_write(dev_priv, pipe, CHV_CMN_DW28, tmp);
 
-       if (power_well->data == PUNIT_POWER_WELL_DPIO_CMN_BC) {
+       if (power_well->id == PUNIT_POWER_WELL_DPIO_CMN_BC) {
                tmp = vlv_dpio_read(dev_priv, pipe, _CHV_CMN_DW6_CH1);
                tmp |= DPIO_DYNPWRDOWNEN_CH1;
                vlv_dpio_write(dev_priv, pipe, _CHV_CMN_DW6_CH1, tmp);
@@ -1395,10 +1374,10 @@ static void chv_dpio_cmn_power_well_disable(struct drm_i915_private *dev_priv,
 {
        enum dpio_phy phy;
 
-       WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC &&
-                    power_well->data != PUNIT_POWER_WELL_DPIO_CMN_D);
+       WARN_ON_ONCE(power_well->id != PUNIT_POWER_WELL_DPIO_CMN_BC &&
+                    power_well->id != PUNIT_POWER_WELL_DPIO_CMN_D);
 
-       if (power_well->data == PUNIT_POWER_WELL_DPIO_CMN_BC) {
+       if (power_well->id == PUNIT_POWER_WELL_DPIO_CMN_BC) {
                phy = DPIO_PHY0;
                assert_pll_disabled(dev_priv, PIPE_A);
                assert_pll_disabled(dev_priv, PIPE_B);
@@ -1547,7 +1526,7 @@ void chv_phy_powergate_lanes(struct intel_encoder *encoder,
 static bool chv_pipe_power_well_enabled(struct drm_i915_private *dev_priv,
                                        struct i915_power_well *power_well)
 {
-       enum pipe pipe = power_well->data;
+       enum pipe pipe = power_well->id;
        bool enabled;
        u32 state, ctrl;
 
@@ -1577,7 +1556,7 @@ static void chv_set_pipe_power_well(struct drm_i915_private *dev_priv,
                                    struct i915_power_well *power_well,
                                    bool enable)
 {
-       enum pipe pipe = power_well->data;
+       enum pipe pipe = power_well->id;
        u32 state;
        u32 ctrl;
 
@@ -1610,7 +1589,7 @@ out:
 static void chv_pipe_power_well_sync_hw(struct drm_i915_private *dev_priv,
                                        struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PIPE_A);
+       WARN_ON_ONCE(power_well->id != PIPE_A);
 
        chv_set_pipe_power_well(dev_priv, power_well, power_well->count > 0);
 }
@@ -1618,7 +1597,7 @@ static void chv_pipe_power_well_sync_hw(struct drm_i915_private *dev_priv,
 static void chv_pipe_power_well_enable(struct drm_i915_private *dev_priv,
                                       struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PIPE_A);
+       WARN_ON_ONCE(power_well->id != PIPE_A);
 
        chv_set_pipe_power_well(dev_priv, power_well, true);
 
@@ -1628,7 +1607,7 @@ static void chv_pipe_power_well_enable(struct drm_i915_private *dev_priv,
 static void chv_pipe_power_well_disable(struct drm_i915_private *dev_priv,
                                        struct i915_power_well *power_well)
 {
-       WARN_ON_ONCE(power_well->data != PIPE_A);
+       WARN_ON_ONCE(power_well->id != PIPE_A);
 
        vlv_display_power_well_deinit(dev_priv);
 
@@ -1972,12 +1951,12 @@ static struct i915_power_well vlv_power_wells[] = {
                .always_on = 1,
                .domains = POWER_DOMAIN_MASK,
                .ops = &i9xx_always_on_power_well_ops,
-               .data = PUNIT_POWER_WELL_ALWAYS_ON,
+               .id = PUNIT_POWER_WELL_ALWAYS_ON,
        },
        {
                .name = "display",
                .domains = VLV_DISPLAY_POWER_DOMAINS,
-               .data = PUNIT_POWER_WELL_DISP2D,
+               .id = PUNIT_POWER_WELL_DISP2D,
                .ops = &vlv_display_power_well_ops,
        },
        {
@@ -1987,7 +1966,7 @@ static struct i915_power_well vlv_power_wells[] = {
                           VLV_DPIO_TX_C_LANES_01_POWER_DOMAINS |
                           VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
                .ops = &vlv_dpio_power_well_ops,
-               .data = PUNIT_POWER_WELL_DPIO_TX_B_LANES_01,
+               .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_01,
        },
        {
                .name = "dpio-tx-b-23",
@@ -1996,7 +1975,7 @@ static struct i915_power_well vlv_power_wells[] = {
                           VLV_DPIO_TX_C_LANES_01_POWER_DOMAINS |
                           VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
                .ops = &vlv_dpio_power_well_ops,
-               .data = PUNIT_POWER_WELL_DPIO_TX_B_LANES_23,
+               .id = PUNIT_POWER_WELL_DPIO_TX_B_LANES_23,
        },
        {
                .name = "dpio-tx-c-01",
@@ -2005,7 +1984,7 @@ static struct i915_power_well vlv_power_wells[] = {
                           VLV_DPIO_TX_C_LANES_01_POWER_DOMAINS |
                           VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
                .ops = &vlv_dpio_power_well_ops,
-               .data = PUNIT_POWER_WELL_DPIO_TX_C_LANES_01,
+               .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_01,
        },
        {
                .name = "dpio-tx-c-23",
@@ -2014,12 +1993,12 @@ static struct i915_power_well vlv_power_wells[] = {
                           VLV_DPIO_TX_C_LANES_01_POWER_DOMAINS |
                           VLV_DPIO_TX_C_LANES_23_POWER_DOMAINS,
                .ops = &vlv_dpio_power_well_ops,
-               .data = PUNIT_POWER_WELL_DPIO_TX_C_LANES_23,
+               .id = PUNIT_POWER_WELL_DPIO_TX_C_LANES_23,
        },
        {
                .name = "dpio-common",
                .domains = VLV_DPIO_CMN_BC_POWER_DOMAINS,
-               .data = PUNIT_POWER_WELL_DPIO_CMN_BC,
+               .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
                .ops = &vlv_dpio_cmn_power_well_ops,
        },
 };
@@ -2039,19 +2018,19 @@ static struct i915_power_well chv_power_wells[] = {
                 * required for any pipe to work.
                 */
                .domains = CHV_DISPLAY_POWER_DOMAINS,
-               .data = PIPE_A,
+               .id = PIPE_A,
                .ops = &chv_pipe_power_well_ops,
        },
        {
                .name = "dpio-common-bc",
                .domains = CHV_DPIO_CMN_BC_POWER_DOMAINS,
-               .data = PUNIT_POWER_WELL_DPIO_CMN_BC,
+               .id = PUNIT_POWER_WELL_DPIO_CMN_BC,
                .ops = &chv_dpio_cmn_power_well_ops,
        },
        {
                .name = "dpio-common-d",
                .domains = CHV_DPIO_CMN_D_POWER_DOMAINS,
-               .data = PUNIT_POWER_WELL_DPIO_CMN_D,
+               .id = PUNIT_POWER_WELL_DPIO_CMN_D,
                .ops = &chv_dpio_cmn_power_well_ops,
        },
 };
@@ -2074,57 +2053,57 @@ static struct i915_power_well skl_power_wells[] = {
                .always_on = 1,
                .domains = POWER_DOMAIN_MASK,
                .ops = &i9xx_always_on_power_well_ops,
-               .data = SKL_DISP_PW_ALWAYS_ON,
+               .id = SKL_DISP_PW_ALWAYS_ON,
        },
        {
                .name = "power well 1",
                /* Handled by the DMC firmware */
                .domains = 0,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_1,
+               .id = SKL_DISP_PW_1,
        },
        {
                .name = "MISC IO power well",
                /* Handled by the DMC firmware */
                .domains = 0,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_MISC_IO,
+               .id = SKL_DISP_PW_MISC_IO,
        },
        {
                .name = "DC off",
                .domains = SKL_DISPLAY_DC_OFF_POWER_DOMAINS,
                .ops = &gen9_dc_off_power_well_ops,
-               .data = SKL_DISP_PW_DC_OFF,
+               .id = SKL_DISP_PW_DC_OFF,
        },
        {
                .name = "power well 2",
                .domains = SKL_DISPLAY_POWERWELL_2_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_2,
+               .id = SKL_DISP_PW_2,
        },
        {
                .name = "DDI A/E power well",
                .domains = SKL_DISPLAY_DDI_A_E_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_DDI_A_E,
+               .id = SKL_DISP_PW_DDI_A_E,
        },
        {
                .name = "DDI B power well",
                .domains = SKL_DISPLAY_DDI_B_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_DDI_B,
+               .id = SKL_DISP_PW_DDI_B,
        },
        {
                .name = "DDI C power well",
                .domains = SKL_DISPLAY_DDI_C_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_DDI_C,
+               .id = SKL_DISP_PW_DDI_C,
        },
        {
                .name = "DDI D power well",
                .domains = SKL_DISPLAY_DDI_D_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_DDI_D,
+               .id = SKL_DISP_PW_DDI_D,
        },
 };
 
@@ -2139,31 +2118,33 @@ static struct i915_power_well bxt_power_wells[] = {
                .name = "power well 1",
                .domains = 0,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_1,
+               .id = SKL_DISP_PW_1,
        },
        {
                .name = "DC off",
                .domains = BXT_DISPLAY_DC_OFF_POWER_DOMAINS,
                .ops = &gen9_dc_off_power_well_ops,
-               .data = SKL_DISP_PW_DC_OFF,
+               .id = SKL_DISP_PW_DC_OFF,
        },
        {
                .name = "power well 2",
                .domains = BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS,
                .ops = &skl_power_well_ops,
-               .data = SKL_DISP_PW_2,
+               .id = SKL_DISP_PW_2,
        },
        {
                .name = "dpio-common-a",
                .domains = BXT_DPIO_CMN_A_POWER_DOMAINS,
                .ops = &bxt_dpio_cmn_power_well_ops,
-               .data = BXT_DPIO_CMN_A,
+               .id = BXT_DPIO_CMN_A,
+               .data = DPIO_PHY1,
        },
        {
                .name = "dpio-common-bc",
                .domains = BXT_DPIO_CMN_BC_POWER_DOMAINS,
                .ops = &bxt_dpio_cmn_power_well_ops,
-               .data = BXT_DPIO_CMN_BC,
+               .id = BXT_DPIO_CMN_BC,
+               .data = DPIO_PHY0,
        },
 };
 
@@ -2284,7 +2265,7 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
  */
 void intel_power_domains_fini(struct drm_i915_private *dev_priv)
 {
-       struct device *device = &dev_priv->drm.pdev->dev;
+       struct device *kdev = &dev_priv->drm.pdev->dev;
 
        /*
         * The i915.ko module is still not prepared to be loaded when
@@ -2306,7 +2287,7 @@ void intel_power_domains_fini(struct drm_i915_private *dev_priv)
         * the platform doesn't support runtime PM.
         */
        if (!HAS_RUNTIME_PM(dev_priv))
-               pm_runtime_put(device);
+               pm_runtime_put(kdev);
 }
 
 static void intel_power_domains_sync_hw(struct drm_i915_private *dev_priv)
@@ -2585,20 +2566,19 @@ static void vlv_cmnlane_wa(struct drm_i915_private *dev_priv)
  */
 void intel_power_domains_init_hw(struct drm_i915_private *dev_priv, bool resume)
 {
-       struct drm_device *dev = &dev_priv->drm;
        struct i915_power_domains *power_domains = &dev_priv->power_domains;
 
        power_domains->initializing = true;
 
-       if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) {
+       if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) {
                skl_display_core_init(dev_priv, resume);
-       } else if (IS_BROXTON(dev)) {
+       } else if (IS_BROXTON(dev_priv)) {
                bxt_display_core_init(dev_priv, resume);
-       } else if (IS_CHERRYVIEW(dev)) {
+       } else if (IS_CHERRYVIEW(dev_priv)) {
                mutex_lock(&power_domains->lock);
                chv_phy_control_init(dev_priv);
                mutex_unlock(&power_domains->lock);
-       } else if (IS_VALLEYVIEW(dev)) {
+       } else if (IS_VALLEYVIEW(dev_priv)) {
                mutex_lock(&power_domains->lock);
                vlv_cmnlane_wa(dev_priv);
                mutex_unlock(&power_domains->lock);
@@ -2647,10 +2627,10 @@ void intel_power_domains_suspend(struct drm_i915_private *dev_priv)
  */
 void intel_runtime_pm_get(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct device *device = &dev->pdev->dev;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
+       struct device *kdev = &pdev->dev;
 
-       pm_runtime_get_sync(device);
+       pm_runtime_get_sync(kdev);
 
        atomic_inc(&dev_priv->pm.wakeref_count);
        assert_rpm_wakelock_held(dev_priv);
@@ -2668,11 +2648,11 @@ void intel_runtime_pm_get(struct drm_i915_private *dev_priv)
  */
 bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct device *device = &dev->pdev->dev;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
+       struct device *kdev = &pdev->dev;
 
        if (IS_ENABLED(CONFIG_PM)) {
-               int ret = pm_runtime_get_if_in_use(device);
+               int ret = pm_runtime_get_if_in_use(kdev);
 
                /*
                 * In cases runtime PM is disabled by the RPM core and we get
@@ -2710,11 +2690,11 @@ bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *dev_priv)
  */
 void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct device *device = &dev->pdev->dev;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
+       struct device *kdev = &pdev->dev;
 
        assert_rpm_wakelock_held(dev_priv);
-       pm_runtime_get_noresume(device);
+       pm_runtime_get_noresume(kdev);
 
        atomic_inc(&dev_priv->pm.wakeref_count);
 }
@@ -2729,15 +2709,14 @@ void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv)
  */
 void intel_runtime_pm_put(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct device *device = &dev->pdev->dev;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
+       struct device *kdev = &pdev->dev;
 
        assert_rpm_wakelock_held(dev_priv);
-       if (atomic_dec_and_test(&dev_priv->pm.wakeref_count))
-               atomic_inc(&dev_priv->pm.atomic_seq);
+       atomic_dec(&dev_priv->pm.wakeref_count);
 
-       pm_runtime_mark_last_busy(device);
-       pm_runtime_put_autosuspend(device);
+       pm_runtime_mark_last_busy(kdev);
+       pm_runtime_put_autosuspend(kdev);
 }
 
 /**
@@ -2752,11 +2731,11 @@ void intel_runtime_pm_put(struct drm_i915_private *dev_priv)
  */
 void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
 {
-       struct drm_device *dev = &dev_priv->drm;
-       struct device *device = &dev->pdev->dev;
+       struct pci_dev *pdev = dev_priv->drm.pdev;
+       struct device *kdev = &pdev->dev;
 
-       pm_runtime_set_autosuspend_delay(device, 10000); /* 10s */
-       pm_runtime_mark_last_busy(device);
+       pm_runtime_set_autosuspend_delay(kdev, 10000); /* 10s */
+       pm_runtime_mark_last_busy(kdev);
 
        /*
         * Take a permanent reference to disable the RPM functionality and drop
@@ -2764,11 +2743,11 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
         * so the driver's own RPM reference tracking asserts also work on
         * platforms without RPM support.
         */
-       if (!HAS_RUNTIME_PM(dev)) {
-               pm_runtime_dont_use_autosuspend(device);
-               pm_runtime_get_sync(device);
+       if (!HAS_RUNTIME_PM(dev_priv)) {
+               pm_runtime_dont_use_autosuspend(kdev);
+               pm_runtime_get_sync(kdev);
        } else {
-               pm_runtime_use_autosuspend(device);
+               pm_runtime_use_autosuspend(kdev);
        }
 
        /*
@@ -2776,6 +2755,5 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
         * We drop that here and will reacquire it during unloading in
         * intel_power_domains_fini().
         */
-       pm_runtime_put_autosuspend(device);
+       pm_runtime_put_autosuspend(kdev);
 }
-