drm/i915/display: Fixes quantization range for YCbCr output
authorUma Shankar <uma.shankar@intel.com>
Mon, 30 Nov 2020 20:47:27 +0000 (02:17 +0530)
committerUma Shankar <uma.shankar@intel.com>
Tue, 1 Dec 2020 19:52:30 +0000 (01:22 +0530)
This patch fixes the quantization range for YCbCr output on
Lspcon based devices.

v2: Re-phrased the description and added Ville's Rb.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201130204738.2443-5-uma.shankar@intel.com
drivers/gpu/drm/i915/display/intel_lspcon.c

index f98891f058daca036c2c3045f03679ce174915f7..7cb65e0f241e7109637e197dd563ad8a5100f07c 100644 (file)
@@ -523,12 +523,17 @@ void lspcon_set_infoframes(struct intel_encoder *encoder,
        else
                frame.avi.colorspace = HDMI_COLORSPACE_RGB;
 
-       drm_hdmi_avi_infoframe_quant_range(&frame.avi,
-                                          conn_state->connector,
-                                          adjusted_mode,
-                                          crtc_state->limited_color_range ?
-                                          HDMI_QUANTIZATION_RANGE_LIMITED :
-                                          HDMI_QUANTIZATION_RANGE_FULL);
+       if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) {
+               drm_hdmi_avi_infoframe_quant_range(&frame.avi,
+                                                  conn_state->connector,
+                                                  adjusted_mode,
+                                                  crtc_state->limited_color_range ?
+                                                  HDMI_QUANTIZATION_RANGE_LIMITED :
+                                                  HDMI_QUANTIZATION_RANGE_FULL);
+       } else {
+               frame.avi.quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
+               frame.avi.ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
+       }
 
        ret = hdmi_infoframe_pack(&frame, buf, sizeof(buf));
        if (ret < 0) {