All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: clinton.a.taylor@intel.com
Cc: Intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915/hdmi: Detect HDMI 2.0 monitors using multiple EDID capabilities
Date: Thu, 18 Oct 2018 13:23:12 +0300	[thread overview]
Message-ID: <20181018102312.GU9144@intel.com> (raw)
In-Reply-To: <1539817834-23408-1-git-send-email-clinton.a.taylor@intel.com>

On Wed, Oct 17, 2018 at 04:10:34PM -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 checks for YCbCr420 Deep Color, YCbCR420 VDB,
> YCBCR420 CMDB capabilities, and pipe is YCbCr420 to the existing SCDC
> supported check to Infer SINK is HDMI 2.0.
> 
> HDMI 2.0 CTS HF1-51 test fails on the QD980B.
> 
> 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 | 32 +++++++++++++++++++++++++++++++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 2c53efc..6913806 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -458,6 +458,34 @@ static void intel_write_infoframe(struct intel_encoder *encoder,
>  					frame->any.type, buffer, len);
>  }
>  
> +static bool is_hdmi2(const struct drm_connector *connector,
> +			const struct intel_crtc_state *crtc_state)
> +{
> +	bool hdmi2 = false;
> +	bool vdb_mode = false;
> +	bool cmdb_mode = false;
> +	int i = 0;
> +
> +	/* check VDB bits for HDMI 2.0 mode */
> +	for (i = 0; i < BITS_TO_LONGS(128); i++)
> +		if (connector->display_info.hdmi.y420_vdb_modes[i])
> +			vdb_mode = true;
> +
> +	/* check CMDB bits for HDMI 2.0 mode */
> +	for (i = 0; i < BITS_TO_LONGS(128); i++)
> +		if (connector->display_info.hdmi.y420_cmdb_modes[i])
> +			cmdb_mode = true;
> +
> +	if (connector->display_info.hdmi.scdc.supported ||
> +	    connector->display_info.hdmi.y420_dc_modes ||
> +	    crtc_state->ycbcr420 || vdb_mode || cmdb_mode) {

I think we can replace all this 4:2:0 related stuff with just a
display_info->color_formats & DRM_COLOR_FORMAT_YCRCB420
check.

> +		DRM_DEBUG_KMS("Inferred HDMI2 sink present\n");
> +		hdmi2 = true;
> +	}
> +
> +	return hdmi2;
> +}
> +
>  static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
>  					 const struct intel_crtc_state *crtc_state,
>  					 const struct drm_connector_state *conn_state)
> @@ -466,10 +494,12 @@ 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 = false;
>  	union hdmi_infoframe frame;
>  	int ret;
>  
> +	is_hdmi2_sink = is_hdmi2(connector, crtc_state);
> +
>  	ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
>  						       adjusted_mode,
>  						       is_hdmi2_sink);
> -- 
> 1.9.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2018-10-18 10:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-17 23:10 [PATCH] drm/i915/hdmi: Detect HDMI 2.0 monitors using multiple EDID capabilities clinton.a.taylor
2018-10-17 23:22 ` ✗ Fi.CI.BAT: failure for " Patchwork
2018-10-18 10:23 ` Ville Syrjälä [this message]
2018-10-24 21:04 ` [PATCH v2] " clinton.a.taylor
2018-10-26 16:26   ` Ville Syrjälä
2018-10-24 22:10 ` ✓ Fi.CI.BAT: success for drm/i915/hdmi: Detect HDMI 2.0 monitors using multiple EDID capabilities (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181018102312.GU9144@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=Intel-gfx@lists.freedesktop.org \
    --cc=clinton.a.taylor@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.