All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Winkler, Tomas" <tomas.winkler@intel.com>
To: "C, Ramalingam" <ramalingam.c@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"seanpaul@chromium.org" <seanpaul@chromium.org>,
	"chris@chris-wilson.co.uk" <chris@chris-wilson.co.uk>,
	"jani.nikula@linux.intel.com" <jani.nikula@linux.intel.com>
Cc: "Shankar, Uma" <uma.shankar@intel.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>
Subject: RE: [PATCH v2 10/42] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session
Date: Thu, 8 Mar 2018 13:17:04 +0000	[thread overview]
Message-ID: <5B8DA87D05A7694D9FA63FD143655C1B9423181E@hasmsx108.ger.corp.intel.com> (raw)
In-Reply-To: <1520510349-8385-11-git-send-email-ramalingam.c@intel.com>


> 
> Request ME FW to start the HDCP2.2 session for a intel port.
> Prepares payloads for command WIRED_INITIATE_HDCP2_SESSION and sent
> to ME FW.
> 
> On Success, ME FW will start a HDCP2.2 session for the port and provides the
> content for HDCP2.2 AKE_Init message.
> 
> v2:
>   Rebased.
> 
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
>  drivers/misc/mei/hdcp/mei_hdcp.c | 73
> ++++++++++++++++++++++++++++++++++++++++
>  include/linux/mei_hdcp.h         | 11 ++++++
>  2 files changed, 84 insertions(+)
> 
> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c
> b/drivers/misc/mei/hdcp/mei_hdcp.c
> index 63f77800a6f7..516ad6a40616 100644
> --- a/drivers/misc/mei/hdcp/mei_hdcp.c
> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c
> @@ -29,6 +29,7 @@
>  #include <linux/module.h>
>  #include <linux/slab.h>
>  #include <linux/uuid.h>
> +#include <drm/drm_connector.h>
> 
>  #include "mei_hdcp.h"
> 
> @@ -46,6 +47,78 @@ static inline bool
> mei_cldev_active_and_enabled(struct mei_cl_device *cldev)
>  	return mei_cldev_enabled(cldev);
>  }
> 
> +/**
> + * mei_initiate_hdcp2_session:
> + *	Function to start a Wired HDCP2.2 Tx Session with ME FW
> + *
> + * @data		: Intel HW specific Data
> + * @ake_data		: ptr to store AKE_Init
> + *
> + * Returns 0 on Success, <0 on Failure.
> + */
> +int mei_initiate_hdcp2_session(struct mei_hdcp_data *data,
> +			       struct hdcp2_ake_init *ake_data) {


You should use cldev as a first argument for all those functions 

> +	struct wired_cmd_initiate_hdcp2_session_in session_init_in = { { 0 }
> };
> +	struct wired_cmd_initiate_hdcp2_session_out
> +						session_init_out = { { 0 } };
> +	enum me_hdcp_status status;
> +	struct device *dev;
> +	ssize_t byte;
> +
> +	if (!data || !ake_data)
> +		return -EINVAL;
> +
> +	/* check for the mei_device enabled or not */
> +	if (!mei_cldev_active_and_enabled(data->cldev))
> +		return -ENODEV;
No reason cldev will be NULL here.

> +	dev = &data->cldev->dev;
> +
> +	/* Fill header details */
Those types of comments are redundant.
> +	session_init_in.header.api_version = HDCP_API_VERSION;
> +	session_init_in.header.command_id =
> WIRED_INITIATE_HDCP2_SESSION;
> +	session_init_in.header.status = ME_HDCP_STATUS_SUCCESS;
> +	session_init_in.header.buffer_len =
> +
> 	WIRED_CMD_BUF_LEN_INITIATE_HDCP2_SESSION_IN;
> +
> +	/* Fill in the In Data */
Those types of comments are redundant. 
> +	session_init_in.port.integrated_port_type = data->port_type;
> +	session_init_in.port.physical_port = data->port;
> +	session_init_in.protocol = (uint8_t)data->protocol;
> +
> +	/* Request to ME */
> +	byte = mei_cldev_send(data->cldev, (u8 *)&session_init_in,
> +			      sizeof(session_init_in));
> +	if (byte < 0) {
> +		dev_err(dev, "mei_cldev_send failed. %d\n", (int)byte);
> +		return byte;
> +	}
> +
> +	/* Response from ME */
> +	byte = mei_cldev_recv(data->cldev, (u8 *)&session_init_out,
> +			      sizeof(session_init_out));
> +	if (byte < 0) {
> +		dev_err(dev, "mei_cldev_recv failed. %d\n", (int)byte);
> +		return byte;
> +	}
> +
> +	status = (enum me_hdcp_status)session_init_out.header.status;
Useless cast
> +	if (status != ME_HDCP_STATUS_SUCCESS) {
> +		dev_err(dev, "ME cmd 0x%08X Failed. Status: 0x%X\n",
> +			WIRED_INITIATE_HDCP2_SESSION, status);
> +		return -1;
> +	}
> +
> +	ake_data->msg_id = HDCP_2_2_AKE_INIT;
> +	ake_data->tx_caps = session_init_out.tx_caps;
> +	memcpy(ake_data->r_tx, session_init_out.r_tx,
> +	       sizeof(session_init_out.r_tx));
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(mei_initiate_hdcp2_session);
> +
>  static int mei_hdcp_probe(struct mei_cl_device *cldev,
>  			  const struct mei_cl_device_id *id)  { diff --git
> a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h index
> 9a869d1cbd5d..c333528b9c1e 100644
> --- a/include/linux/mei_hdcp.h
> +++ b/include/linux/mei_hdcp.h
> @@ -24,6 +24,7 @@
>  #define _LINUX_MEI_HDCP_H
> 
>  #include <linux/mei_cl_bus.h>
> +#include <drm/drm_hdcp.h>
> 
>  /*
>   * Enumeration of the physical DDI available on the platform @@ -101,6
> +102,9 @@ int mei_hdcp_cldev_get_reference(void *client_data,
>  						       struct mei_cl_device
>  						       *cldev));
>  void mei_hdcp_cldev_put_reference(struct mei_cl_device *cldev);
> +
> +int mei_initiate_hdcp2_session(struct mei_hdcp_data *data,
> +			       struct hdcp2_ake_init *ake_data);
>  #else
>  static inline
>  int mei_hdcp_cldev_get_reference(void *client_data, @@ -114,5 +118,12
> @@ int mei_hdcp_cldev_get_reference(void *client_data,  static inline  void
> mei_hdcp_cldev_put_reference(struct mei_cl_device *cldev)  {}
> +
> +static inline
> +int mei_initiate_hdcp2_session(struct mei_hdcp_data *data,
> +			       struct hdcp2_ake_init *ake_data) {
> +	return -ENODEV;
> +}
>  #endif /* defined (CONFIG_INTEL_MEI_HDCP) */  #endif /* defined
> (_LINUX_MEI_HDCP_H) */
> --
> 2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-03-08 13:17 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-08 11:58 [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Ramalingam C
2018-03-08 11:58 ` [PATCH v2 01/42] drm: hdcp2.2 authentication msg definitions Ramalingam C
2018-03-08 11:58 ` [PATCH v2 02/42] drm: HDMI and DP specific HDCP2.2 defines Ramalingam C
2018-03-08 11:58 ` [PATCH v2 03/42] mei: bus: whitelist hdcp client Ramalingam C
2018-03-08 11:58 ` [PATCH v2 04/42] misc/mei/hdcp: Client driver for HDCP application Ramalingam C
2018-03-08 13:07   ` Winkler, Tomas
2018-03-12 10:58     ` Ramalingam C
2018-03-12 11:22       ` Winkler, Tomas
2018-03-12 11:20         ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 05/42] misc/mei/hdcp: Add KBuild for mei hdcp driver Ramalingam C
2018-03-08 11:58 ` [PATCH v2 06/42] misc/mei/hdcp: Verify mei client device status Ramalingam C
2018-03-08 13:08   ` Winkler, Tomas
2018-03-12 11:02     ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 07/42] misc/mei/hdcp: Get & Put for mei cl_device Ramalingam C
2018-03-08 13:10   ` Winkler, Tomas
2018-03-12 11:35     ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 08/42] misc/mei/hdcp: Define ME FW interface for HDCP2.2 Ramalingam C
2018-03-08 11:58 ` [PATCH v2 09/42] linux/mei: Header for mei_hdcp driver interface Ramalingam C
2018-03-08 13:13   ` Winkler, Tomas
2018-03-12 11:15     ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 10/42] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session Ramalingam C
2018-03-08 13:17   ` Winkler, Tomas [this message]
2018-03-12 11:19     ` Ramalingam C
2018-03-12 11:32       ` Winkler, Tomas
2018-03-12 11:38         ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 11/42] misc/mei/hdcp: Verify Receiver Cert and prepare km Ramalingam C
2018-03-08 11:58 ` [PATCH v2 12/42] misc/mei/hdcp: Verify H_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 13/42] misc/mei/hdcp: Store the HDCP Pairing info Ramalingam C
2018-03-08 11:58 ` [PATCH v2 14/42] misc/mei/hdcp: Initiate Locality check Ramalingam C
2018-03-08 11:58 ` [PATCH v2 15/42] misc/mei/hdcp: Verify L_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 16/42] misc/mei/hdcp: Prepare Session Key Ramalingam C
2018-03-08 11:58 ` [PATCH v2 17/42] misc/mei/hdcp: Repeater topology verifcation and ack Ramalingam C
2018-03-08 11:58 ` [PATCH v2 18/42] misc/mei/hdcp: Verify M_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 19/42] misc/mei/hdcp: Enabling the HDCP authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 20/42] misc/mei/hdcp: Closing wired HDCP2.2 Tx Session Ramalingam C
2018-03-08 11:58 ` [PATCH v2 21/42] drm/i915: wrapping all hdcp var into intel_hdcp Ramalingam C
2018-03-08 11:58 ` [PATCH v2 22/42] drm/i915: Define HDCP2.2 related variables Ramalingam C
2018-03-08 11:58 ` [PATCH v2 23/42] drm/i915: Define Intel HDCP2.2 registers Ramalingam C
2018-03-08 11:58 ` [PATCH v2 24/42] drm/i915: Wrappers for mei HDCP2.2 services Ramalingam C
2018-03-08 11:58 ` [PATCH v2 25/42] drm/i915: Implement HDCP2.2 receiver authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 26/42] drm/i915: Implement HDCP2.2 repeater authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 27/42] drm/i915: Enable and Disable HDCP2.2 port encryption Ramalingam C
2018-03-08 11:58 ` [PATCH v2 28/42] drm/i915: Implement HDCP2.2 En/Dis-able Ramalingam C
2018-03-08 11:58 ` [PATCH v2 29/42] drm/i915: Implement HDCP2.2 link integrity check Ramalingam C
2018-03-08 11:58 ` [PATCH v2 30/42] drm/i915: Handle HDCP2.2 downstream topology change Ramalingam C
2018-03-08 11:58 ` [PATCH v2 31/42] drm/i915: Pullout the bksv read and validation Ramalingam C
2018-03-08 11:58 ` [PATCH v2 32/42] drm/i915: Initialize HDCP2.2 and its MEI interface Ramalingam C
2018-03-08 11:59 ` [PATCH v2 33/42] drm/i915: Schedule hdcp_check_link in _intel_hdcp_enable Ramalingam C
2018-03-08 11:59 ` [PATCH v2 34/42] drm/i915: Enable superior HDCP ver that is capable Ramalingam C
2018-03-08 11:59 ` [PATCH v2 35/42] drm/i915: Enable HDCP1.4 incase of HDCP2.2 failure Ramalingam C
2018-03-08 11:59 ` [PATCH v2 36/42] drm/i915: hdcp_check_link only on CP_IRQ Ramalingam C
2018-03-08 11:59 ` [PATCH v2 37/42] drm/i915: Check HDCP 1.4 and 2.2 link " Ramalingam C
2018-03-08 11:59 ` [PATCH v2 38/42] drm/i915: Implement gmbus burst read Ramalingam C
2018-03-08 11:59 ` [PATCH v2 39/42] drm/i915: Implement the HDCP2.2 support for DP Ramalingam C
2018-03-08 11:59 ` [PATCH v2 40/42] drm/i915: Implement the HDCP2.2 support for HDMI Ramalingam C
2018-03-08 11:59 ` [PATCH v2 41/42] drm/i915: Add HDCP2.2 support for DP connectors Ramalingam C
2018-03-08 11:59 ` [PATCH v2 42/42] drm/i915: Add HDCP2.2 support for HDMI connectors Ramalingam C
2018-03-08 12:30 ` [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Winkler, Tomas
2018-03-08 12:33   ` Ramalingam C
2018-03-09  9:26     ` Daniel Vetter
2018-03-08 12:49 ` ✗ Fi.CI.BAT: failure for drm/i915: Implement HDCP2.2 (rev2) Patchwork
2018-03-12 11:46 ` [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Ramalingam C

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=5B8DA87D05A7694D9FA63FD143655C1B9423181E@hasmsx108.ger.corp.intel.com \
    --to=tomas.winkler@intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=ramalingam.c@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=seanpaul@chromium.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.