Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Paul <seanpaul@chromium.org>
To: Ramalingam C <ramalingam.c@intel.com>
Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com,
	dri-devel@lists.freedesktop.org, uma.shankar@intel.com,
	tomas.winkler@intel.com
Subject: Re: [Intel-gfx] [PATCH v5 13/40] drm/i915: Implement HDCP2.2 Enable and Disable
Date: Mon, 9 Jul 2018 16:48:29 -0400	[thread overview]
Message-ID: <20180709204829.GP20303@art_vandelay> (raw)
In-Reply-To: <1530088829-11730-14-git-send-email-ramalingam.c@intel.com>

On Wed, Jun 27, 2018 at 02:10:02PM +0530, Ramalingam C wrote:
> Implements a sequence of enabling and disabling the HDCP2.2
> (auth and encryption).

This is really hard to review, since all I see are stubs. I'd much rather have
each patch do something useful, instead of just call stubs. That said, I don't
have a vested interest in HDCP2.2 on intel, so if others are fine with it, I am
too.

Sean

> 
> v2:
>   Rebased.
> v3:
>   No Changes.
> v4:
>   No Changes.
> v5:
>   Rebased as part of the patch reordering.
>   HDCP2 encryption status is tracked.
> 
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hdcp.c | 105 +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 104 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c
> index 34bafc2025f7..f72684488bc7 100644
> --- a/drivers/gpu/drm/i915/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/intel_hdcp.c
> @@ -994,14 +994,117 @@ int intel_hdcp_check_link(struct intel_connector *connector)
>  	return ret;
>  }
>  
> +static int hdcp2_close_mei_session(struct intel_connector *connector)
> +{
> +	struct mei_hdcp_data *data = &connector->hdcp.mei_data;
> +	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> +	struct i915_hdcp_component *comp = dev_priv->hdcp_comp;
> +	int ret;
> +
> +	if (!comp)
> +		return -EINVAL;
> +
> +	mutex_lock(&comp->mutex);
> +	if (!comp->ops || !comp->mei_cldev || data->port == INVALID_PORT) {
> +		mutex_unlock(&comp->mutex);
> +		return -EINVAL;
> +	}
> +	ret = comp->ops->close_hdcp_session(comp->mei_cldev, data);
> +	mutex_unlock(&comp->mutex);
> +
> +	return ret;
> +}
> +
> +static int hdcp2_deauthenticate_port(struct intel_connector *connector)
> +{
> +	return hdcp2_close_mei_session(connector);
> +}
> +
> +static int hdcp2_authenticate_sink(struct intel_connector *connector)
> +{
> +	return 0;
> +}
> +
> +static int hdcp2_enable_encryption(struct intel_connector *connector)
> +{
> +	return 0;
> +}
> +
> +static int hdcp2_disable_encryption(struct intel_connector *connector)
> +{
> +	return 0;
> +}
> +
> +static int hdcp2_authenticate_and_encrypt(struct intel_connector *connector)
> +{
> +	int ret, i, tries = 3;
> +
> +	for (i = 0; i < tries; i++) {
> +		ret = hdcp2_authenticate_sink(connector);
> +		if (!ret)
> +			break;
> +
> +		/* Clearing the mei hdcp session */
> +		hdcp2_deauthenticate_port(connector);
> +		DRM_DEBUG_KMS("HDCP2.2 Auth %d of %d Failed.(%d)\n",
> +			      i + 1, tries, ret);
> +	}
> +
> +	if (i != tries) {
> +		/*
> +		 * Ensuring the required 200mSec min time interval between
> +		 * Session Key Exchange and encryption.
> +		 */
> +		msleep(HDCP_2_2_DELAY_BEFORE_ENCRYPTION_EN);
> +		ret = hdcp2_enable_encryption(connector);
> +		if (ret < 0) {
> +			DRM_DEBUG_KMS("Encryption Enable Failed.(%d)\n", ret);
> +			hdcp2_deauthenticate_port(connector);
> +		}
> +	}
> +
> +	return ret;
> +}
> +
>  static int _intel_hdcp2_enable(struct intel_connector *connector)
>  {
> +	struct intel_hdcp *hdcp = &connector->hdcp;
> +	int ret;
> +
> +	DRM_DEBUG_KMS("[%s:%d] HDCP2.2 is being enabled. Type: %d\n",
> +		      connector->base.name, connector->base.base.id,
> +		      hdcp->content_type);
> +
> +	ret = hdcp2_authenticate_and_encrypt(connector);
> +	if (ret) {
> +		DRM_ERROR("HDCP2 Type%d  Enabling Failed. (%d)\n",
> +			  hdcp->content_type, ret);
> +		return ret;
> +	}
> +
> +	DRM_DEBUG_KMS("[%s:%d] HDCP2.2 is enabled. Type %d\n",
> +		      connector->base.name, connector->base.base.id,
> +		      hdcp->content_type);
> +
> +	hdcp->hdcp2_in_use = true;
> +	hdcp->hdcp_value = DRM_MODE_CONTENT_PROTECTION_ENABLED;
> +	schedule_work(&hdcp->hdcp_prop_work);
>  	return 0;
>  }
>  
>  static int _intel_hdcp2_disable(struct intel_connector *connector)
>  {
> -	return 0;
> +	int ret;
> +
> +	DRM_DEBUG_KMS("[%s:%d] HDCP2.2 is being Disabled\n",
> +		      connector->base.name, connector->base.base.id);
> +
> +	ret = hdcp2_disable_encryption(connector);
> +
> +	hdcp2_deauthenticate_port(connector);
> +	connector->hdcp.hdcp2_in_use = false;
> +
> +	return ret;
>  }
>  
>  static int i915_hdcp_component_master_bind(struct device *dev)
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-07-09 20:48 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-27  8:39 [PATCH v5 00/40] drm/i915: Implement HDCP2.2 Ramalingam C
2018-06-27  8:39 ` [PATCH v5 01/40] drm: hdcp2.2 authentication msg definitions Ramalingam C
2018-07-09 20:21   ` Sean Paul
2018-07-11 17:57     ` C, Ramalingam
2018-07-11 19:08       ` Sean Paul
2018-07-12  3:52         ` [Intel-gfx] " C, Ramalingam
2018-06-27  8:39 ` [PATCH v5 02/40] drm: HDMI and DP specific HDCP2.2 defines Ramalingam C
2018-07-09 20:23   ` Sean Paul
2018-07-11 17:59     ` C, Ramalingam
2018-06-27  8:39 ` [PATCH v5 03/40] mei: bus: whitelist hdcp client Ramalingam C
2018-06-27  8:39 ` [PATCH v5 04/40] linux/mei: Header for mei_hdcp driver interface Ramalingam C
2018-06-27  8:39 ` [PATCH v5 05/40] drm/i915: wrapping all hdcp var into intel_hdcp Ramalingam C
2018-07-09 20:30   ` Sean Paul
2018-07-11 18:06     ` C, Ramalingam
2018-06-27  8:39 ` [PATCH v5 06/40] drm/i915: Define HDCP2.2 related variables Ramalingam C
2018-07-09 20:31   ` Sean Paul
2018-07-12 14:33     ` Ramalingam C
2018-06-27  8:39 ` [PATCH v5 07/40] drm/i915: Define Intel HDCP2.2 registers Ramalingam C
2018-07-09 20:31   ` Sean Paul
2018-06-27  8:39 ` [PATCH v5 08/40] drm/i915: Initialize HDCP2.2 and its MEI interface Ramalingam C
2018-06-28 11:41   ` [Intel-gfx] " Dan Carpenter
2018-06-27  8:39 ` [PATCH v5 09/40] drm/i915: Schedule hdcp_check_link in _intel_hdcp_enable Ramalingam C
2018-07-09 20:34   ` Sean Paul
2018-07-11 19:07     ` C, Ramalingam
2018-07-11 21:05       ` Sean Paul
2018-07-12  3:49         ` C, Ramalingam
2018-06-27  8:39 ` [PATCH v5 10/40] drm/i915: Pullout the bksv read and validation Ramalingam C
2018-07-09 20:35   ` [Intel-gfx] " Sean Paul
2018-06-27  8:40 ` [PATCH v5 11/40] drm/i915: Enable superior HDCP ver that is capable Ramalingam C
2018-07-09 20:44   ` Sean Paul
2018-07-12 14:30     ` Ramalingam C
2018-06-27  8:40 ` [PATCH v5 12/40] drm/i915: Enable HDCP1.4 incase of HDCP2.2 failure Ramalingam C
2018-07-09 20:44   ` Sean Paul
2018-07-12 14:31     ` [Intel-gfx] " Ramalingam C
2018-06-27  8:40 ` [PATCH v5 13/40] drm/i915: Implement HDCP2.2 Enable and Disable Ramalingam C
2018-07-09 20:48   ` Sean Paul [this message]
2018-07-12 14:41     ` Ramalingam C
2018-06-27  8:40 ` [PATCH v5 14/40] drm/i915: Enable and Disable HDCP2.2 port encryption Ramalingam C
2018-06-27  8:40 ` [PATCH v5 15/40] drm/i915: Implement HDCP2.2 receiver authentication Ramalingam C
2018-06-27  8:40 ` [PATCH v5 16/40] drm/i915: Implement HDCP2.2 repeater authentication Ramalingam C
2018-06-27 14:23   ` kbuild test robot
2018-06-27  8:40 ` [PATCH v5 17/40] drm/i915: Implement HDCP2.2 link integrity check Ramalingam C
2018-06-27  8:40 ` [PATCH v5 18/40] drm/i915: Handle HDCP2.2 downstream topology change Ramalingam C
2018-06-27  8:40 ` [PATCH v5 19/40] drm/i915: hdcp_check_link only on CP_IRQ Ramalingam C
2018-07-09 20:49   ` Sean Paul
2018-06-27  8:40 ` [PATCH v5 20/40] drm/i915: Check HDCP 1.4 and 2.2 link " Ramalingam C
2018-07-09 20:50   ` Sean Paul
2018-07-12  3:54     ` C, Ramalingam
2018-06-27  8:40 ` [PATCH v5 21/40] drm/i915/gmbus: Increase the Bytes per Rd/Wr Op Ramalingam C
2018-06-27  8:40 ` [PATCH v5 22/40] drm/i915/gmbus: Enable burst read Ramalingam C
2018-06-27  8:40 ` [PATCH v5 23/40] drm/i915: Implement the HDCP2.2 support for DP Ramalingam C
2018-06-27  8:40 ` [PATCH v5 24/40] drm/i915: Implement the HDCP2.2 support for HDMI Ramalingam C
2018-06-27  8:40 ` [PATCH v5 25/40] drm/i915: Add HDCP2.2 support for DP connectors Ramalingam C
2018-06-27  8:40 ` [PATCH v5 26/40] drm/i915: Add HDCP2.2 support for HDMI connectors Ramalingam C
2018-06-27  8:40 ` [PATCH v5 27/40] misc/mei/hdcp: Client driver for HDCP application Ramalingam C
2018-06-27  8:40 ` [PATCH v5 28/40] misc/mei/hdcp: Component framework for I915 Interface Ramalingam C
2018-06-27 14:46   ` kbuild test robot
2018-06-27 14:46   ` [RFC PATCH] misc/mei/hdcp: mei_hdcp_component_registered can be static kbuild test robot
2018-06-27  8:40 ` [PATCH v5 29/40] misc/mei/hdcp: Define ME FW interface for HDCP2.2 Ramalingam C
2018-06-27  8:40 ` [PATCH v5 30/40] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session Ramalingam C
2018-06-27  8:40 ` [PATCH v5 31/40] misc/mei/hdcp: Verify Receiver Cert and prepare km Ramalingam C
2018-06-27  8:40 ` [PATCH v5 32/40] misc/mei/hdcp: Verify H_prime Ramalingam C
2018-06-27  8:40 ` [PATCH v5 33/40] misc/mei/hdcp: Store the HDCP Pairing info Ramalingam C
2018-06-27  8:40 ` [PATCH v5 34/40] misc/mei/hdcp: Initiate Locality check Ramalingam C
2018-06-27  8:40 ` [PATCH v5 35/40] misc/mei/hdcp: Verify L_prime Ramalingam C
2018-06-27  8:40 ` [PATCH v5 36/40] misc/mei/hdcp: Prepare Session Key Ramalingam C
2018-06-27  8:40 ` [PATCH v5 37/40] misc/mei/hdcp: Repeater topology verification and ack Ramalingam C
2018-06-27  8:40 ` [PATCH v5 38/40] misc/mei/hdcp: Verify M_prime Ramalingam C
2018-06-27  8:40 ` [PATCH v5 39/40] misc/mei/hdcp: Enabling the HDCP authentication Ramalingam C
2018-06-27  8:40 ` [PATCH v5 40/40] misc/mei/hdcp: Closing wired HDCP2.2 Tx Session Ramalingam C
2018-06-27  9:51 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Implement HDCP2.2 (rev6) Patchwork
2018-06-27 10:01 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-06-27 10:02 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-06-27 17:45 ` ✗ Fi.CI.BAT: failure for drm/i915: Implement HDCP2.2 (rev7) 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=20180709204829.GP20303@art_vandelay \
    --to=seanpaul@chromium.org \
    --cc=alexander.usyskin@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ramalingam.c@intel.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox