[Intel-gfx] [PATCH 1/4] drm/i915/hdcp: Use intel_connector argument in intel_hdcp_shim

Murthy, Arun R arun.r.murthy at intel.com
Tue Aug 22 02:33:21 UTC 2023


Reviewed-by: Arun R Murthy <arun.r.murthy at intel.com>

Thanks and Regards,
Arun R Murthy
--------------------
________________________________
From: Kandpal, Suraj <suraj.kandpal at intel.com>
Sent: Thursday, August 10, 2023 1:17 PM
To: intel-gfx at lists.freedesktop.org <intel-gfx at lists.freedesktop.org>
Cc: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>; uma.shakar at intel.com <uma.shakar at intel.com>; Murthy, Arun R <arun.r.murthy at intel.com>; Kandpal, Suraj <suraj.kandpal at intel.com>
Subject: [PATCH 1/4] drm/i915/hdcp: Use intel_connector argument in intel_hdcp_shim

Update intel_hdcp_shim funcs specifically read_2_2_message,
write_2_2_message and config_stream_type to use intel_connector
argument instead of intel_digital_port as this will help in getting
correct aux later for dp mst scenarios also already hdcp funcs
derive digital_port from connector and then many funcs again get back
the connector from dig_port which doesn't seem right.
Connector specific hdcp functions can derive dig_port on need basis.

Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
---
 .../drm/i915/display/intel_display_types.h    |  6 ++--
 drivers/gpu/drm/i915/display/intel_dp_hdcp.c  | 10 ++++---
 drivers/gpu/drm/i915/display/intel_hdcp.c     | 30 ++++++++-----------
 drivers/gpu/drm/i915/display/intel_hdmi.c     |  6 ++--
 4 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 731f2ec04d5c..c62f4ec315e8 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -504,11 +504,11 @@ struct intel_hdcp_shim {
                                 bool *capable);

         /* Write HDCP2.2 messages */
