[Intel-gfx] [PATCH 3/5] drm/i915/ddi: Check transcoder instead of port when setting HDMI infoframe

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Jun 13 17:47:28 UTC 2018


On Wed, Jun 13, 2018 at 08:07:08PM +0300, Imre Deak wrote:
> The only requirement by BSpec for setting the HDMI infoframes is on DDI
> platforms to do that before enabling the HDMI transcoder function, see
> VIDEO_DIP_CTL bit 16. Accordingly check for the transcoder function
> disabled state instead of the port's disabled state on DDI platforms.
> This is needed by the next patch as it will set the infoframe during
> crtc disabling where the port is still enabled.
> 
> Suggested-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Vandita Kulkarni <vandita.kulkarni at intel.com>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Signed-off-by: Imre Deak <imre.deak at intel.com>

Seems sensible.

Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index b7a95fd0663b..29d586f5cedb 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -59,6 +59,15 @@ assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi)
>  	     "HDMI port enabled, expecting disabled\n");
>  }
>  
> +static void
> +assert_hdmi_transcoder_func_disabled(struct drm_i915_private *dev_priv,
> +				     enum transcoder cpu_transcoder)
> +{
> +	WARN(I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)) &
> +	     TRANS_DDI_FUNC_ENABLE,
> +	     "HDMI transcoder function enabled, expecting disabled\n");
> +}
> +
>  struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder)
>  {
>  	struct intel_digital_port *intel_dig_port =
> @@ -838,11 +847,11 @@ static void hsw_set_infoframes(struct drm_encoder *encoder,
>  			       const struct drm_connector_state *conn_state)
>  {
>  	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
> -	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
>  	i915_reg_t reg = HSW_TVIDEO_DIP_CTL(crtc_state->cpu_transcoder);
>  	u32 val = I915_READ(reg);
>  
> -	assert_hdmi_port_disabled(intel_hdmi);
> +	assert_hdmi_transcoder_func_disabled(dev_priv,
> +					     crtc_state->cpu_transcoder);
>  
>  	val &= ~(VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
>  		 VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
> -- 
> 2.13.2

-- 
Ville Syrjälä
Intel


More information about the Intel-gfx mailing list