[Intel-gfx] [PATCH v10 2/6] drm/i915/hdcp: Keep hdcp agonstic naming convention

Shankar, Uma uma.shankar at intel.com
Tue Mar 7 06:40:29 UTC 2023



> -----Original Message-----
> From: Kandpal, Suraj <suraj.kandpal at intel.com>
> Sent: Monday, March 6, 2023 6:20 PM
> To: Shankar, Uma <uma.shankar at intel.com>; intel-gfx at lists.freedesktop.org
> Cc: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>; Gupta, Anshuman
> <anshuman.gupta at intel.com>; Winkler, Tomas <tomas.winkler at intel.com>; Vivi,
> Rodrigo <rodrigo.vivi at intel.com>
> Subject: RE: [PATCH v10 2/6] drm/i915/hdcp: Keep hdcp agonstic naming convention
> 
> >
> >
> > > -----Original Message-----
> > > From: Kandpal, Suraj <suraj.kandpal at intel.com>
> > > Sent: Wednesday, February 1, 2023 2:38 PM
> > > To: intel-gfx at lists.freedesktop.org
> > > Cc: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>; Gupta, Anshuman
> > > <anshuman.gupta at intel.com>; Winkler, Tomas
> > <tomas.winkler at intel.com>;
> > > Vivi, Rodrigo <rodrigo.vivi at intel.com>; Shankar, Uma
> > > <uma.shankar at intel.com>; Kandpal, Suraj <suraj.kandpal at intel.com>
> > > Subject: [PATCH v10 2/6] drm/i915/hdcp: Keep hdcp agonstic naming
> > > convention
> >
> > Typo in agnostic.
> >
> > Also I feel this header can be re-phrased: "Use generic names for HDCP
> > helpers and structs"
> > Add the rationale why this is required, explain the legacy and new
> > usage which is the cause for this patch.
> >
> 
> Sure will add it in the next version
> 
> Regards,
> Suraj Kandpal
> > >
> > > From: Anshuman Gupta <anshuman.gupta at intel.com>
> > >
> > > Change the include/drm/i915_mei_hdcp_interface.h to
> > > include/drm/i915_hdcp_interface.h
> > >
> > > --v6
> > > -make each patch build individually [Jani]
> > >
> > > --v8
> > > -change ME FW to ME/GSC FW [Ankit]
> > > -fix formatting issue [Ankit]
> > >
> > > Cc: Tomas Winkler <tomas.winkler at intel.com>
> > > Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > > Cc: Uma Shankar <uma.shankar at intel.com>
> > > Cc: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> > > Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
> > > Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
> > > Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> > > Acked-by: Tomas Winkler <tomas.winkler at intel.com>
> > > ---
> > >  .../gpu/drm/i915/display/intel_display_core.h |  2 +-
> > >  .../drm/i915/display/intel_display_types.h    |  2 +-
> > >  drivers/gpu/drm/i915/display/intel_hdcp.c     | 81 ++++++++--------
> > >  drivers/misc/mei/hdcp/mei_hdcp.c              | 61 ++++++------
> > >  ...hdcp_interface.h => i915_hdcp_interface.h} | 92
> > > +++++++++----------
> > >  5 files changed, 118 insertions(+), 120 deletions(-)  rename
> > > include/drm/{i915_mei_hdcp_interface.h => i915_hdcp_interface.h}
> > > (73%)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> > > b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > index fb8670aa2932..8e7a68339876 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > @@ -378,7 +378,7 @@ struct intel_display {
> > >  	} gmbus;
> > >
> > >  	struct {
> > > -		struct i915_hdcp_comp_master *master;
> > > +		struct i915_hdcp_master *master;
> >
> > Since we are changing this up, can we drop the use of phrase like "master"
> > etc, if feasible in the series, else this can be taken with a follow
> > up cleanup series.
> 
> I actually plan on cleaning this up later on in a different hdcp cleanup series

Ok sure, create an internal task to track this.

> 
> >
> > >  		bool comp_added;
> > >
> > >  		/* Mutex to protect the above hdcp component related
> > values. */
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index 9ccae7a46020..7accd3a8877c 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -43,7 +43,7 @@
> > >  #include <drm/drm_rect.h>
> > >  #include <drm/drm_vblank.h>
> > >  #include <drm/drm_vblank_work.h>
> > > -#include <drm/i915_mei_hdcp_interface.h>
> > > +#include <drm/i915_hdcp_interface.h>
> > >  #include <media/cec-notifier.h>
> > >
> > >  #include "i915_vma.h"
> > > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > > b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > > index 6406fd487ee5..262c76f21801 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> > > @@ -1143,7 +1143,7 @@ hdcp2_prepare_ake_init(struct intel_connector
> > > *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> >
> > comp name is relevant if we use component framework, having the name
> > for a generic case doesn't seem right. Change it universally in patch.
> 
> I think I lost you here as the change here from my side was i915_hdcp_comp_master
> to I915_hdcp_master and I left the variable name as is.
> If you do want me to change the variable name what do you think would be better

Comp is a name assuming we are using component framework but that is limited to
only mei not gsc. A more generic name would be better.

> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1154,7 +1154,7 @@ hdcp2_prepare_ake_init(struct intel_connector
> > > *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->initiate_hdcp2_session(comp->mei_dev, data,
> > ake_data);
> > > +	ret = comp->ops->initiate_hdcp2_session(comp->hdcp_dev, data,
> > > +ake_data);
> > >  	if (ret)
> > >  		drm_dbg_kms(&dev_priv->drm, "Prepare_ake_init failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1173,7 +1173,7 @@ hdcp2_verify_rx_cert_prepare_km(struct
> > > intel_connector *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1184,7 +1184,7 @@ hdcp2_verify_rx_cert_prepare_km(struct
> > > intel_connector *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->verify_receiver_cert_prepare_km(comp->mei_dev,
> > data,
> > > +	ret = comp->ops->verify_receiver_cert_prepare_km(comp-
> > >hdcp_dev,
> > > +data,
> > >  							 rx_cert, paired,
> > >  							 ek_pub_km,
> > msg_sz);
> > >  	if (ret < 0)
> > > @@ -1201,7 +1201,7 @@ static int hdcp2_verify_hprime(struct
> > > intel_connector *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1212,7 +1212,7 @@ static int hdcp2_verify_hprime(struct
> > > intel_connector *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->verify_hprime(comp->mei_dev, data, rx_hprime);
> > > +	ret = comp->ops->verify_hprime(comp->hdcp_dev, data, rx_hprime);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Verify hprime failed.
> > %d\n", ret);
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1227,7 +1227,7 @@ hdcp2_store_pairing_info(struct
> > > intel_connector *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1238,7 +1238,7 @@ hdcp2_store_pairing_info(struct
> > > intel_connector *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->store_pairing_info(comp->mei_dev, data,
> > pairing_info);
> > > +	ret = comp->ops->store_pairing_info(comp->hdcp_dev, data,
> > > +pairing_info);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Store pairing info failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1254,7 +1254,7 @@ hdcp2_prepare_lc_init(struct intel_connector
> > *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1265,7 +1265,7 @@ hdcp2_prepare_lc_init(struct intel_connector
> > *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->initiate_locality_check(comp->mei_dev, data,
> > lc_init);
> > > +	ret = comp->ops->initiate_locality_check(comp->hdcp_dev, data,
> > > +lc_init);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Prepare lc_init failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1281,7 +1281,7 @@ hdcp2_verify_lprime(struct intel_connector
> > *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1292,7 +1292,7 @@ hdcp2_verify_lprime(struct intel_connector
> > *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->verify_lprime(comp->mei_dev, data, rx_lprime);
> > > +	ret = comp->ops->verify_lprime(comp->hdcp_dev, data, rx_lprime);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Verify L_Prime failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1307,7 +1307,7 @@ static int hdcp2_prepare_skey(struct
> > > intel_connector *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1318,7 +1318,7 @@ static int hdcp2_prepare_skey(struct
> > > intel_connector *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->get_session_key(comp->mei_dev, data, ske_data);
> > > +	ret = comp->ops->get_session_key(comp->hdcp_dev, data,
> > ske_data);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Get session key failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1336,7 +1336,7 @@ hdcp2_verify_rep_topology_prepare_ack(struct
> > > intel_connector *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1347,7 +1347,7 @@ hdcp2_verify_rep_topology_prepare_ack(struct
> > > intel_connector *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->repeater_check_flow_prepare_ack(comp-
> > >mei_dev,
> > > data,
> > > +	ret = comp->ops->repeater_check_flow_prepare_ack(comp-
> > >hdcp_dev,
> > > data,
> > >  							 rep_topology,
> > >  							 rep_send_ack);
> > >  	if (ret < 0)
> > > @@ -1365,7 +1365,7 @@ hdcp2_verify_mprime(struct intel_connector
> > *connector,
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1376,7 +1376,7 @@ hdcp2_verify_mprime(struct intel_connector
> > *connector,
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->verify_mprime(comp->mei_dev, data,
> > stream_ready);
> > > +	ret = comp->ops->verify_mprime(comp->hdcp_dev, data,
> > stream_ready);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Verify mprime failed.
> > %d\n", ret);
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1389,7 +1389,7 @@ static int hdcp2_authenticate_port(struct
> > > intel_connector
> > > *connector)
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct hdcp_port_data *data = &dig_port->hdcp_port_data;
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1400,7 +1400,7 @@ static int hdcp2_authenticate_port(struct
> > > intel_connector
> > > *connector)
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->enable_hdcp_authentication(comp->mei_dev,
> > data);
> > > +	ret = comp->ops->enable_hdcp_authentication(comp->hdcp_dev,
> > data);
> > >  	if (ret < 0)
> > >  		drm_dbg_kms(&dev_priv->drm, "Enable hdcp auth failed.
> > %d\n",
> > >  			    ret);
> > > @@ -1413,7 +1413,7 @@ static int hdcp2_close_mei_session(struct
> > > intel_connector
> > > *connector)  {
> > >  	struct intel_digital_port *dig_port =
> > intel_attached_dig_port(connector);
> > >  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > > -	struct i915_hdcp_comp_master *comp;
> > > +	struct i915_hdcp_master *comp;
> > >  	int ret;
> > >
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > @@ -1424,7 +1424,7 @@ static int hdcp2_close_mei_session(struct
> > > intel_connector
> > > *connector)
> > >  		return -EINVAL;
> > >  	}
> > >
> > > -	ret = comp->ops->close_hdcp_session(comp->mei_dev,
> > > +	ret = comp->ops->close_hdcp_session(comp->hdcp_dev,
> > >  					     &dig_port->hdcp_port_data);
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > >
> > > @@ -2145,8 +2145,8 @@ static int i915_hdcp_component_bind(struct
> > > device *i915_kdev,
> > >
> > >  	drm_dbg(&dev_priv->drm, "I915 HDCP comp bind\n");
> > >  	mutex_lock(&dev_priv->display.hdcp.comp_mutex);
> > > -	dev_priv->display.hdcp.master = (struct i915_hdcp_comp_master
> > *)data;
> > > -	dev_priv->display.hdcp.master->mei_dev = mei_kdev;
> > > +	dev_priv->display.hdcp.master = (struct i915_hdcp_master *)data;
> > > +	dev_priv->display.hdcp.master->hdcp_dev = mei_kdev;
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > >
> > >  	return 0;
> > > @@ -2163,30 +2163,30 @@ static void
> > i915_hdcp_component_unbind(struct
> > > device *i915_kdev,
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > >  }
> > >
> > > -static const struct component_ops i915_hdcp_component_ops = {
> > > +static const struct component_ops i915_hdcp_ops = {
> > >  	.bind   = i915_hdcp_component_bind,
> > >  	.unbind = i915_hdcp_component_unbind,  };
> > >
> > > -static enum mei_fw_ddi intel_get_mei_fw_ddi_index(enum port port)
> > > +static enum hdcp_ddi intel_get_hdcp_ddi_index(enum port port)
> > >  {
> > >  	switch (port) {
> > >  	case PORT_A:
> > > -		return MEI_DDI_A;
> > > +		return HDCP_DDI_A;
> > >  	case PORT_B ... PORT_F:
> > > -		return (enum mei_fw_ddi)port;
> > > +		return (enum hdcp_ddi)port;
> > >  	default:
> > > -		return MEI_DDI_INVALID_PORT;
> > > +		return HDCP_DDI_INVALID_PORT;
> > >  	}
> > >  }
> > >
> > > -static enum mei_fw_tc intel_get_mei_fw_tc(enum transcoder
> > > cpu_transcoder)
> > > +static enum hdcp_transcoder intel_get_hdcp_transcoder(enum
> > transcoder
> > > +cpu_transcoder)
> > >  {
> > >  	switch (cpu_transcoder) {
> > >  	case TRANSCODER_A ... TRANSCODER_D:
> > > -		return (enum mei_fw_tc)(cpu_transcoder | 0x10);
> > > +		return (enum hdcp_transcoder)(cpu_transcoder | 0x10);
> > >  	default: /* eDP, DSI TRANSCODERS are non HDCP capable */
> > > -		return MEI_INVALID_TRANSCODER;
> > > +		return HDCP_INVALID_TRANSCODER;
> > >  	}
> > >  }
> > >
> > > @@ -2200,20 +2200,20 @@ static int initialize_hdcp_port_data(struct
> > > intel_connector *connector,
> > >  	enum port port = dig_port->base.port;
> > >
> > >  	if (DISPLAY_VER(dev_priv) < 12)
> > > -		data->fw_ddi = intel_get_mei_fw_ddi_index(port);
> > > +		data->hdcp_ddi = intel_get_hdcp_ddi_index(port);
> > >  	else
> > >  		/*
> > > -		 * As per ME FW API expectation, for GEN 12+, fw_ddi is filled
> > > +		 * As per ME FW API expectation, for GEN 12+, hdcp_ddi is
> > filled
> > >  		 * with zero(INVALID PORT index).
> > >  		 */
> > > -		data->fw_ddi = MEI_DDI_INVALID_PORT;
> > > +		data->hdcp_ddi = HDCP_DDI_INVALID_PORT;
> > >
> > >  	/*
> > > -	 * As associated transcoder is set and modified at modeset, here
> > fw_tc
> > > +	 * As associated transcoder is set and modified at modeset, here
> > > +hdcp_transcoder
> > >  	 * is initialized to zero (invalid transcoder index). This will be
> > >  	 * retained for <Gen12 forever.
> > >  	 */
> > > -	data->fw_tc = MEI_INVALID_TRANSCODER;
> > > +	data->hdcp_transcoder = HDCP_INVALID_TRANSCODER;
> > >
> > >  	data->port_type = (u8)HDCP_PORT_TYPE_INTEGRATED;
> > >  	data->protocol = (u8)shim->protocol; @@ -2256,7 +2256,7 @@ void
> > > intel_hdcp_component_init(struct drm_i915_private
> > > *dev_priv)
> > >
> > >  	dev_priv->display.hdcp.comp_added = true;
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > > -	ret = component_add_typed(dev_priv->drm.dev,
> > > &i915_hdcp_component_ops,
> > > +	ret = component_add_typed(dev_priv->drm.dev, &i915_hdcp_ops,
> > >  				  I915_COMPONENT_HDCP);
> > >  	if (ret < 0) {
> > >  		drm_dbg_kms(&dev_priv->drm, "Failed at component
> > add(%d)\n", @@
> > > -2350,7 +2350,8 @@ int intel_hdcp_enable(struct intel_connector
> > *connector,
> > >  	}
> > >
> > >  	if (DISPLAY_VER(dev_priv) >= 12)
> > > -		dig_port->hdcp_port_data.fw_tc =
> > intel_get_mei_fw_tc(hdcp-
> > > >cpu_transcoder);
> > > +		dig_port->hdcp_port_data.hdcp_transcoder =
> > > +			intel_get_hdcp_transcoder(hdcp->cpu_transcoder);
> > >
> > >  	/*
> > >  	 * Considering that HDCP2.2 is more secure than HDCP1.4, If the
> > > setup @@ -
> > > 2485,7 +2486,7 @@ void intel_hdcp_component_fini(struct
> > > drm_i915_private
> > > *dev_priv)
> > >  	dev_priv->display.hdcp.comp_added = false;
> > >  	mutex_unlock(&dev_priv->display.hdcp.comp_mutex);
> > >
> > > -	component_del(dev_priv->drm.dev, &i915_hdcp_component_ops);
> > > +	component_del(dev_priv->drm.dev, &i915_hdcp_ops);
> > >  }
> > >
> > >  void intel_hdcp_cleanup(struct intel_connector *connector) diff
> > > --git a/drivers/misc/mei/hdcp/mei_hdcp.c
> > b/drivers/misc/mei/hdcp/mei_hdcp.c
> > > index e889a8bd7ac8..b2c49599809c 100644
> > > --- a/drivers/misc/mei/hdcp/mei_hdcp.c
> > > +++ b/drivers/misc/mei/hdcp/mei_hdcp.c
> > > @@ -23,7 +23,7 @@
> > >  #include <linux/component.h>
> > >  #include <drm/drm_connector.h>
> > >  #include <drm/i915_component.h>
> > > -#include <drm/i915_mei_hdcp_interface.h>
> > > +#include <drm/i915_hdcp_interface.h>
> > >
> > >  #include "mei_hdcp.h"
> > >
> > > @@ -57,8 +57,8 @@ mei_hdcp_initiate_session(struct device *dev,
> > > struct hdcp_port_data *data,
> > >
> > > 	WIRED_CMD_BUF_LEN_INITIATE_HDCP2_SESSION_IN;
> > >
> > >  	session_init_in.port.integrated_port_type = data->port_type;
> > > -	session_init_in.port.physical_port = (u8)data->fw_ddi;
> > > -	session_init_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	session_init_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	session_init_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >  	session_init_in.protocol = data->protocol;
> > >
> > >  	byte = mei_cldev_send(cldev, (u8 *)&session_init_in, @@ -127,8
> > > +127,8 @@ mei_hdcp_verify_receiver_cert_prepare_km(struct device
> > *dev,
> > >
> > > 	WIRED_CMD_BUF_LEN_VERIFY_RECEIVER_CERT_IN;
> > >
> > >  	verify_rxcert_in.port.integrated_port_type = data->port_type;
> > > -	verify_rxcert_in.port.physical_port = (u8)data->fw_ddi;
> > > -	verify_rxcert_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	verify_rxcert_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	verify_rxcert_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	verify_rxcert_in.cert_rx = rx_cert->cert_rx;
> > >  	memcpy(verify_rxcert_in.r_rx, &rx_cert->r_rx, HDCP_2_2_RRX_LEN);
> > @@
> > > -
> > > 198,8 +198,8 @@ mei_hdcp_verify_hprime(struct device *dev, struct
> > > hdcp_port_data *data,
> > >  	send_hprime_in.header.buffer_len =
> > > WIRED_CMD_BUF_LEN_AKE_SEND_HPRIME_IN;
> > >
> > >  	send_hprime_in.port.integrated_port_type = data->port_type;
> > > -	send_hprime_in.port.physical_port = (u8)data->fw_ddi;
> > > -	send_hprime_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	send_hprime_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	send_hprime_in.port.attached_transcoder = (u8)data-
> > >hdcp_transcoder;
> > >
> > >  	memcpy(send_hprime_in.h_prime, rx_hprime->h_prime,
> > >  	       HDCP_2_2_H_PRIME_LEN);
> > > @@ -256,8 +256,8 @@ mei_hdcp_store_pairing_info(struct device *dev,
> > > struct hdcp_port_data *data,
> > >
> > > 	WIRED_CMD_BUF_LEN_SEND_PAIRING_INFO_IN;
> > >
> > >  	pairing_info_in.port.integrated_port_type = data->port_type;
> > > -	pairing_info_in.port.physical_port = (u8)data->fw_ddi;
> > > -	pairing_info_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	pairing_info_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	pairing_info_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km,
> > >  	       HDCP_2_2_E_KH_KM_LEN);
> > > @@ -315,8 +315,8 @@ mei_hdcp_initiate_locality_check(struct device
> > *dev,
> > >  	lc_init_in.header.buffer_len =
> > > WIRED_CMD_BUF_LEN_INIT_LOCALITY_CHECK_IN;
> > >
> > >  	lc_init_in.port.integrated_port_type = data->port_type;
> > > -	lc_init_in.port.physical_port = (u8)data->fw_ddi;
> > > -	lc_init_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	lc_init_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	lc_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> > >
> > >  	byte = mei_cldev_send(cldev, (u8 *)&lc_init_in, sizeof(lc_init_in));
> > >  	if (byte < 0) {
> > > @@ -371,8 +371,8 @@ mei_hdcp_verify_lprime(struct device *dev,
> > > struct hdcp_port_data *data,
> > >
> > > 	WIRED_CMD_BUF_LEN_VALIDATE_LOCALITY_IN;
> > >
> > >  	verify_lprime_in.port.integrated_port_type = data->port_type;
> > > -	verify_lprime_in.port.physical_port = (u8)data->fw_ddi;
> > > -	verify_lprime_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	verify_lprime_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	verify_lprime_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	memcpy(verify_lprime_in.l_prime, rx_lprime->l_prime,
> > >  	       HDCP_2_2_L_PRIME_LEN);
> > > @@ -429,8 +429,8 @@ static int mei_hdcp_get_session_key(struct
> > > device
> > *dev,
> > >  	get_skey_in.header.buffer_len =
> > > WIRED_CMD_BUF_LEN_GET_SESSION_KEY_IN;
> > >
> > >  	get_skey_in.port.integrated_port_type = data->port_type;
> > > -	get_skey_in.port.physical_port = (u8)data->fw_ddi;
> > > -	get_skey_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	get_skey_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	get_skey_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> > >
> > >  	byte = mei_cldev_send(cldev, (u8 *)&get_skey_in,
> > sizeof(get_skey_in));
> > >  	if (byte < 0) {
> > > @@ -494,8 +494,8 @@
> > mei_hdcp_repeater_check_flow_prepare_ack(struct
> > > device *dev,
> > >
> > > 	WIRED_CMD_BUF_LEN_VERIFY_REPEATER_IN;
> > >
> > >  	verify_repeater_in.port.integrated_port_type = data->port_type;
> > > -	verify_repeater_in.port.physical_port = (u8)data->fw_ddi;
> > > -	verify_repeater_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	verify_repeater_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	verify_repeater_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	memcpy(verify_repeater_in.rx_info, rep_topology->rx_info,
> > >  	       HDCP_2_2_RXINFO_LEN);
> > > @@ -572,8 +572,8 @@ static int mei_hdcp_verify_mprime(struct device
> > *dev,
> > >  	verify_mprime_in->header.buffer_len = cmd_size  -
> > > sizeof(verify_mprime_in-
> > > >header);
> > >
> > >  	verify_mprime_in->port.integrated_port_type = data->port_type;
> > > -	verify_mprime_in->port.physical_port = (u8)data->fw_ddi;
> > > -	verify_mprime_in->port.attached_transcoder = (u8)data->fw_tc;
> > > +	verify_mprime_in->port.physical_port = (u8)data->hdcp_ddi;
> > > +	verify_mprime_in->port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	memcpy(verify_mprime_in->m_prime, stream_ready->m_prime,
> > > HDCP_2_2_MPRIME_LEN);
> > >  	drm_hdcp_cpu_to_be24(verify_mprime_in->seq_num_m, data-
> > > >seq_num_m); @@ -634,8 +634,8 @@ static int
> > > mei_hdcp_enable_authentication(struct device *dev,
> > >  	enable_auth_in.header.buffer_len =
> > > WIRED_CMD_BUF_LEN_ENABLE_AUTH_IN;
> > >
> > >  	enable_auth_in.port.integrated_port_type = data->port_type;
> > > -	enable_auth_in.port.physical_port = (u8)data->fw_ddi;
> > > -	enable_auth_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	enable_auth_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	enable_auth_in.port.attached_transcoder = (u8)data-
> > >hdcp_transcoder;
> > >  	enable_auth_in.stream_type = data->streams[0].stream_type;
> > >
> > >  	byte = mei_cldev_send(cldev, (u8 *)&enable_auth_in, @@ -689,8
> > +689,8
> > > @@ mei_hdcp_close_session(struct device *dev, struct hdcp_port_data
> > *data)
> > >  				WIRED_CMD_BUF_LEN_CLOSE_SESSION_IN;
> > >
> > >  	session_close_in.port.integrated_port_type = data->port_type;
> > > -	session_close_in.port.physical_port = (u8)data->fw_ddi;
> > > -	session_close_in.port.attached_transcoder = (u8)data->fw_tc;
> > > +	session_close_in.port.physical_port = (u8)data->hdcp_ddi;
> > > +	session_close_in.port.attached_transcoder =
> > > +(u8)data->hdcp_transcoder;
> > >
> > >  	byte = mei_cldev_send(cldev, (u8 *)&session_close_in,
> > >  			      sizeof(session_close_in)); @@ -715,7 +715,7 @@
> > > mei_hdcp_close_session(struct device *dev, struct hdcp_port_data
> > > *data)
> > >  	return 0;
> > >  }
> > >
> > > -static const struct i915_hdcp_component_ops mei_hdcp_ops = {
> > > +static const struct i915_hdcp_ops mei_hdcp_ops = {
> > >  	.owner = THIS_MODULE,
> > >  	.initiate_hdcp2_session = mei_hdcp_initiate_session,
> > >  	.verify_receiver_cert_prepare_km = @@ -735,13 +735,12 @@ static
> > > const struct i915_hdcp_component_ops mei_hdcp_ops = {  static int
> > > mei_component_master_bind(struct device
> > *dev)  {
> > >  	struct mei_cl_device *cldev = to_mei_cl_device(dev);
> > > -	struct i915_hdcp_comp_master *comp_master =
> > > -
> > 	mei_cldev_get_drvdata(cldev);
> > > +	struct i915_hdcp_master *comp_master =
> > mei_cldev_get_drvdata(cldev);
> > >  	int ret;
> > >
> > >  	dev_dbg(dev, "%s\n", __func__);
> > >  	comp_master->ops = &mei_hdcp_ops;
> > > -	comp_master->mei_dev = dev;
> > > +	comp_master->hdcp_dev = dev;
> > >  	ret = component_bind_all(dev, comp_master);
> > >  	if (ret < 0)
> > >  		return ret;
> > > @@ -752,8 +751,7 @@ static int mei_component_master_bind(struct
> > device
> > > *dev) static void mei_component_master_unbind(struct device *dev)  {
> > >  	struct mei_cl_device *cldev = to_mei_cl_device(dev);
> > > -	struct i915_hdcp_comp_master *comp_master =
> > > -
> > 	mei_cldev_get_drvdata(cldev);
> > > +	struct i915_hdcp_master *comp_master =
> > mei_cldev_get_drvdata(cldev);
> > >
> > >  	dev_dbg(dev, "%s\n", __func__);
> > >  	component_unbind_all(dev, comp_master); @@ -801,7 +799,7 @@
> > static
> > > int mei_hdcp_component_match(struct device *dev, int subcomponent,
> > > static int mei_hdcp_probe(struct mei_cl_device *cldev,
> > >  			  const struct mei_cl_device_id *id)  {
> > > -	struct i915_hdcp_comp_master *comp_master;
> > > +	struct i915_hdcp_master *comp_master;
> > >  	struct component_match *master_match;
> > >  	int ret;
> > >
> > > @@ -846,8 +844,7 @@ static int mei_hdcp_probe(struct mei_cl_device
> > > *cldev,
> > >
> > >  static void mei_hdcp_remove(struct mei_cl_device *cldev)  {
> > > -	struct i915_hdcp_comp_master *comp_master =
> > > -
> > 	mei_cldev_get_drvdata(cldev);
> > > +	struct i915_hdcp_master *comp_master =
> > mei_cldev_get_drvdata(cldev);
> > >  	int ret;
> > >
> > >  	component_master_del(&cldev->dev,
> > &mei_component_master_ops); diff -
> > > -git a/include/drm/i915_mei_hdcp_interface.h
> > > b/include/drm/i915_hdcp_interface.h
> > > similarity index 73%
> > > rename from include/drm/i915_mei_hdcp_interface.h
> > > rename to include/drm/i915_hdcp_interface.h index
> > > f441cbcd95a4..75c75f52ab1b
> > > 100644
> > > --- a/include/drm/i915_mei_hdcp_interface.h
> > > +++ b/include/drm/i915_hdcp_interface.h
> > > @@ -6,15 +6,15 @@
> > >   * Ramalingam C <ramalingam.c at intel.com>
> > >   */
> > >
> > > -#ifndef _I915_MEI_HDCP_INTERFACE_H_ -#define
> > > _I915_MEI_HDCP_INTERFACE_H_
> > > +#ifndef _I915_HDCP_INTERFACE_H_
> > > +#define _I915_HDCP_INTERFACE_H_
> > >
> > >  #include <linux/mutex.h>
> > >  #include <linux/device.h>
> > >  #include <drm/display/drm_hdcp.h>
> > >
> > >  /**
> > > - * enum hdcp_port_type - HDCP port implementation type defined by
> > > ME FW
> > > + * enum hdcp_port_type - HDCP port implementation type defined by
> > > + ME/GSC FW
> > >   * @HDCP_PORT_TYPE_INVALID: Invalid hdcp port type
> > >   * @HDCP_PORT_TYPE_INTEGRATED: In-Host HDCP2.x port
> > >   * @HDCP_PORT_TYPE_LSPCON: HDCP2.2 discrete wired Tx port with
> > LSPCON
> > > @@
> > > -41,46 +41,46 @@ enum hdcp_wired_protocol {
> > >  	HDCP_PROTOCOL_DP
> > >  };
> > >
> > > -enum mei_fw_ddi {
> > > -	MEI_DDI_INVALID_PORT = 0x0,
> > > +enum hdcp_ddi {
> > > +	HDCP_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,
> > > +	HDCP_DDI_B = 1,
> > > +	HDCP_DDI_C,
> > > +	HDCP_DDI_D,
> > > +	HDCP_DDI_E,
> > > +	HDCP_DDI_F,
> > > +	HDCP_DDI_A = 7,
> > > +	HDCP_DDI_RANGE_END = HDCP_DDI_A,
> > >  };
> > >
> > >  /**
> > > - * enum mei_fw_tc - ME Firmware defined index for transcoders
> > > - * @MEI_INVALID_TRANSCODER: Index for Invalid transcoder
> > > - * @MEI_TRANSCODER_EDP: Index for EDP Transcoder
> > > - * @MEI_TRANSCODER_DSI0: Index for DSI0 Transcoder
> > > - * @MEI_TRANSCODER_DSI1: Index for DSI1 Transcoder
> > > - * @MEI_TRANSCODER_A: Index for Transcoder A
> > > - * @MEI_TRANSCODER_B: Index for Transcoder B
> > > - * @MEI_TRANSCODER_C: Index for Transcoder C
> > > - * @MEI_TRANSCODER_D: Index for Transcoder D
> > > + * enum hdcp_tc - ME/GSC Firmware defined index for transcoders
> > > + * @HDCP_INVALID_TRANSCODER: Index for Invalid transcoder
> > > + * @HDCP_TRANSCODER_EDP: Index for EDP Transcoder
> > > + * @HDCP_TRANSCODER_DSI0: Index for DSI0 Transcoder
> > > + * @HDCP_TRANSCODER_DSI1: Index for DSI1 Transcoder
> > > + * @HDCP_TRANSCODER_A: Index for Transcoder A
> > > + * @HDCP_TRANSCODER_B: Index for Transcoder B
> > > + * @HDCP_TRANSCODER_C: Index for Transcoder C
> > > + * @HDCP_TRANSCODER_D: Index for Transcoder D
> > >   */
> > > -enum mei_fw_tc {
> > > -	MEI_INVALID_TRANSCODER = 0x00,
> > > -	MEI_TRANSCODER_EDP,
> > > -	MEI_TRANSCODER_DSI0,
> > > -	MEI_TRANSCODER_DSI1,
> > > -	MEI_TRANSCODER_A = 0x10,
> > > -	MEI_TRANSCODER_B,
> > > -	MEI_TRANSCODER_C,
> > > -	MEI_TRANSCODER_D
> > > +enum hdcp_transcoder {
> > > +	HDCP_INVALID_TRANSCODER = 0x00,
> > > +	HDCP_TRANSCODER_EDP,
> > > +	HDCP_TRANSCODER_DSI0,
> > > +	HDCP_TRANSCODER_DSI1,
> > > +	HDCP_TRANSCODER_A = 0x10,
> > > +	HDCP_TRANSCODER_B,
> > > +	HDCP_TRANSCODER_C,
> > > +	HDCP_TRANSCODER_D
> > >  };
> > >
> > >  /**
> > >   * struct hdcp_port_data - intel specific HDCP port data
> > > - * @fw_ddi: ddi index as per ME FW
> > > - * @fw_tc: transcoder index as per ME FW
> > > - * @port_type: HDCP port type as per ME FW classification
> > > - * @protocol: HDCP adaptation as per ME FW
> > > + * @hdcp_ddi: ddi index as per ME/GSC FW
> > > + * @hdcp_transcoder: transcoder index as per ME/GSC FW
> > > + * @port_type: HDCP port type as per ME/GSC FW classification
> > > + * @protocol: HDCP adaptation as per ME/GSC FW
> > >   * @k: No of streams transmitted on a port. Only on DP MST this is != 1
> > >   * @seq_num_m: Count of RepeaterAuth_Stream_Manage msg
> > propagated.
> > >   *	       Initialized to 0 on AKE_INIT. Incremented after every successful
> > > @@ -90,8 +90,8 @@ enum mei_fw_tc {
> > >   *	     streams
> > >   */
> > >  struct hdcp_port_data {
> > > -	enum mei_fw_ddi fw_ddi;
> > > -	enum mei_fw_tc fw_tc;
> > > +	enum hdcp_ddi hdcp_ddi;
> > > +	enum hdcp_transcoder hdcp_transcoder;
> > >  	u8 port_type;
> > >  	u8 protocol;
> > >  	u16 k;
> > > @@ -100,7 +100,7 @@ struct hdcp_port_data {  };
> > >
> > >  /**
> > > - * struct i915_hdcp_component_ops- ops for HDCP2.2 services.
> > > + * struct i915_hdcp_ops- ops for HDCP2.2 services.
> > >   * @owner: Module providing the ops
> > >   * @initiate_hdcp2_session: Initiate a Wired HDCP2.2 Tx Session.
> > >   *			    And Prepare AKE_Init.
> > > @@ -119,9 +119,9 @@ struct hdcp_port_data {
> > >   * @close_hdcp_session: Close the Wired HDCP Tx session per port.
> > >   *			This also disables the authenticated state of the port.
> > >   */
> > > -struct i915_hdcp_component_ops {
> > > +struct i915_hdcp_ops {
> > >  	/**
> > > -	 * @owner: mei_hdcp module
> > > +	 * @owner: hdcp module
> > >  	 */
> > >  	struct module *owner;
> > >
> > > @@ -169,16 +169,16 @@ struct i915_hdcp_component_ops {
> > >
> > >  /**
> > >   * struct i915_hdcp_component_master - Used for communication
> > between
> > > i915
> >
> > Name doesn't match with the structure, please fix.
> >
> 
> Okay it missed this will do
> 
> Regards,
> Suraj Kandpal
> > > - * and mei_hdcp drivers for the HDCP2.2 services
> > > - * @mei_dev: device that provide the HDCP2.2 service from MEI Bus.
> > > - * @hdcp_ops: Ops implemented by mei_hdcp driver, used by i915 driver.
> > > + * and hdcp drivers for the HDCP2.2 services
> > > + * @hdcp_dev: device that provide the HDCP2.2 service from MEI Bus.
> > > + * @hdcp_ops: Ops implemented by hdcp driver or intel_hdcp_gsc ,
> > > + used by i915
> > > driver.
> > >   */
> > > -struct i915_hdcp_comp_master {
> > > -	struct device *mei_dev;
> > > -	const struct i915_hdcp_component_ops *ops;
> > > +struct i915_hdcp_master {
> > > +	struct device *hdcp_dev;
> > > +	const struct i915_hdcp_ops *ops;
> > >
> > >  	/* To protect the above members. */
> > >  	struct mutex mutex;
> > >  };
> > >
> > > -#endif /* _I915_MEI_HDCP_INTERFACE_H_ */
> > > +#endif /* _I915_HDCP_INTERFACE_H_ */
> > > --
> > > 2.25.1



More information about the Intel-gfx mailing list