Message ID | 20190718145053.25808-5-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: YCbCr output fixes and prep work for YCbCr 4:4:4 output | expand |
On Thu, 2019-07-18 at 17:50 +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Pull the code for computing the limited color range > setting into a small helper. We'll add a bit more to it > later. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_hdmi.c | 30 +++++++++++++++---- > ---- > 1 file changed, 20 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c > b/drivers/gpu/drm/i915/display/intel_hdmi.c > index b8100cf21dd0..ca377ba3a15e 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c > @@ -2297,6 +2297,24 @@ intel_hdmi_ycbcr420_config(struct > drm_connector *connector, > return true; > } > > +static bool intel_hdmi_limited_color_range(const struct > intel_crtc_state *crtc_state, > + const struct > drm_connector_state *conn_state) > +{ > + const struct intel_digital_connector_state *intel_conn_state = > + to_intel_digital_connector_state(conn_state); > + const struct drm_display_mode *adjusted_mode = > + &crtc_state->base.adjusted_mode; > + > + if (intel_conn_state->broadcast_rgb == > INTEL_BROADCAST_RGB_AUTO) { > + /* See CEA-861-E - 5.1 Default Encoding Parameters */ > + return crtc_state->has_hdmi_sink && > + drm_default_rgb_quant_range(adjusted_mode) == > + HDMI_QUANTIZATION_RANGE_LIMITED; > + } else { > + return intel_conn_state->broadcast_rgb == > INTEL_BROADCAST_RGB_LIMITED; > + } > +} > + > int intel_hdmi_compute_config(struct intel_encoder *encoder, > struct intel_crtc_state *pipe_config, > struct drm_connector_state *conn_state) > @@ -2323,16 +2341,8 @@ int intel_hdmi_compute_config(struct > intel_encoder *encoder, > if (pipe_config->has_hdmi_sink) > pipe_config->has_infoframe = true; > > - if (intel_conn_state->broadcast_rgb == > INTEL_BROADCAST_RGB_AUTO) { > - /* See CEA-861-E - 5.1 Default Encoding Parameters */ > - pipe_config->limited_color_range = > - pipe_config->has_hdmi_sink && > - drm_default_rgb_quant_range(adjusted_mode) == > - HDMI_QUANTIZATION_RANGE_LIMITED; > - } else { > - pipe_config->limited_color_range = > - intel_conn_state->broadcast_rgb == > INTEL_BROADCAST_RGB_LIMITED; > - } > + pipe_config->limited_color_range = > + intel_hdmi_limited_color_range(pipe_config, > conn_state); > > if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) { > pipe_config->pixel_multiplier = 2; The changes look good to me. Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index b8100cf21dd0..ca377ba3a15e 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -2297,6 +2297,24 @@ intel_hdmi_ycbcr420_config(struct drm_connector *connector, return true; } +static bool intel_hdmi_limited_color_range(const struct intel_crtc_state *crtc_state, + const struct drm_connector_state *conn_state) +{ + const struct intel_digital_connector_state *intel_conn_state = + to_intel_digital_connector_state(conn_state); + const struct drm_display_mode *adjusted_mode = + &crtc_state->base.adjusted_mode; + + if (intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_AUTO) { + /* See CEA-861-E - 5.1 Default Encoding Parameters */ + return crtc_state->has_hdmi_sink && + drm_default_rgb_quant_range(adjusted_mode) == + HDMI_QUANTIZATION_RANGE_LIMITED; + } else { + return intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_LIMITED; + } +} + int intel_hdmi_compute_config(struct intel_encoder *encoder, struct intel_crtc_state *pipe_config, struct drm_connector_state *conn_state) @@ -2323,16 +2341,8 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder, if (pipe_config->has_hdmi_sink) pipe_config->has_infoframe = true; - if (intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_AUTO) { - /* See CEA-861-E - 5.1 Default Encoding Parameters */ - pipe_config->limited_color_range = - pipe_config->has_hdmi_sink && - drm_default_rgb_quant_range(adjusted_mode) == - HDMI_QUANTIZATION_RANGE_LIMITED; - } else { - pipe_config->limited_color_range = - intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_LIMITED; - } + pipe_config->limited_color_range = + intel_hdmi_limited_color_range(pipe_config, conn_state); if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) { pipe_config->pixel_multiplier = 2;