<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <pre>Hi,

In one of the offline discussion Tomas has shared his review comments on v8.
So I am sharing the abstract of his suggestions here for the discussion and for the agreement of interface in the community.
Tomas please correct/add if I am missing any points.

</pre>
    <ol>
      <li>Remove the include/linux/mei_hdcp.h to make the i915-mei
        interface more generic.</li>
      <ol>
        <li>Move the definition of the struct mei_hdcp_data to i915 and
          mei_hdcp.c and pass the void* in the ops' functions.</li>
        <li>Move the conversion of enum port value to mei_ddi_port value
          into mei_hdcp.c. Let I915 pass the enum port value as such.<br>
        </li>
        <li>Modified local definition of the struct mei_hdcp_data will
          looks like</li>
        <li>
          <pre class="content" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; display: block; padding: 1em; margin: 0px 0px 10px; line-height: 14.3px; color: rgb(51, 51, 51); word-break: break-all; overflow-wrap: break-word; background-color: white; border: 1px solid rgb(204, 204, 204); border-radius: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+/* hdcp data per port */</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+struct hdcp_port_data {</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        short int port;</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        u8 port_type;</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        u8 protocol;</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        u16 k;</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        u32 seq_num_m;</span>
<span class="p_add" style="box-sizing: border-box; color: rgb(0, 139, 139);">+        struct hdcp2_streamid_type *streams;</span>
 };</pre>
        </li>
      </ol>
      <li>Add K-Doc compliant commenting in the mei_hdcp.c<br>
      </li>
    </ol>
    <pre>I have implemented these changes and posted for intel-gfx-trybot. Just incase anyone wants to
refer the code please look at <a class="moz-txt-link-freetext" href="https://patchwork.freedesktop.org/series/53655/">https://patchwork.freedesktop.org/series/53655/</a> .
Not shared on #intel-gfx as further review discussions are on-going on intel-gfx.

--Ram
</pre>
    <div class="moz-cite-prefix">On 11/27/2018 4:13 PM, Ramalingam C
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:1543315413-24302-4-git-send-email-ramalingam.c@intel.com">
      <pre class="moz-quote-pre" wrap="">Data structures and Enum for the I915-MEI_HDCP interface are defined
at <linux/mei_hdcp.h>

v2:
  Rebased.
v3:
  mei_cl_device is removed from mei_hdcp_data [Tomas]
v4:
  Comment style and typo fixed [Uma]
v5:
  Rebased.
v6:
  No changes.
v7:
  Remove redundant text from the License header
  Change uintXX_t type to uXX_t types
  Remove unneeded include to mei_cl_bus.h
  Coding style fixed [Uma]
V8:
  Tab cleanup
  Fix kdoc and namespaces
  Update MAINTAINERS

Signed-off-by: Ramalingam C <a class="moz-txt-link-rfc2396E" href="mailto:ramalingam.c@intel.com"><ramalingam.c@intel.com></a>
Signed-off-by: Tomas Winkler <a class="moz-txt-link-rfc2396E" href="mailto:tomas.winkler@intel.com"><tomas.winkler@intel.com></a>
Reviewed-by: Uma Shankar <a class="moz-txt-link-rfc2396E" href="mailto:uma.shankar@intel.com"><uma.shankar@intel.com></a>
---
 MAINTAINERS              |  1 +
 include/linux/mei_hdcp.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)
 create mode 100644 include/linux/mei_hdcp.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 1026150ae90f..2fd6555bf040 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7540,6 +7540,7 @@ L:        <a class="moz-txt-link-abbreviated" href="mailto:linux-kernel@vger.kernel.org">linux-kernel@vger.kernel.org</a>
 S:     Supported
 F:     include/uapi/linux/mei.h
 F:     include/linux/mei_cl_bus.h
