[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