]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/gpu/drm/i915/intel_runtime_pm.c
drm/i915/vlv: Prevent enabling hpd polling in late suspend
[mirror_ubuntu-artful-kernel.git] / drivers / gpu / drm / i915 / intel_runtime_pm.c
index 6c11168facd63c7fd18eeb64e49abfa283e9c87a..9a3a7455d29c7f530345130a91f5c8781a0aeca7 100644 (file)
@@ -288,7 +288,6 @@ 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 pci_dev *pdev = dev_priv->drm.pdev;
-       struct drm_device *dev = &dev_priv->drm;
 
        /*
         * After we re-enable the power well, if we touch VGA register 0x3d5
@@ -304,7 +303,7 @@ static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
        outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
        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);
 }
@@ -331,7 +330,7 @@ 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) {
+       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(pdev, VGA_RSRC_LEGACY_IO);
@@ -344,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);
 }
@@ -659,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;
 
@@ -704,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,
@@ -728,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)
@@ -770,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,
@@ -819,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;
 }
@@ -846,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 = NULL;
-
-       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 (cmn_a_well)
-               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,
@@ -903,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,
@@ -976,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;
@@ -1030,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;
@@ -1139,13 +1113,15 @@ static void vlv_display_power_well_deinit(struct drm_i915_private *dev_priv)
 
        intel_power_sequencer_reset(dev_priv);
 
-       intel_hpd_poll_init(dev_priv);
+       /* Prevent us from re-enabling polling on accident in late suspend */
+       if (!dev_priv->drm.dev->power.is_suspended)
+               intel_hpd_poll_init(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);
 
@@ -1155,7 +1131,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);
 
@@ -1165,7 +1141,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 */
@@ -1191,7 +1167,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);
@@ -1214,7 +1190,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;
        }
 
@@ -1338,10 +1314,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 {
@@ -1369,7 +1345,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);
@@ -1400,10 +1376,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);
@@ -1552,7 +1528,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;
 
@@ -1582,7 +1558,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;
 
@@ -1615,7 +1591,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);
 }
@@ -1623,7 +1599,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);
 
@@ -1633,7 +1609,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);
 
@@ -1977,12 +1953,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,
        },
        {
@@ -1992,7 +1968,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",
@@ -2001,7 +1977,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",
@@ -2010,7 +1986,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",
@@ -2019,12 +1995,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,
        },
 };
@@ -2044,19 +2020,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,
        },
 };
@@ -2079,57 +2055,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,
        },
 };
 
@@ -2144,31 +2120,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,
        },
 };
 
@@ -2590,20 +2568,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);
@@ -2738,8 +2715,7 @@ void intel_runtime_pm_put(struct drm_i915_private *dev_priv)
        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(kdev);
        pm_runtime_put_autosuspend(kdev);
@@ -2758,7 +2734,6 @@ void intel_runtime_pm_put(struct drm_i915_private *dev_priv)
 void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
 {
        struct pci_dev *pdev = dev_priv->drm.pdev;
-       struct drm_device *dev = &dev_priv->drm;
        struct device *kdev = &pdev->dev;
 
        pm_runtime_set_autosuspend_delay(kdev, 10000); /* 10s */
@@ -2770,7 +2745,7 @@ 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)) {
+       if (!HAS_RUNTIME_PM(dev_priv)) {
                pm_runtime_dont_use_autosuspend(kdev);
                pm_runtime_get_sync(kdev);
        } else {