+F:     include/linux/mei_hdcp.h
 F:     drivers/misc/mei/*
 F:     drivers/watchdog/mei_wdt.c
 F:     Documentation/misc-devices/mei/*
diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h
new file mode 100644
index 000000000000..716123003dd1
--- /dev/null
+++ b/include/linux/mei_hdcp.h
@@ -0,0 +1,91 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
+/*
+ * Copyright © 2017-2018 Intel Corporation
+ *
+ * Authors:
+ * Ramalingam C <a class="moz-txt-link-rfc2396E" href="mailto:ramalingam.c@intel.com"><ramalingam.c@intel.com></a>
+ */
+
+#ifndef _LINUX_MEI_HDCP_H
+#define _LINUX_MEI_HDCP_H
+
+/**
+ * enum mei_hdcp_ddi - The physical digital display interface (DDI)
+ *     available on the platform
+ * @MEI_DDI_INVALID_PORT: Not a valid port
+ * @MEI_DDI_RANGE_BEGIN: Beginning of the valid DDI port range
+ * @MEI_DDI_B: Port DDI B
+ * @MEI_DDI_C: Port DDI C
+ * @MEI_DDI_D: Port DDI D
+ * @MEI_DDI_E: Port DDI E
+ * @MEI_DDI_F: Port DDI F
+ * @MEI_DDI_A: Port DDI A
+ * @MEI_DDI_RANGE_END: End of the valid DDI port range
+ */
+enum mei_hdcp_ddi {
+       MEI_DDI_INVALID_PORT = 0x00,
+
+       MEI_DDI_RANGE_BEGIN = 0x01,
+       MEI_DDI_B           = 0x01,
+       MEI_DDI_C           = 0x02,
+       MEI_DDI_D           = 0x03,
+       MEI_DDI_E           = 0x04,
+       MEI_DDI_F           = 0x05,
+       MEI_DDI_A           = 0x07,
+       MEI_DDI_RANGE_END   = MEI_DDI_A,
+};
+
+/**
+ * enum mei_hdcp_port_type - The types of HDCP 2.2 ports supported
+ *
+ * @MEI_HDCP_PORT_TYPE_INVALID: Invalid port
+ * @MEI_HDCP_PORT_TYPE_INTEGRATED: ports that are integrated into Intel HW
+ * @MEI_HDCP_PORT_TYPE_LSPCON: discrete wired Tx port with LSPCON (HDMI 2.0)
+ * @MEI_HDCP_PORT_TYPE_CPDP: discrete wired Tx port using the CPDP (DP 1.3)
+ */
+enum mei_hdcp_port_type {
+       MEI_HDCP_PORT_TYPE_INVALID    = 0x00,
+       MEI_HDCP_PORT_TYPE_INTEGRATED = 0x01,
+       MEI_HDCP_PORT_TYPE_LSPCON     = 0x02,
+       MEI_HDCP_PORT_TYPE_CPDP       = 0x03,
+};
+
+/*
+ * enum mei_hdcp_wired_protocol - Supported integrated wired HDCP protocol.
+ * @HDCP_PROTOCOL_INVALID: invalid type
+ * @HDCP_PROTOCOL_HDMI: HDMI
+ * @HDCP_PROTOCOL_DP: DP
+ *
+ * Based on this value, Minor difference needed between wired specifications
+ * are handled.
+ */
+enum mei_hdcp_wired_protocol {
+       MEI_HDCP_PROTOCOL_INVALID,
+       MEI_HDCP_PROTOCOL_HDMI,
+       MEI_HDCP_PROTOCOL_DP
+};
+
+/**
+ * struct mei_hdcp_data - Input data to the mei_hdcp APIs
+ * @port: The physical port (ddi).
+ * @port_type: The port type.
+ * @protocol: The Protocol on the port.
+ * @k: Number of streams transmitted on the port.
+ *     In case of HDMI & DP SST, a single stream will be
+ *     transmitted on the port.
+ * @seq_num_m: A sequence number of RepeaterAuth_Stream_Manage msg propagated.
+ *     Initialized to 0 on AKE_INIT. Incremented after every successful
+ *     transmission of RepeaterAuth_Stream_Manage message. When it rolls
+ *     over re-Auth has to be triggered.
+ * @streams: array[k] of streamid
+ */
+struct mei_hdcp_data {
+       enum mei_hdcp_ddi port;
+       enum mei_hdcp_port_type port_type;
+       enum mei_hdcp_wired_protocol protocol;
+       u16 k;
+       u32 seq_num_m;
+       struct hdcp2_streamid_type *streams;
+};
+
+#endif /* !_LINUX_MEI_HDCP_H */
</pre>
    </blockquote>
  </body>
</html>