diff mbox series

[v2] drm/i915/hdmi: Detect HDMI 2.0 monitors using multiple EDID capabilities

Message ID 1540415073-5102-1-git-send-email-clinton.a.taylor@intel.com (mailing list archive)
State New, archived
Headers show
Series [v2] drm/i915/hdmi: Detect HDMI 2.0 monitors using multiple EDID capabilities | expand

Commit Message

Taylor, Clinton A Oct. 24, 2018, 9:04 p.m. UTC
From: Clint Taylor <clinton.a.taylor@intel.com>

HDMI 2.0 monitors may not support SCDC and still be able to accept VICs
above 63. Use multiple EDID capbilities to determine if the SINK is
actually an HDMI 2.0 device. The QD980B HDMI 2.0 Analyzer generates unique
EDIDs during CTS tests that don't contain a HDMI Forum VSDB if the block is
not used during the test. The current HDMI AVI infoframe code only uses the
SCDC supported information in the HDMI Forum VSDB to determine if the sink
is HDMI 2.0. This patch adds a check for YCbCr420 present in the EDID
supported formats as well as the existing SCDC supported check.

HDMI 2.0 CTS HF1-51 test fails on the QD980B.

V2: Make check for display_info->color formats == YCbCR420 and SCDC

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107894
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Shashank Sharma <shashank.sharma@intel.com>

Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ville Syrjälä Oct. 26, 2018, 4:26 p.m. UTC | #1
On Wed, Oct 24, 2018 at 02:04:33PM -0700, clinton.a.taylor@intel.com wrote:
> From: Clint Taylor <clinton.a.taylor@intel.com>
> 
> HDMI 2.0 monitors may not support SCDC and still be able to accept VICs
> above 63. Use multiple EDID capbilities to determine if the SINK is
> actually an HDMI 2.0 device. The QD980B HDMI 2.0 Analyzer generates unique
> EDIDs during CTS tests that don't contain a HDMI Forum VSDB if the block is
> not used during the test. The current HDMI AVI infoframe code only uses the
> SCDC supported information in the HDMI Forum VSDB to determine if the sink
> is HDMI 2.0. This patch adds a check for YCbCr420 present in the EDID
> supported formats as well as the existing SCDC supported check.
> 
> HDMI 2.0 CTS HF1-51 test fails on the QD980B.
> 
> V2: Make check for display_info->color formats == YCbCR420 and SCDC
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107894
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Shashank Sharma <shashank.sharma@intel.com>
> 

Dropped the bogus newline here, and pushed to drm-misc-next.
Thanks for the patch.

> Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 89d5e39..eca0a3e 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -466,7 +466,8 @@ static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
>  	const struct drm_display_mode *adjusted_mode =
>  		&crtc_state->base.adjusted_mode;
>  	struct drm_connector *connector = &intel_hdmi->attached_connector->base;
> -	bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported;
> +	bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported ||
> +	   connector->display_info.color_formats & DRM_COLOR_FORMAT_YCRCB420;
>  	union hdmi_infoframe frame;
>  	int ret;
>  
> -- 
> 1.9.1
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 89d5e39..eca0a3e 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -466,7 +466,8 @@  static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
 	const struct drm_display_mode *adjusted_mode =
 		&crtc_state->base.adjusted_mode;
 	struct drm_connector *connector = &intel_hdmi->attached_connector->base;
-	bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported;
+	bool is_hdmi2_sink = connector->display_info.hdmi.scdc.supported ||
+	   connector->display_info.color_formats & DRM_COLOR_FORMAT_YCRCB420;
 	union hdmi_infoframe frame;
 	int ret;