|
@@ -4831,7 +4831,8 @@ void
|
|
|
drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
|
|
|
const struct drm_display_mode *mode,
|
|
|
enum hdmi_quantization_range rgb_quant_range,
|
|
|
- bool rgb_quant_range_selectable)
|
|
|
+ bool rgb_quant_range_selectable,
|
|
|
+ bool is_hdmi2_sink)
|
|
|
{
|
|
|
/*
|
|
|
* CEA-861:
|
|
@@ -4855,8 +4856,15 @@ drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
|
|
|
* 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."
|
|
|
+ *
|
|
|
+ * Unfortunate certain sinks (eg. VIZ Model 67/E261VA) get confused
|
|
|
+ * by non-zero YQ when receiving RGB. There doesn't seem to be any
|
|
|
+ * good way to tell which version of CEA-861 the sink supports, so
|
|
|
+ * we limit non-zero YQ to HDMI 2.0 sinks only as HDMI 2.0 is based
|
|
|
+ * on on CEA-861-F.
|
|
|
*/
|
|
|
- if (rgb_quant_range == HDMI_QUANTIZATION_RANGE_LIMITED)
|
|
|
+ if (!is_hdmi2_sink ||
|
|
|
+ rgb_quant_range == HDMI_QUANTIZATION_RANGE_LIMITED)
|
|
|
frame->ycc_quantization_range =
|
|
|
HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
|
|
|
else
|