drm/i915: Fix AVI infoframe quantization range for YCbCr output
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 18 Jul 2019 14:50:44 +0000 (17:50 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 20 Sep 2019 18:39:54 +0000 (21:39 +0300)
We're configuring the AVI infoframe quantization range bits as if
we're always transmitting RGB pixels. Let's fix this so that we
correctly indicate limited range YCC quantization range when
transmitting YCbCr instead.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190718145053.25808-4-ville.syrjala@linux.intel.com
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
drivers/gpu/drm/i915/display/intel_hdmi.c

index 04a8718..0082c46 100644 (file)
@@ -724,11 +724,16 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
 
        drm_hdmi_avi_infoframe_colorspace(frame, conn_state);
 
-       drm_hdmi_avi_infoframe_quant_range(frame, 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, connector,
+                                                  adjusted_mode,
+                                                  crtc_state->limited_color_range ?
+                                                  HDMI_QUANTIZATION_RANGE_LIMITED :
+                                                  HDMI_QUANTIZATION_RANGE_FULL);
+       } else {
+               frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
+               frame->ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
+       }
 
        drm_hdmi_avi_infoframe_content_type(frame, conn_state);