All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suraj Kandpal <suraj.kandpal@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: uma.shankar@intel.com, ankit.k.nautiyal@intel.com,
	Suraj Kandpal <suraj.kandpal@intel.com>
Subject: [PATCH 11/11] drm/i915/hdcp: Read Rxcaps for robustibility
Date: Fri,  2 Feb 2024 12:08:52 +0530	[thread overview]
Message-ID: <20240202063852.1076862-12-suraj.kandpal@intel.com> (raw)
In-Reply-To: <20240202063852.1076862-1-suraj.kandpal@intel.com>

We see some monitors and docks report incorrect hdcp version
and capability in first few reads so we read rx_caps three times
before we conclude the monitor's or docks HDCP capability

--v2
-Add comment to justify the 3 time read loop for hdcp capability[Ankit]

Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 29 ++++++++++++++------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
index 2cd987645776..b586477c987b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
@@ -638,18 +638,29 @@ int _intel_dp_hdcp2_capable(struct drm_dp_aux *aux,
 			    bool *capable)
 {
 	u8 rx_caps[3];
-	int ret;
+	int ret, i;
 
 	*capable = false;
-	ret = drm_dp_dpcd_read(aux,
-			       DP_HDCP_2_2_REG_RX_CAPS_OFFSET,
-			       rx_caps, HDCP_2_2_RXCAPS_LEN);
-	if (ret != HDCP_2_2_RXCAPS_LEN)
-		return ret >= 0 ? -EIO : ret;
 
-	if (rx_caps[0] == HDCP_2_2_RX_CAPS_VERSION_VAL &&
-	    HDCP_2_2_DP_HDCP_CAPABLE(rx_caps[2]))
-		*capable = true;
+	/*
+	 * Some HDCP monitors act really shady by not giving the correct hdcp
+	 * capability on the first rx_caps read and usually take an extra read
+	 * to give the capability. We read rx_caps three times before we
+	 * declare a monitor not capable of HDCP 2.2.
+	 */
+	for (i = 0; i < 3; i++) {
+		ret = drm_dp_dpcd_read(aux,
+				       DP_HDCP_2_2_REG_RX_CAPS_OFFSET,
+				       rx_caps, HDCP_2_2_RXCAPS_LEN);
+		if (ret != HDCP_2_2_RXCAPS_LEN)
+			return ret >= 0 ? -EIO : ret;
+
+		if (rx_caps[0] == HDCP_2_2_RX_CAPS_VERSION_VAL &&
+		    HDCP_2_2_DP_HDCP_CAPABLE(rx_caps[2])) {
+			*capable = true;
+			break;
+		}
+	}
 
 	return 0;
 }
-- 
2.25.1


  parent reply	other threads:[~2024-02-02  6:48 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-02  6:38 [PATCH 00/11] HDCP Type1 MST fixes Suraj Kandpal
2024-02-02  6:38 ` [PATCH 01/11] drm/i915/hdcp: Move to direct reads for HDCP Suraj Kandpal
2024-02-02  6:38 ` [PATCH 02/11] drm/i915/hdcp: Move source hdcp2 checks into its own function Suraj Kandpal
2024-02-02  6:38 ` [PATCH 03/11] drm/i915/hdcp: Refactor intel_dp_hdcp2_capable Suraj Kandpal
2024-02-02  6:38 ` [PATCH 04/11] drm/i915/hdcp: Pass drm_dp_aux to read_bcaps function Suraj Kandpal
2024-02-02  6:38 ` [PATCH 05/11] drm/i915/hdcp: Add new remote capability check shim function Suraj Kandpal
2024-02-02 10:01   ` Nautiyal, Ankit K
2024-02-02  6:38 ` [PATCH 06/11] drm/i915/hdcp: HDCP Capability for the downstream device Suraj Kandpal
2024-02-02  9:56   ` Nautiyal, Ankit K
2024-02-02  6:38 ` [PATCH 07/11] drm/i915/hdcp: Remove additional timing for reading mst hdcp message Suraj Kandpal
2024-02-02  6:38 ` [PATCH 08/11] drm/i915/hdcp: Extract hdcp structure from correct connector Suraj Kandpal
2024-02-02  6:38 ` [PATCH 09/11] drm/i915/hdcp: Save acquire_ctx in intel_hdcp Suraj Kandpal
2024-02-02  6:38 ` [PATCH 10/11] drm/i915/hdcp: Allocate stream id after HDCP AKE stage Suraj Kandpal
2024-02-02  6:38 ` Suraj Kandpal [this message]
2024-02-02  7:20 ` ✗ Fi.CI.SPARSE: warning for HDCP Type1 MST fixes Patchwork
2024-02-02  7:39 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-02-04  7:39 [PATCH 00/11] " Suraj Kandpal
2024-02-04  7:39 ` [PATCH 11/11] drm/i915/hdcp: Read Rxcaps for robustibility Suraj Kandpal
2024-02-04 14:24 [PATCH 00/11] HDCP Type1 MST fixes Suraj Kandpal
2024-02-04 14:25 ` [PATCH 11/11] drm/i915/hdcp: Read Rxcaps for robustibility Suraj Kandpal

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=20240202063852.1076862-12-suraj.kandpal@intel.com \
    --to=suraj.kandpal@intel.com \
    --cc=ankit.k.nautiyal@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=uma.shankar@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.