aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d2b2f51f839f..a76406b3b610 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -91,7 +91,6 @@ static struct intel_dp *intel_attached_dp(struct drm_connector *connector)
91} 91}
92 92
93static void intel_dp_link_down(struct intel_dp *intel_dp); 93static void intel_dp_link_down(struct intel_dp *intel_dp);
94static void edp_panel_vdd_on(struct intel_dp *intel_dp);
95static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); 94static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync);
96 95
97static int 96static int
@@ -1162,7 +1161,7 @@ static u32 ironlake_get_pp_control(struct intel_dp *intel_dp)
1162 return control; 1161 return control;
1163} 1162}
1164 1163
1165static void edp_panel_vdd_on(struct intel_dp *intel_dp) 1164void edp_panel_vdd_on(struct intel_dp *intel_dp)
1166{ 1165{
1167 struct drm_device *dev = intel_dp_to_dev(intel_dp); 1166 struct drm_device *dev = intel_dp_to_dev(intel_dp);
1168 struct drm_i915_private *dev_priv = dev->dev_private; 1167 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1338,11 +1337,16 @@ void intel_edp_panel_off(struct intel_dp *intel_dp)
1338 1337
1339 pp_ctrl_reg = _pp_ctrl_reg(intel_dp); 1338 pp_ctrl_reg = _pp_ctrl_reg(intel_dp);
1340 1339
1340 intel_dp->want_panel_vdd = false;
1341
1341 I915_WRITE(pp_ctrl_reg, pp); 1342 I915_WRITE(pp_ctrl_reg, pp);
1342 POSTING_READ(pp_ctrl_reg); 1343 POSTING_READ(pp_ctrl_reg);
1343 1344
1344 intel_dp->last_power_cycle = jiffies; 1345 intel_dp->last_power_cycle = jiffies;
1345 wait_panel_off(intel_dp); 1346 wait_panel_off(intel_dp);
1347
1348 /* We got a reference when we enabled the VDD. */
1349 intel_runtime_pm_put(dev_priv);
1346} 1350}
1347 1351
1348void intel_edp_backlight_on(struct intel_dp *intel_dp) 1352void intel_edp_backlight_on(struct intel_dp *intel_dp)
@@ -1880,7 +1884,6 @@ static void intel_disable_dp(struct intel_encoder *encoder)
1880 intel_edp_backlight_off(intel_dp); 1884 intel_edp_backlight_off(intel_dp);
1881 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); 1885 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
1882 intel_edp_panel_off(intel_dp); 1886 intel_edp_panel_off(intel_dp);
1883 edp_panel_vdd_off(intel_dp, true);
1884 1887
1885 /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */ 1888 /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */
1886 if (!(port == PORT_A || IS_VALLEYVIEW(dev))) 1889 if (!(port == PORT_A || IS_VALLEYVIEW(dev)))