diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 9 |
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 | ||
93 | static void intel_dp_link_down(struct intel_dp *intel_dp); | 93 | static void intel_dp_link_down(struct intel_dp *intel_dp); |
94 | static void edp_panel_vdd_on(struct intel_dp *intel_dp); | ||
95 | static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); | 94 | static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); |
96 | 95 | ||
97 | static int | 96 | static 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 | ||
1165 | static void edp_panel_vdd_on(struct intel_dp *intel_dp) | 1164 | void 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 | ||
1348 | void intel_edp_backlight_on(struct intel_dp *intel_dp) | 1352 | void 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))) |