[Intel-gfx] [PATCH 2/4] drm/i915: Use drm_hdmi_avi_infoframe_quant_range() for SDVO HDMI as well

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Dec 13 05:18:01 UTC 2018


On Wed, Dec 12, 2018 at 04:32:02PM -0800, Dhinakaran Pandiyan wrote:
> On Tue, 2018-11-20 at 18:13 +0200, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > 
> > Fill out the AVI infoframe quantization range bits using
> > drm_hdmi_avi_infoframe_quant_range() for SDVO HDMI encoder as well.
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_sdvo.c | 19 ++++++++++---------
> >  1 file changed, 10 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c
> > b/drivers/gpu/drm/i915/intel_sdvo.c
> > index 1277d31adb54..9c16e273fb8d 100644
> > --- a/drivers/gpu/drm/i915/intel_sdvo.c
> > +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> > @@ -984,6 +984,8 @@ static bool intel_sdvo_set_avi_infoframe(struct
> > intel_sdvo *intel_sdvo,
> >  					 const struct intel_crtc_state
> > *pipe_config,
> >  					 const struct
> > drm_connector_state *conn_state)
> >  {
> > +	const struct drm_display_mode *adjusted_mode =
> > +		&pipe_config->base.adjusted_mode;
> >  	uint8_t sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
> >  	union hdmi_infoframe frame;
> >  	int ret;
> > @@ -991,20 +993,19 @@ static bool intel_sdvo_set_avi_infoframe(struct
> > intel_sdvo *intel_sdvo,
> >  
> >  	ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
> >  						       conn_state-
> > >connector,
> > -						       &pipe_config-
> > >base.adjusted_mode);
> > +						       adjusted_mode);
> >  	if (ret < 0) {
> >  		DRM_ERROR("couldn't fill AVI infoframe\n");
> >  		return false;
> >  	}
> >  
> > -	if (intel_sdvo->rgb_quant_range_selectable) {
> > -		if (pipe_config->limited_color_range)
> > -			frame.avi.quantization_range =
> > -				HDMI_QUANTIZATION_RANGE_LIMITED;
> > -		else
> > -			frame.avi.quantization_range =
> > -				HDMI_QUANTIZATION_RANGE_FULL;
> > -	}
> > +	drm_hdmi_avi_infoframe_quant_range(&frame.avi,
> > +					   conn_state->connector,
> > +					   adjusted_mode,
> > +					   pipe_config-
> > >limited_color_range ?
> > +					   rgb_quant_range_selectableTE
> > D :
> > +					   HDMI_QUANTIZATION_RANGE_FULL
> > ,
> > +					   intel_sdvo-
> > >rgb_quant_range_selectable);
> 
> Seems like avi.quantization_range can now get set to _LIMITED or _FULL
> even when ->rgb_quant_range_selectable == false, i.e., it is not
> _DEFAULT anymore. Is that change in behavior intended?

->quant_range_selectable will be passed to
drm_hdmi_avi_infoframe_quant_range() which will do the right thing with
it.

That said, there is a slight behavioural change in that it will set
the Q bit even with QS==1 iff the quantization range matches the
default quantization range for the mode. I noted this in the radeon
patch but forgot to mention it here.

> 
> 
> >  
> >  	len = hdmi_infoframe_pack(&frame, sdvo_data,
> > sizeof(sdvo_data));
> >  	if (len < 0)

-- 
Ville Syrjälä
Intel


More information about the Intel-gfx mailing list