[Intel-gfx] [PATCH] drm/i915: finish off reverting eDP VDD changes

Daniel Vetter daniel at ffwll.ch
Mon Mar 17 18:07:34 CET 2014


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 at intel.com>
> 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 at gmail.com>
> 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 at intel.com>
> 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 at ffwll.ch>
> 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 at ffwll.ch>
> 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 at gmail.com>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>

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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list