-       int (*write_2_2_msg)(struct intel_digital_port *dig_port,
+       int (*write_2_2_msg)(struct intel_connector *connector,
                              void *buf, size_t size);

         /* Read HDCP2.2 messages */
-       int (*read_2_2_msg)(struct intel_digital_port *dig_port,
+       int (*read_2_2_msg)(struct intel_connector *connector,
                             u8 msg_id, void *buf, size_t size);

         /*
@@ -516,7 +516,7 @@ struct intel_hdcp_shim {
          * type to Receivers. In DP HDCP2.2 Stream type is one of the input to
          * the HDCP2.2 Cipher for En/De-Cryption. Not applicable for HDMI.
          */
-       int (*config_stream_type)(struct intel_digital_port *dig_port,
+       int (*config_stream_type)(struct intel_connector *connector,
                                   bool is_repeater, u8 type);

         /* Enable/Disable HDCP 2.2 stream encryption on DP MST Transport Link */
diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
index e0c177161407..6cd42363837a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
@@ -437,9 +437,10 @@ static const struct hdcp2_dp_msg_data *get_hdcp2_dp_msg_data(u8 msg_id)
 }

 static
-int intel_dp_hdcp2_write_msg(struct intel_digital_port *dig_port,
+int intel_dp_hdcp2_write_msg(struct intel_connector *connector,
                              void *buf, size_t size)
 {
+       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         unsigned int offset;
         u8 *byte = buf;
         ssize_t ret, bytes_to_write, len;
@@ -494,9 +495,10 @@ ssize_t get_receiver_id_list_rx_info(struct intel_digital_port *dig_port, u32 *d
 }

 static
-int intel_dp_hdcp2_read_msg(struct intel_digital_port *dig_port,
+int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
                             u8 msg_id, void *buf, size_t size)
 {
+       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
         struct intel_dp *dp = &dig_port->dp;
         struct intel_hdcp *hdcp = &dp->attached_connector->hdcp;
@@ -574,7 +576,7 @@ int intel_dp_hdcp2_read_msg(struct intel_digital_port *dig_port,
 }

 static
-int intel_dp_hdcp2_config_stream_type(struct intel_digital_port *dig_port,
+int intel_dp_hdcp2_config_stream_type(struct intel_connector *connector,
                                       bool is_repeater, u8 content_type)
 {
         int ret;
@@ -593,7 +595,7 @@ int intel_dp_hdcp2_config_stream_type(struct intel_digital_port *dig_port,
         stream_type_msg.msg_id = HDCP_2_2_ERRATA_DP_STREAM_TYPE;
         stream_type_msg.stream_type = content_type;

-       ret =  intel_dp_hdcp2_write_msg(dig_port, &stream_type_msg,
+       ret =  intel_dp_hdcp2_write_msg(connector, &stream_type_msg,
                                         sizeof(stream_type_msg));

         return ret < 0 ? ret : 0;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index a42549fa9691..cb45f21f71eb 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -1415,7 +1415,6 @@ static int hdcp2_deauthenticate_port(struct intel_connector *connector)
 /* Authentication flow starts from here */
 static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
 {
-       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct drm_i915_private *i915 = to_i915(connector->base.dev);
         struct intel_hdcp *hdcp = &connector->hdcp;
         union {
@@ -1437,12 +1436,12 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
         if (ret < 0)
                 return ret;

-       ret = shim->write_2_2_msg(dig_port, &msgs.ake_init,
+       ret = shim->write_2_2_msg(connector, &msgs.ake_init,
                                   sizeof(msgs.ake_init));
         if (ret < 0)
                 return ret;

-       ret = shim->read_2_2_msg(dig_port, HDCP_2_2_AKE_SEND_CERT,
+       ret = shim->read_2_2_msg(connector, HDCP_2_2_AKE_SEND_CERT,
                                  &msgs.send_cert, sizeof(msgs.send_cert));
         if (ret < 0)
                 return ret;
@@ -1471,11 +1470,11 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
         if (ret < 0)
                 return ret;

-       ret = shim->write_2_2_msg(dig_port, &msgs.no_stored_km, size);
+       ret = shim->write_2_2_msg(connector, &msgs.no_stored_km, size);
         if (ret < 0)
                 return ret;

-       ret = shim->read_2_2_msg(dig_port, HDCP_2_2_AKE_SEND_HPRIME,
+       ret = shim->read_2_2_msg(connector, HDCP_2_2_AKE_SEND_HPRIME,
                                  &msgs.send_hprime, sizeof(msgs.send_hprime));
         if (ret < 0)
                 return ret;
@@ -1486,7 +1485,7 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)

         if (!hdcp->is_paired) {
                 /* Pairing is required */
-               ret = shim->read_2_2_msg(dig_port,
+               ret = shim->read_2_2_msg(connector,
                                          HDCP_2_2_AKE_SEND_PAIRING_INFO,
                                          &msgs.pairing_info,
                                          sizeof(msgs.pairing_info));
@@ -1504,7 +1503,6 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)

 static int hdcp2_locality_check(struct intel_connector *connector)
 {
-       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct intel_hdcp *hdcp = &connector->hdcp;
         union {
                 struct hdcp2_lc_init lc_init;
@@ -1518,12 +1516,12 @@ static int hdcp2_locality_check(struct intel_connector *connector)
                 if (ret < 0)
                         continue;

-               ret = shim->write_2_2_msg(dig_port, &msgs.lc_init,
+               ret = shim->write_2_2_msg(connector, &msgs.lc_init,
                                       sizeof(msgs.lc_init));
                 if (ret < 0)
                         continue;

-               ret = shim->read_2_2_msg(dig_port,
+               ret = shim->read_2_2_msg(connector,
                                          HDCP_2_2_LC_SEND_LPRIME,
                                          &msgs.send_lprime,
                                          sizeof(msgs.send_lprime));
@@ -1540,7 +1538,6 @@ static int hdcp2_locality_check(struct intel_connector *connector)

 static int hdcp2_session_key_exchange(struct intel_connector *connector)
 {
-       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct intel_hdcp *hdcp = &connector->hdcp;
         struct hdcp2_ske_send_eks send_eks;
         int ret;
@@ -1549,7 +1546,7 @@ static int hdcp2_session_key_exchange(struct intel_connector *connector)
         if (ret < 0)
                 return ret;

-       ret = hdcp->shim->write_2_2_msg(dig_port, &send_eks,
+       ret = hdcp->shim->write_2_2_msg(connector, &send_eks,
                                         sizeof(send_eks));
         if (ret < 0)
                 return ret;
@@ -1587,12 +1584,12 @@ int _hdcp2_propagate_stream_management_info(struct intel_connector *connector)
         streams_size_delta = (HDCP_2_2_MAX_CONTENT_STREAMS_CNT - data->k) *
                                 sizeof(struct hdcp2_streamid_type);
         /* Send it to Repeater */
-       ret = shim->write_2_2_msg(dig_port, &msgs.stream_manage,
+       ret = shim->write_2_2_msg(connector, &msgs.stream_manage,
                                   sizeof(msgs.stream_manage) - streams_size_delta);
         if (ret < 0)
                 goto out;

-       ret = shim->read_2_2_msg(dig_port, HDCP_2_2_REP_STREAM_READY,
+       ret = shim->read_2_2_msg(connector, HDCP_2_2_REP_STREAM_READY,
                                  &msgs.stream_ready, sizeof(msgs.stream_ready));
         if (ret < 0)
                 goto out;
@@ -1622,7 +1619,7 @@ int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)
         u8 *rx_info;
         int ret;

-       ret = shim->read_2_2_msg(dig_port, HDCP_2_2_REP_SEND_RECVID_LIST,
+       ret = shim->read_2_2_msg(connector, HDCP_2_2_REP_SEND_RECVID_LIST,
                                  &msgs.recvid_list, sizeof(msgs.recvid_list));
         if (ret < 0)
                 return ret;
@@ -1675,7 +1672,7 @@ int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)
                 return ret;

         hdcp->seq_num_v = seq_num_v;
-       ret = shim->write_2_2_msg(dig_port, &msgs.rep_ack,
+       ret = shim->write_2_2_msg(connector, &msgs.rep_ack,
                                   sizeof(msgs.rep_ack));
         if (ret < 0)
                 return ret;
@@ -1685,7 +1682,6 @@ int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)

 static int hdcp2_authenticate_sink(struct intel_connector *connector)
 {
-       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct drm_i915_private *i915 = to_i915(connector->base.dev);
         struct intel_hdcp *hdcp = &connector->hdcp;
         const struct intel_hdcp_shim *shim = hdcp->shim;
@@ -1711,7 +1707,7 @@ static int hdcp2_authenticate_sink(struct intel_connector *connector)
         }

         if (shim->config_stream_type) {
-               ret = shim->config_stream_type(dig_port,
+               ret = shim->config_stream_type(connector,
                                                hdcp->is_repeater,
                                                hdcp->content_type);
                 if (ret < 0)
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 94a7e1537f42..4c66618537ae 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -1665,9 +1665,10 @@ intel_hdmi_hdcp2_wait_for_msg(struct intel_digital_port *dig_port,
 }

 static
-int intel_hdmi_hdcp2_write_msg(struct intel_digital_port *dig_port,
+int intel_hdmi_hdcp2_write_msg(struct intel_connector *connector,
                                void *buf, size_t size)
 {
+       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         unsigned int offset;

         offset = HDCP_2_2_HDMI_REG_WR_MSG_OFFSET;
@@ -1675,9 +1676,10 @@ int intel_hdmi_hdcp2_write_msg(struct intel_digital_port *dig_port,
 }

 static
-int intel_hdmi_hdcp2_read_msg(struct intel_digital_port *dig_port,
+int intel_hdmi_hdcp2_read_msg(struct intel_connector *connector,
                               u8 msg_id, void *buf, size_t size)
 {
+       struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
         struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
         struct intel_hdmi *hdmi = &dig_port->hdmi;
         struct intel_hdcp *hdcp = &hdmi->attached_connector->hdcp;
--
2.25.1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20230822/897d9e49/attachment-0001.htm>


More information about the Intel-gfx mailing list