On Mon, Mar 17, 2014 at 04:43:36PM +0200, Jani Nikula wrote: > This is a small follow-up fix to the series of eDP VDD back and forth > we've had recently. This is effectively a combined revert of three > commits: > > commit 2c2894f698fffd8ff53e1e1d3834f9e1035b1f39 > Author: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Date: Fri Mar 7 20:05:20 2014 -0300 > > drm/i915: properly disable the VDD when disabling the panel > > commit b3064154dfd37deb386b1e459c54e1ca2460b3d5 > Author: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> > Date: Tue Mar 4 00:42:44 2014 +0100 > > drm/i915: Don't just say it, actually force edp vdd > > commit dff392dbd258381a6c3164f38420593f2d291e3b > Author: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Date: Fri Dec 6 17:32:41 2013 -0200 > > drm/i915: don't touch the VDD when disabling the panel > > which shows that we're pretty close back to where we started > already. The first two were basically reverting the last, but missing > the WARN. Add that back. We also OCD the intel_ prefix back to > intel_edp_panel_vdd_on() which was lost somewhere in between. The circle > closes. > > For future reference, "drm/i915: don't touch the VDD when disabling the > panel" failed to take into account > > commit 6cb49835da0426f69a2931bc2a0a8156344b0e41 > Author: Daniel Vetter <daniel.vetter@xxxxxxxx> > Date: Sun May 20 17:14:50 2012 +0200 > > drm/i915: enable vdd when switching off the eDP panel > > and > > commit 35a38556d900b9cb5dfa2529c93944b847f8a8a4 > Author: Daniel Vetter <daniel.vetter@xxxxxxxx> > Date: Sun Aug 12 22:17:14 2012 +0200 > > drm/i915: reorder edp disabling to fix ivb MacBook Air > > Cc: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> 5 commit citations and we still need more. I think that's a new highscore ;-) Thanks for doing this detailed revert, queued for -next, thanks for the patch. And an ack on the relevant revert for -fixes ofc. -Daniel > --- > drivers/gpu/drm/i915/intel_ddi.c | 2 +- > drivers/gpu/drm/i915/intel_dp.c | 14 ++++++++------ > drivers/gpu/drm/i915/intel_drv.h | 2 +- > 3 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index fe1f5f012c4f..070bf2e78d61 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -1340,7 +1340,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) > if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > intel_edp_panel_off(intel_dp); > } > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 7854cdbb462a..071d44fe2fc8 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -676,7 +676,7 @@ intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, > int reply_bytes; > int ret; > > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > intel_dp_check_edp(intel_dp); > /* Set up the command byte */ > if (mode & MODE_I2C_READ) > @@ -1161,7 +1161,7 @@ static u32 ironlake_get_pp_control(struct intel_dp *intel_dp) > return control; > } > > -void edp_panel_vdd_on(struct intel_dp *intel_dp) > +void intel_edp_panel_vdd_on(struct intel_dp *intel_dp) > { > struct drm_device *dev = intel_dp_to_dev(intel_dp); > struct drm_i915_private *dev_priv = dev->dev_private; > @@ -1329,6 +1329,8 @@ void intel_edp_panel_off(struct intel_dp *intel_dp) > > edp_wait_backlight_off(intel_dp); > > + WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); > + > pp = ironlake_get_pp_control(intel_dp); > /* We need to switch off panel power _and_ force vdd, for otherwise some > * panels get very unhappy and cease to work. */ > @@ -1880,7 +1882,7 @@ static void intel_disable_dp(struct intel_encoder *encoder) > > /* Make sure the panel is off before trying to change the mode. But also > * ensure that we have vdd while we switch off the panel. */ > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > intel_edp_backlight_off(intel_dp); > intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); > intel_edp_panel_off(intel_dp); > @@ -1913,7 +1915,7 @@ static void intel_enable_dp(struct intel_encoder *encoder) > if (WARN_ON(dp_reg & DP_PORT_EN)) > return; > > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); > intel_dp_start_link_train(intel_dp); > intel_edp_panel_on(intel_dp); > @@ -2951,7 +2953,7 @@ intel_dp_probe_oui(struct intel_dp *intel_dp) > if (!(intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT)) > return; > > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > > if (intel_dp_aux_native_read_retry(intel_dp, DP_SINK_OUI, buf, 3)) > DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n", > @@ -3748,7 +3750,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, > return true; > > /* Cache DPCD and EDID for edp. */ > - edp_panel_vdd_on(intel_dp); > + intel_edp_panel_vdd_on(intel_dp); > has_dpcd = intel_dp_get_dpcd(intel_dp); > edp_panel_vdd_off(intel_dp, false); > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 20e11f24b9a1..e0064a18352d 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -762,12 +762,12 @@ bool intel_dp_compute_config(struct intel_encoder *encoder, > bool intel_dp_is_edp(struct drm_device *dev, enum port port); > void intel_edp_backlight_on(struct intel_dp *intel_dp); > void intel_edp_backlight_off(struct intel_dp *intel_dp); > +void intel_edp_panel_vdd_on(struct intel_dp *intel_dp); > void intel_edp_panel_on(struct intel_dp *intel_dp); > void intel_edp_panel_off(struct intel_dp *intel_dp); > void intel_edp_psr_enable(struct intel_dp *intel_dp); > void intel_edp_psr_disable(struct intel_dp *intel_dp); > void intel_edp_psr_update(struct drm_device *dev); > -void edp_panel_vdd_on(struct intel_dp *intel_dp); > > > /* intel_dsi.c */ > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx