[Intel-gfx] [PATCH 08/10] drm/i915: set TRANSCODER_EDP even earlier

Jani Nikula jani.nikula at linux.intel.com
Thu Jan 24 12:59:21 CET 2013


On Fri, 18 Jan 2013, Paulo Zanoni <przanoni at gmail.com> wrote:
> From: Paulo Zanoni <paulo.r.zanoni at intel.com>
>
> Instead of setting it at the beginning of haswell_crtc_mode_set, let's
> set it at the beginning of intel_crtc_mode_set. When
> intel_crt_mode_set calls drm_vblank_pre_modeset we already need to
> have the transcoder_edp correctly set, because eventually
> drm_vblank_pre_modeset calls functions that call i915_pipe_enabled
> from i915_irq.c, which will read PIPECONF(cpu_transcoder).

Side note, we confusingly have two i915_pipe_enabled() functions, the
one referred to here in i915_irq.c and the other in i915_suspend.c.

Reviewed-by: Jani Nikula <jani.nikula at intel.com>

>
> This is a bug that affects us since we added support for
> TRANSCODER_EDP, but I was only able to see the problem after
> suspending a machine with the power well disabled (got an "unclaimed
> register" error.
>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c |   10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 921b020..e9a2d4e 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5662,11 +5662,6 @@ static int haswell_crtc_mode_set(struct drm_crtc *crtc,
>  		num_connectors++;
>  	}
>  
> -	if (is_cpu_edp)
> -		intel_crtc->cpu_transcoder = TRANSCODER_EDP;
> -	else
> -		intel_crtc->cpu_transcoder = pipe;
> -
>  	/* We are not sure yet this won't happen. */
>  	WARN(!HAS_PCH_LPT(dev), "Unexpected PCH type %d\n",
>  	     INTEL_PCH_TYPE(dev));
> @@ -5731,6 +5726,11 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
>  	int pipe = intel_crtc->pipe;
>  	int ret;
>  
> +	if (IS_HASWELL(dev) && intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))
> +		intel_crtc->cpu_transcoder = TRANSCODER_EDP;
> +	else
> +		intel_crtc->cpu_transcoder = pipe;
> +
>  	drm_vblank_pre_modeset(dev, pipe);
>  
>  	ret = dev_priv->display.crtc_mode_set(crtc, mode, adjusted_mode,
> -- 
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list