aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2013-12-06 14:32:41 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-11 17:51:41 -0500
commitdff392dbd258381a6c3164f38420593f2d291e3b (patch)
tree380e9cd2355602994d8d2a9d250ae739fce05c49 /drivers/gpu/drm/i915
parent9b33600d52fab54df1aa82ea0d70c113060c293a (diff)
drm/i915: don't touch the VDD when disabling the panel
I don't see a reason to touch VDD when we're disabling the panel: since the panel is enabled, we don't need VDD. This saves a few sleep calls from the vdd_on and vdd_off functions at every modeset. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69693 Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> [danvet: Fix the patch mangle wiggle has done ... Spotted by Paulo. Also drop the runtime_pm_put call which now has to go due to different patch ordering. Also from Paul.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c2
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c10
2 files changed, 2 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index a75ceb5132ed..8b0e96ff76c9 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1165,7 +1165,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder)
1165 1165
1166 if (type == INTEL_OUTPUT_EDP) { 1166 if (type == INTEL_OUTPUT_EDP) {
1167 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); 1167 struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
1168 ironlake_edp_panel_vdd_on(intel_dp); 1168
1169 ironlake_edp_panel_off(intel_dp); 1169 ironlake_edp_panel_off(intel_dp);
1170 } 1170 }
1171 1171
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index ba5a59c9129f..948892d18ff7 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1239,24 +1239,17 @@ void ironlake_edp_panel_off(struct intel_dp *intel_dp)
1239 1239
1240 DRM_DEBUG_KMS("Turn eDP power off\n"); 1240 DRM_DEBUG_KMS("Turn eDP power off\n");
1241 1241
1242 WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n");
1243
1244 pp = ironlake_get_pp_control(intel_dp); 1242 pp = ironlake_get_pp_control(intel_dp);
1245 /* We need to switch off panel power _and_ force vdd, for otherwise some 1243 /* We need to switch off panel power _and_ force vdd, for otherwise some
1246 * panels get very unhappy and cease to work. */ 1244 * panels get very unhappy and cease to work. */
1247 pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); 1245 pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE);
1248 1246
1249 pp_ctrl_reg = _pp_ctrl_reg(intel_dp); 1247 pp_ctrl_reg = _pp_ctrl_reg(intel_dp);
1250 1248
1251 I915_WRITE(pp_ctrl_reg, pp); 1249 I915_WRITE(pp_ctrl_reg, pp);
1252 POSTING_READ(pp_ctrl_reg); 1250 POSTING_READ(pp_ctrl_reg);
1253 1251
1254 intel_dp->want_panel_vdd = false;
1255
1256 ironlake_wait_panel_off(intel_dp); 1252 ironlake_wait_panel_off(intel_dp);
1257
1258 /* We got a reference when we enabled the VDD. */
1259 intel_runtime_pm_put(dev_priv);
1260} 1253}
1261 1254
1262void ironlake_edp_backlight_on(struct intel_dp *intel_dp) 1255void ironlake_edp_backlight_on(struct intel_dp *intel_dp)
@@ -1781,7 +1774,6 @@ static void intel_disable_dp(struct intel_encoder *encoder)
1781 1774
1782 /* Make sure the panel is off before trying to change the mode. But also 1775 /* Make sure the panel is off before trying to change the mode. But also
1783 * ensure that we have vdd while we switch off the panel. */ 1776 * ensure that we have vdd while we switch off the panel. */
1784 ironlake_edp_panel_vdd_on(intel_dp);
1785 ironlake_edp_backlight_off(intel_dp); 1777 ironlake_edp_backlight_off(intel_dp);
1786 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); 1778 intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
1787 ironlake_edp_panel_off(intel_dp); 1779 ironlake_edp_panel_off(intel_dp);