From: "C, Ramalingam" <ramalingam.c@intel.com>
To: "Winkler, Tomas" <tomas.winkler@intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"daniel.vetter@ffwll.ch" <daniel.vetter@ffwll.ch>,
"Shankar, Uma" <uma.shankar@intel.com>
Subject: Re: [PATCH v12 24/38] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session
Date: Sun, 10 Feb 2019 14:32:53 +0530 [thread overview]
Message-ID: <4d2f247e-a7ca-3163-1bce-c21c87d72075@intel.com> (raw)
In-Reply-To: <5B8DA87D05A7694D9FA63FD143655C1B9DAA06BE@hasmsx108.ger.corp.intel.com>
On 2/10/2019 1:55 PM, Winkler, Tomas wrote:
>> On 2/9/2019 9:39 PM, Winkler, Tomas wrote:
>>>> Request ME FW to start the HDCP2.2 session for an intel port.
>>>> Prepares payloads for command WIRED_INITIATE_HDCP2_SESSION and
>> sends
>>>> 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.
>>>> v3:
>>>> cldev is add as a separate parameter [Tomas]
>>>> Redundant comment and typecast are removed [Tomas]
>>>> v4:
>>>> %zd is used for size [Alexander]
>>>> %s/return -1/return -EIO [Alexander]
>>>> Spellings in commit msg is fixed [Uma]
>>>> v5: Rebased.
>>>> v6:
>>>> Collected the rb-ed by.
>>>> Realigning the patches in the series.
>>>> v7:
>>>> Adjust to the new mei interface.
>>>> Fix for kdoc.
>>>> v8:
>>>> K-Doc Addition.
>>>> memcpy for const length.
>>>> v9:
>>>> s/mei_hdcp_ddi/mei_fw_ddi
>>>> s/i915_port/mei_i915_port [Tomas]
>>>> renamed func as mei_hdcp_* [Tomas]
>>>> Instead of macro, inline func for ddi index is used. [Tomas]
>>>>
>>>> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>>>> Reviewed-by: Uma Shankar <uma.shankar@intel.com>
>>>> Acked-by: Tomas Winkler <tomas.winkler@intel.com>
>>>> ---
>>>> drivers/misc/mei/hdcp/mei_hdcp.c | 89
>>>> ++++++++++++++++++++++++++++++++++++++++
>>>> drivers/misc/mei/hdcp/mei_hdcp.h | 23 +++++++++++
>>>> 2 files changed, 112 insertions(+)
>>>>
>>>> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c
>>>> b/drivers/misc/mei/hdcp/mei_hdcp.c
>>>> index 8df069c1b0cc..56d3ac1e6831 100644
>>>> --- a/drivers/misc/mei/hdcp/mei_hdcp.c
>>>> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c
>>>> @@ -23,6 +23,95 @@
>>>> #include <linux/slab.h>
>>>> #include <linux/uuid.h>
>>>> #include <linux/mei_cl_bus.h>
>>>> +#include <drm/drm_connector.h>
>>>> +#include <drm/i915_component.h>
>>>> +#include <drm/i915_mei_hdcp_interface.h>
>>>> +
>>>> +#include "mei_hdcp.h"
>>>> +
>>>> +static inline u8 mei_get_ddi_index(short int port) {
>>>> + enum mei_i915_port i915_port = (enum mei_i915_port)port;
>>>> +
>>>> + return (u8)(i915_port == PORT_A ? MEI_DDI_A : i915_port); }
>>>> +
>>> Still the same code I haven't Acked that patch.
>> Sorry. I will remove the ack part.
>>
>> I prefer this approach as it is not so complicated stuff here. still if you insist I
>> will use switch case.
> Yes, I believe that the translation should be understood.
> This function should returns
> MEI_DDI_XXX only (it could be u8)
> It's by accident that MEI_DDI_B equals PORT_B etc.
> Please also remove dual enum i915_port and eum port as well.
this will do?
static inline u8 mei_get_ddi_index(short int port)
{
switch (port) {
case PORT_A:
return (u8)MEI_DDI_A;
case PORT_B:
return (u8)MEI_DDI_B;
case PORT_C:
return (u8)MEI_DDI_C;
case PORT_D:
return (u8)MEI_DDI_D;
case PORT_E:
return (u8)MEI_DDI_E;
case PORT_F:
return (u8)MEI_DDI_F;
default:
return (u8)MEI_DDI_INVALID_PORT;
}
}
-Ram
> Thanks
> Tomas
>
>> Thanks
>> --Ram
>>
>>> Thanks
>>> Tomas
>>>
>>>
>>>> +/**
>>>> + * mei_hdcp_initiate_session() - Initiate a Wired HDCP2.2 Tx Session
>>>> +in ME FW
>>>> + * @dev: device corresponding to the mei_cl_device
>>>> + * @hdcp_data: Intel HW specific hdcp data
>>>> + * @ake_data: AKE_Init msg output.
>>>> + *
>>>> + * Return: 0 on Success, <0 on Failure.
>>>> + */
>>>> +static int
>>>> +mei_hdcp_initiate_session(struct device *dev, struct hdcp_port_data
>> *data,
>>>> + struct hdcp2_ake_init *ake_data) {
>>>> + struct wired_cmd_initiate_hdcp2_session_in session_init_in = { { 0 } };
>>>> + struct wired_cmd_initiate_hdcp2_session_out
>>>> + session_init_out = { { 0 } };
>>>> + struct mei_cl_device *cldev;
>>>> + ssize_t byte;
>>>> +
>>>> + if (!dev || !data || !ake_data)
>>>> + return -EINVAL;
>>>> +
>>>> + cldev = to_mei_cl_device(dev);
>>>> +
>>>> + 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;
>>>> +
>>>> + session_init_in.port.integrated_port_type = data->port_type;
>>>> + session_init_in.port.physical_port = mei_get_ddi_index(data->port);
>>>> + session_init_in.protocol = data->protocol;
>>>> +
>>>> + byte = mei_cldev_send(cldev, (u8 *)&session_init_in,
>>>> + sizeof(session_init_in));
>>>> + if (byte < 0) {
>>>> + dev_dbg(dev, "mei_cldev_send failed. %zd\n", byte);
>>>> + return byte;
>>>> + }
>>>> +
>>>> + byte = mei_cldev_recv(cldev, (u8 *)&session_init_out,
>>>> + sizeof(session_init_out));
>>>> + if (byte < 0) {
>>>> + dev_dbg(dev, "mei_cldev_recv failed. %zd\n", byte);
>>>> + return byte;
>>>> + }
>>>> +
>>>> + if (session_init_out.header.status != ME_HDCP_STATUS_SUCCESS) {
>>>> + dev_dbg(dev, "ME cmd 0x%08X Failed. Status: 0x%X\n",
>>>> + WIRED_INITIATE_HDCP2_SESSION,
>>>> + session_init_out.header.status);
>>>> + return -EIO;
>>>> + }
>>>> +
>>>> + 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, HDCP_2_2_RTX_LEN);
>>>> +
>>>> + return 0;
>>>> +}
>>>> +
>>>> +static __attribute__((unused))
>>>> +struct i915_hdcp_component_ops mei_hdcp_ops = {
>>>> + .owner = THIS_MODULE,
>>>> + .initiate_hdcp2_session = mei_hdcp_initiate_session,
>>>> + .verify_receiver_cert_prepare_km = NULL,
>>>> + .verify_hprime = NULL,
>>>> + .store_pairing_info = NULL,
>>>> + .initiate_locality_check = NULL,
>>>> + .verify_lprime = NULL,
>>>> + .get_session_key = NULL,
>>>> + .repeater_check_flow_prepare_ack = NULL,
>>>> + .verify_mprime = NULL,
>>>> + .enable_hdcp_authentication = NULL,
>>>> + .close_hdcp_session = NULL,
>>>> +};
>>>>
>>>> static int mei_hdcp_probe(struct mei_cl_device *cldev,
>>>> const struct mei_cl_device_id *id) diff --git
>>>> a/drivers/misc/mei/hdcp/mei_hdcp.h b/drivers/misc/mei/hdcp/mei_hdcp.h
>>>> index 582a7e27ae29..28686f2ae88c 100644
>>>> --- a/drivers/misc/mei/hdcp/mei_hdcp.h
>>>> +++ b/drivers/misc/mei/hdcp/mei_hdcp.h
>>>> @@ -363,4 +363,27 @@ struct wired_cmd_repeater_auth_stream_req_out
>> {
>>>> struct hdcp_port_id port;
>>>> } __packed;
>>>>
>>>> +enum mei_fw_ddi {
>>>> + MEI_DDI_INVALID_PORT = 0x0,
>>>> +
>>>> + MEI_DDI_B = 1,
>>>> + MEI_DDI_C,
>>>> + MEI_DDI_D,
>>>> + MEI_DDI_E,
>>>> + MEI_DDI_F,
>>>> + MEI_DDI_A = 7,
>>>> + MEI_DDI_RANGE_END = MEI_DDI_A,
>>>> +};
>>>> +
>>>> +enum mei_i915_port {
>>>> + PORT_NONE = -1,
>>>> +
>>>> + PORT_A = 0,
>>>> + PORT_B,
>>>> + PORT_C,
>>>> + PORT_D,
>>>> + PORT_E,
>>>> + PORT_F,
>>>> + I915_MAX_PORTS,
>>>> +};
>>>> #endif /* __MEI_HDCP_H__ */
>>>> --
>>>> 2.7.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-02-10 9:02 UTC|newest]
Thread overview: 53+ 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 ` [PATCH v12 18/38] drm/i915: Fix KBL HDCP2.2 encrypt status signalling Ramalingam C
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 via dri-devel
2019-02-12 13:28 ` Sasha Levin
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 [this message]
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
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=4d2f247e-a7ca-3163-1bce-c21c87d72075@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox