drm/edid: Set YQ bits in the AVI infoframe according to CEA-861-F
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 11 Jan 2017 12:57:25 +0000 (14:57 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 26 Jan 2017 16:37:13 +0000 (18:37 +0200)
CEA-861-F tells us:
"When transmitting any RGB colorimetry, the Source should set the
 YQ-field to match the RGB Quantization Range being transmitted
 (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB,
 set YQ=1) and the Sink shall ignore the YQ-field."

So let's go ahead and do that. Perhaps there are sinks that don't
ignore the YQ as they should for RGB?

I wasn't able to find similar text in CEA-861-E, so it would seem
to be a fairly "recent" addition.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170111125725.8086-6-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/drm_edid.c

index 292cb50236832251651a7875457e5c299da23ec3..baa6ccb3e18b0e504a20befe6f62f5b315a1c2a5 100644 (file)
@@ -4321,6 +4321,20 @@ drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
                frame->quantization_range = rgb_quant_range;
        else
                frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
+
+       /*
+        * CEA-861-F:
+        * "When transmitting any RGB colorimetry, the Source should set the
+        *  YQ-field to match the RGB Quantization Range being transmitted
+        *  (e.g., when Limited Range RGB, set YQ=0 or when Full Range RGB,
+        *  set YQ=1) and the Sink shall ignore the YQ-field."
+        */
+       if (rgb_quant_range == HDMI_QUANTIZATION_RANGE_LIMITED)
+               frame->ycc_quantization_range =
+                       HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
+       else
+               frame->ycc_quantization_range =
+                       HDMI_YCC_QUANTIZATION_RANGE_FULL;
 }
 EXPORT_SYMBOL(drm_hdmi_avi_infoframe_quant_range);