All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	daniel.vetter@ffwll.ch, tomas.winkler@intel.com,
	uma.shankar@intel.com
Subject: [PATCH v12 18/38] drm/i915: Fix KBL HDCP2.2 encrypt status signalling
Date: Sat,  9 Feb 2019 12:42:47 +0530	[thread overview]
Message-ID: <1549696387-28268-19-git-send-email-ramalingam.c@intel.com> (raw)
In-Reply-To: <1549696387-28268-1-git-send-email-ramalingam.c@intel.com>

HDCP transmitter is supposed to indicate the HDCP encryption status of
the link through enc_en signals in a window of time called "window of
opportunity" defined by HDCP HDMI spec.

But on KBL this timing of signalling has an issue. To fix the issue this
WA of resetting the signalling is required.

v2:
  WA is moved into the toggle_signalling [Daniel]
v3:
  Commit msg is rewritten with more information
v4:
  Reviewed-by Daniel.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 42 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 6a3e400f54d7..c2c91e6645a5 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1083,10 +1083,44 @@ int intel_hdmi_hdcp_read_v_prime_part(struct intel_digital_port *intel_dig_port,
 	return ret;
 }
 
+static int kbl_repositioning_enc_en_signal(struct intel_connector *connector)
+{
+	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
+	struct drm_crtc *crtc = connector->base.state->crtc;
+	struct intel_crtc *intel_crtc = container_of(crtc,
+						     struct intel_crtc, base);
+	u32 scanline;
+	int ret;
+
+	for (;;) {
+		scanline = I915_READ(PIPEDSL(intel_crtc->pipe));
+		if (scanline > 100 && scanline < 200)
+			break;
+		usleep_range(25, 50);
+	}
+
+	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, false);
+	if (ret) {
+		DRM_ERROR("Disable HDCP signalling failed (%d)\n", ret);
+		return ret;
+	}
+	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, true);
+	if (ret) {
+		DRM_ERROR("Enable HDCP signalling failed (%d)\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
 static
 int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
 				      bool enable)
 {
+	struct intel_hdmi *hdmi = &intel_dig_port->hdmi;
+	struct intel_connector *connector = hdmi->attached_connector;
+	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
 	int ret;
 
 	if (!enable)
@@ -1098,6 +1132,14 @@ int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
 			  enable ? "Enable" : "Disable", ret);
 		return ret;
 	}
+
+	/*
+	 * WA: To fix incorrect positioning of the window of
+	 * opportunity and enc_en signalling in KABYLAKE.
+	 */
+	if (IS_KABYLAKE(dev_priv) && enable)
+		return kbl_repositioning_enc_en_signal(connector);
+
 	return 0;
 }
 
