[Intel-gfx] [PATCH] drm/i915/ddi: set has_infoframe flag on DDI too v2

Daniel Vetter daniel at ffwll.ch
Thu Nov 20 16:49:42 CET 2014


On Tue, Nov 18, 2014 at 09:45:52AM -0800, Jesse Barnes wrote:
> Just like we do in the HDMI code, set the infoframe flag if we detect
> that infoframes are enabled.
> 
> v2: check for actual infoframe status as in hdmi code (Daniel)
> 
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 07c5625..24110c9 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2075,6 +2075,14 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
>  		break;
>  	}
>  
> +	if (encoder->type == INTEL_OUTPUT_HDMI) {

Hm I dind't look too closely apparently at this. You again rely upon sw
state here, just encoder->type this time around. Which means you can't
upcast the intel_hdmi struct, and you also can't really rely upon the
encoder->crtc link (that's all just about to get reconstructed). Imo the
code should have stayed in the TRANS_DDI_MODE_SELECT_HDMI case.

The later depency upon encoder->crtc is an issue for everything !g4x, but
on hsw there's the additional issue that you have to look at the cpu
transcoder and I guess that part blows up.

g4x infoframe readout is probably broken too because it doesn't check that
the port selected is the one actually queried for.

Overall I think we need to:
- Inline the g4x readout into the hdmi get_config function and check the
  port.
- Inline the ibx/cpt readout code into the relevant get_pipe_config
  functions (well pch config) since that state is per-pipe. We should
  probably double-check the port, too.
- Same inline for vlv and hsw, with the addition that we need to make sure
  on hsw to not try to read this for the edp transcoder.

Or maybe I'm totally missing why the state gets out of sync on Paulo's
machine.
-Daniel

> +		struct intel_hdmi *intel_hdmi =
> +			enc_to_intel_hdmi(&encoder->base);
> +
> +		if (intel_hdmi->infoframe_enabled(&encoder->base))
> +			pipe_config->has_infoframe = true;
> +	}
> +
>  	if (intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_AUDIO)) {
>  		temp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
>  		if (temp & AUDIO_OUTPUT_ENABLE(intel_crtc->pipe))
> -- 
> 1.9.1
> 
> _______________________________________________
> 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