-- 
2.7.4

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

  parent reply	other threads:[~2019-02-09  7:12 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-09  7:12 [PATCH v12 00/38] drm/i915: Implement HDCP2.2 Ramalingam C
2019-02-09  7:12 ` [PATCH v12 01/38] drm/doc: document recommended component helper usage Ramalingam C
2019-02-11  8:31   ` Daniel Vetter
2019-02-12 12:44   ` Laurent Pinchart
2019-02-12 12:52     ` Daniel Vetter
2019-02-09  7:12 ` [PATCH v12 02/38] drm/i915: Gathering the HDCP1.4 routines together Ramalingam C
2019-02-09  7:12 ` [PATCH v12 03/38] drm: header for i915 - MEI_HDCP interface Ramalingam C
2019-02-09  7:12 ` [PATCH v12 04/38] drm/i915: Initialize HDCP2.2 Ramalingam C
2019-02-09  7:12 ` [PATCH v12 05/38] drm/i915: MEI interface definition Ramalingam C
2019-02-09  7:12 ` [PATCH v12 06/38] drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking Ramalingam C
2019-02-09  7:12 ` [PATCH v12 07/38] drm/i915: Enable and Disable of HDCP2.2 Ramalingam C
2019-02-09  7:12 ` [PATCH v12 08/38] drm/i915: Implement HDCP2.2 receiver authentication Ramalingam C
2019-02-09  7:12 ` [PATCH v12 09/38] drm: helper functions for hdcp2 seq_num to from u32 Ramalingam C
2019-02-09  7:12 ` [PATCH v12 10/38] drm/i915: Implement HDCP2.2 repeater authentication Ramalingam C
2019-02-09  7:12 ` [PATCH v12 11/38] drm: HDCP2.2 link check period Ramalingam C
2019-02-09  7:12 ` [PATCH v12 12/38] drm/i915: Implement HDCP2.2 link integrity check Ramalingam C
2019-02-09  7:12 ` [PATCH v12 13/38] drm/i915: Handle HDCP2.2 downstream topology change Ramalingam C
2019-02-09  7:12 ` [PATCH v12 14/38] drm: removing the DP Errata msg and its msg id Ramalingam C
2019-02-09  7:12 ` [PATCH v12 15/38] drm/i915: Implement the HDCP2.2 support for DP Ramalingam C
2019-02-09  7:12 ` [PATCH v12 16/38] drm/i915: Implement the HDCP2.2 support for HDMI Ramalingam C
2019-02-09  7:12 ` [PATCH v12 17/38] drm/i915: CP_IRQ handling for DP HDCP2.2 msgs Ramalingam C
2019-02-09  7:12 ` Ramalingam C [this message]
2019-02-09  7:12 ` [PATCH v12 19/38] mei: bus: whitelist hdcp client Ramalingam C
2019-02-09  7:12 ` [PATCH v12 20/38] mei: bus: export to_mei_cl_device for mei client device drivers Ramalingam C
2019-02-09  7:12 ` [PATCH v12 21/38] mei: me: add ice lake point device id Ramalingam C
2019-02-09  7:57   ` Greg KH
2019-02-09  8:23     ` Winkler, Tomas
2019-02-12 13:28   ` Sasha Levin
2019-02-12 13:28   ` Sasha Levin via dri-devel
2019-02-09  7:12 ` [PATCH v12 22/38] misc/mei/hdcp: Client driver for HDCP application Ramalingam C
2019-02-09  7:12 ` [PATCH v12 23/38] misc/mei/hdcp: Define ME FW interface for HDCP2.2 Ramalingam C
2019-02-09  7:12 ` [PATCH v12 24/38] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session Ramalingam C
2019-02-09 16:09   ` Winkler, Tomas
2019-02-10  8:18     ` C, Ramalingam
2019-02-10  8:25       ` Winkler, Tomas
2019-02-10  9:02         ` C, Ramalingam
2019-02-10 19:58           ` Winkler, Tomas
2019-02-11  5:04   ` [PATCH v13 " Ramalingam C
2019-02-09  7:12 ` [PATCH v12 25/38] misc/mei/hdcp: Verify Receiver Cert and prepare km Ramalingam C
2019-02-09  7:12 ` [PATCH v12 26/38] misc/mei/hdcp: Verify H_prime Ramalingam C
2019-02-09  7:12 ` [PATCH v12 27/38] misc/mei/hdcp: Store the HDCP Pairing info Ramalingam C
2019-02-09  7:12 ` [PATCH v12 28/38] misc/mei/hdcp: Initiate Locality check Ramalingam C
2019-02-09  7:12 ` [PATCH v12 29/38] misc/mei/hdcp: Verify L_prime Ramalingam C
2019-02-09  7:12 ` [PATCH v12 30/38] misc/mei/hdcp: Prepare Session Key Ramalingam C
2019-02-09  7:13 ` [PATCH v12 31/38] misc/mei/hdcp: Repeater topology verification and ack Ramalingam C
2019-02-09  7:13 ` [PATCH v12 32/38] misc/mei/hdcp: Verify M_prime Ramalingam C
2019-02-11 18:10   ` Winkler, Tomas
2019-02-09  7:13 ` [PATCH v12 33/38] misc/mei/hdcp: Enabling the HDCP authentication Ramalingam C
2019-02-09  7:13 ` [PATCH v12 34/38] misc/mei/hdcp: Closing wired HDCP2.2 Tx Session Ramalingam C
2019-02-09  7:13 ` [PATCH v12 35/38] misc/mei/hdcp: Component framework for I915 Interface Ramalingam C
2019-02-09  7:13 ` [PATCH v12 36/38] FOR_TEST_ONLY: i915/Kconfig: Select mei_hdcp by I915 Ramalingam C
2019-02-09  7:13 ` [PATCH v12 37/38] FOR_TESTING_ONLY: debugfs: Excluding the LSPCon for HDCP1.4 Ramalingam C
2019-02-09  7:13 ` [PATCH v12 38/38] FOR_TESTING_ONLY: ICL: Limit clk to <= 340MHz Ramalingam C
2019-02-09  7:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Implement HDCP2.2 Patchwork
2019-02-09  7:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-02-09  8:04 ` ✓ Fi.CI.BAT: success " Patchwork
2019-02-09 10:14 ` ✓ Fi.CI.IGT: " Patchwork
2019-02-11  5:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Implement HDCP2.2 (rev2) Patchwork
2019-02-11  5:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-02-11  5:58 ` ✓ Fi.CI.BAT: success " Patchwork
2019-02-11  8:06 ` ✗ Fi.CI.IGT: failure " 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=1549696387-28268-19-git-send-email-ramalingam.c@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=tomas.winkler@intel.com \
    --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.