Re: [PATCH v9 1/6] drm/i915: mei_hdcp: I915 sends ddi index as per ME FW
Regards Shashank On 8/27/2019 10:03 AM, Ramalingam C wrote: On 2019-08-27 at 09:54:18 +0530, Sharma, Shashank wrote: Hello Ram, On 8/22/2019 8:48 PM, Ramalingam C wrote: I915 converts it's port value into ddi index defiend by ME FW and pass it as a member of hdcp_port_data structure. Hence expose the enum mei_fw_ddi to I915 through i915_mei_interface.h. Signed-off-by: Ramalingam C Acked-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_hdcp.c | 15 +- drivers/misc/mei/hdcp/mei_hdcp.c | 34 --- drivers/misc/mei/hdcp/mei_hdcp.h | 12 include/drm/i915_mei_hdcp_interface.h | 16 +-- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index 6ec5ceeab601..534832f435dc 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -1749,13 +1749,26 @@ static const struct component_ops i915_hdcp_component_ops = { .unbind = i915_hdcp_component_unbind, }; +static inline +enum mei_fw_ddi intel_get_mei_fw_ddi_index(enum port port) +{ + switch (port) { + case PORT_A: + return MEI_DDI_A; + case PORT_B ... PORT_F: + return (enum mei_fw_ddi)port; + default: + return MEI_DDI_INVALID_PORT; + } +} + static inline int initialize_hdcp_port_data(struct intel_connector *connector, const struct intel_hdcp_shim *shim) { struct intel_hdcp *hdcp = >hdcp; struct hdcp_port_data *data = >port_data; - data->port = connector->encoder->port; + data->fw_ddi = intel_get_mei_fw_ddi_index(connector->encoder->port); data->port_type = (u8)HDCP_PORT_TYPE_INTEGRATED; data->protocol = (u8)shim->protocol; diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c b/drivers/misc/mei/hdcp/mei_hdcp.c index c681f6fab342..3638c77eba26 100644 --- a/drivers/misc/mei/hdcp/mei_hdcp.c +++ b/drivers/misc/mei/hdcp/mei_hdcp.c @@ -27,18 +27,6 @@ #include "mei_hdcp.h" -static inline u8 mei_get_ddi_index(enum port port) -{ - switch (port) { - case PORT_A: - return MEI_DDI_A; - case PORT_B ... PORT_F: - return (u8)port; - default: - return MEI_DDI_INVALID_PORT; - } -} - /** * mei_hdcp_initiate_session() - Initiate a Wired HDCP2.2 Tx Session in ME FW * @dev: device corresponding to the mei_cl_device @@ -69,7 +57,7 @@ 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 = mei_get_ddi_index(data->port); + session_init_in.port.physical_port = (u8)data->fw_ddi; session_init_in.protocol = data->protocol; byte = mei_cldev_send(cldev, (u8 *)_init_in, @@ -138,7 +126,7 @@ 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 = mei_get_ddi_index(data->port); + verify_rxcert_in.port.physical_port = (u8)data->fw_ddi; verify_rxcert_in.cert_rx = rx_cert->cert_rx; memcpy(verify_rxcert_in.r_rx, _cert->r_rx, HDCP_2_2_RRX_LEN); @@ -208,7 +196,7 @@ 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 = mei_get_ddi_index(data->port); + send_hprime_in.port.physical_port = (u8)data->fw_ddi; memcpy(send_hprime_in.h_prime, rx_hprime->h_prime, HDCP_2_2_H_PRIME_LEN); @@ -265,7 +253,7 @@ 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 = mei_get_ddi_index(data->port); + pairing_info_in.port.physical_port = (u8)data->fw_ddi; memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, HDCP_2_2_E_KH_KM_LEN); @@ -323,7 +311,7 @@ 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 = mei_get_ddi_index(data->port); + lc_init_in.port.physical_port = (u8)data->fw_ddi; byte = mei_cldev_send(cldev, (u8 *)_init_in, sizeof(lc_init_in)); if (byte < 0) { @@ -378,7 +366,7 @@ mei_hdcp_verify_lprime(struct
Re: [PATCH v9 1/6] drm/i915: mei_hdcp: I915 sends ddi index as per ME FW
On 2019-08-27 at 09:54:18 +0530, Sharma, Shashank wrote: > Hello Ram, > > On 8/22/2019 8:48 PM, Ramalingam C wrote: > > I915 converts it's port value into ddi index defiend by ME FW > > and pass it as a member of hdcp_port_data structure. > > > > Hence expose the enum mei_fw_ddi to I915 through > > i915_mei_interface.h. > > > > Signed-off-by: Ramalingam C > > Acked-by: Jani Nikula > > --- > > drivers/gpu/drm/i915/display/intel_hdcp.c | 15 +- > > drivers/misc/mei/hdcp/mei_hdcp.c | 34 --- > > drivers/misc/mei/hdcp/mei_hdcp.h | 12 > > include/drm/i915_mei_hdcp_interface.h | 16 +-- > > 4 files changed, 39 insertions(+), 38 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c > > b/drivers/gpu/drm/i915/display/intel_hdcp.c > > index 6ec5ceeab601..534832f435dc 100644 > > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c > > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c > > @@ -1749,13 +1749,26 @@ static const struct component_ops > > i915_hdcp_component_ops = { > > .unbind = i915_hdcp_component_unbind, > > }; > > +static inline > > +enum mei_fw_ddi intel_get_mei_fw_ddi_index(enum port port) > > +{ > > + switch (port) { > > + case PORT_A: > > + return MEI_DDI_A; > > + case PORT_B ... PORT_F: > > + return (enum mei_fw_ddi)port; > > + default: > > + return MEI_DDI_INVALID_PORT; > > + } > > +} > > + > > static inline int initialize_hdcp_port_data(struct intel_connector > > *connector, > > const struct intel_hdcp_shim *shim) > > { > > struct intel_hdcp *hdcp = >hdcp; > > struct hdcp_port_data *data = >port_data; > > - data->port = connector->encoder->port; > > + data->fw_ddi = intel_get_mei_fw_ddi_index(connector->encoder->port); > > data->port_type = (u8)HDCP_PORT_TYPE_INTEGRATED; > > data->protocol = (u8)shim->protocol; > > diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c > > b/drivers/misc/mei/hdcp/mei_hdcp.c > > index c681f6fab342..3638c77eba26 100644 > > --- a/drivers/misc/mei/hdcp/mei_hdcp.c > > +++ b/drivers/misc/mei/hdcp/mei_hdcp.c > > @@ -27,18 +27,6 @@ > > #include "mei_hdcp.h" > > -static inline u8 mei_get_ddi_index(enum port port) > > -{ > > - switch (port) { > > - case PORT_A: > > - return MEI_DDI_A; > > - case PORT_B ... PORT_F: > > - return (u8)port; > > - default: > > - return MEI_DDI_INVALID_PORT; > > - } > > -} > > - > > /** > >* mei_hdcp_initiate_session() - Initiate a Wired HDCP2.2 Tx Session in > > ME FW > >* @dev: device corresponding to the mei_cl_device > > @@ -69,7 +57,7 @@ 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 = mei_get_ddi_index(data->port); > > + session_init_in.port.physical_port = (u8)data->fw_ddi; > > session_init_in.protocol = data->protocol; > > byte = mei_cldev_send(cldev, (u8 *)_init_in, > > @@ -138,7 +126,7 @@ 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 = mei_get_ddi_index(data->port); > > + verify_rxcert_in.port.physical_port = (u8)data->fw_ddi; > > verify_rxcert_in.cert_rx = rx_cert->cert_rx; > > memcpy(verify_rxcert_in.r_rx, _cert->r_rx, HDCP_2_2_RRX_LEN); > > @@ -208,7 +196,7 @@ 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 = mei_get_ddi_index(data->port); > > + send_hprime_in.port.physical_port = (u8)data->fw_ddi; > > memcpy(send_hprime_in.h_prime, rx_hprime->h_prime, > >HDCP_2_2_H_PRIME_LEN); > > @@ -265,7 +253,7 @@ 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 = mei_get_ddi_index(data->port); > > + pairing_info_in.port.physical_port = (u8)data->fw_ddi; > > memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, > >HDCP_2_2_E_KH_KM_LEN); > > @@ -323,7 +311,7 @@ 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 = mei_get_ddi_index(data->port); > > + lc_init_in.port.physical_port = (u8)data->fw_ddi;
Re: [PATCH v9 1/6] drm/i915: mei_hdcp: I915 sends ddi index as per ME FW
Hello Ram, On 8/22/2019 8:48 PM, Ramalingam C wrote: I915 converts it's port value into ddi index defiend by ME FW and pass it as a member of hdcp_port_data structure. Hence expose the enum mei_fw_ddi to I915 through i915_mei_interface.h. Signed-off-by: Ramalingam C Acked-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_hdcp.c | 15 +- drivers/misc/mei/hdcp/mei_hdcp.c | 34 --- drivers/misc/mei/hdcp/mei_hdcp.h | 12 include/drm/i915_mei_hdcp_interface.h | 16 +-- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index 6ec5ceeab601..534832f435dc 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -1749,13 +1749,26 @@ static const struct component_ops i915_hdcp_component_ops = { .unbind = i915_hdcp_component_unbind, }; +static inline +enum mei_fw_ddi intel_get_mei_fw_ddi_index(enum port port) +{ + switch (port) { + case PORT_A: + return MEI_DDI_A; + case PORT_B ... PORT_F: + return (enum mei_fw_ddi)port; + default: + return MEI_DDI_INVALID_PORT; + } +} + static inline int initialize_hdcp_port_data(struct intel_connector *connector, const struct intel_hdcp_shim *shim) { struct intel_hdcp *hdcp = >hdcp; struct hdcp_port_data *data = >port_data; - data->port = connector->encoder->port; + data->fw_ddi = intel_get_mei_fw_ddi_index(connector->encoder->port); data->port_type = (u8)HDCP_PORT_TYPE_INTEGRATED; data->protocol = (u8)shim->protocol; diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c b/drivers/misc/mei/hdcp/mei_hdcp.c index c681f6fab342..3638c77eba26 100644 --- a/drivers/misc/mei/hdcp/mei_hdcp.c +++ b/drivers/misc/mei/hdcp/mei_hdcp.c @@ -27,18 +27,6 @@ #include "mei_hdcp.h" -static inline u8 mei_get_ddi_index(enum port port) -{ - switch (port) { - case PORT_A: - return MEI_DDI_A; - case PORT_B ... PORT_F: - return (u8)port; - default: - return MEI_DDI_INVALID_PORT; - } -} - /** * mei_hdcp_initiate_session() - Initiate a Wired HDCP2.2 Tx Session in ME FW * @dev: device corresponding to the mei_cl_device @@ -69,7 +57,7 @@ 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 = mei_get_ddi_index(data->port); + session_init_in.port.physical_port = (u8)data->fw_ddi; session_init_in.protocol = data->protocol; byte = mei_cldev_send(cldev, (u8 *)_init_in, @@ -138,7 +126,7 @@ 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 = mei_get_ddi_index(data->port); + verify_rxcert_in.port.physical_port = (u8)data->fw_ddi; verify_rxcert_in.cert_rx = rx_cert->cert_rx; memcpy(verify_rxcert_in.r_rx, _cert->r_rx, HDCP_2_2_RRX_LEN); @@ -208,7 +196,7 @@ 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 = mei_get_ddi_index(data->port); + send_hprime_in.port.physical_port = (u8)data->fw_ddi; memcpy(send_hprime_in.h_prime, rx_hprime->h_prime, HDCP_2_2_H_PRIME_LEN); @@ -265,7 +253,7 @@ 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 = mei_get_ddi_index(data->port); + pairing_info_in.port.physical_port = (u8)data->fw_ddi; memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, HDCP_2_2_E_KH_KM_LEN); @@ -323,7 +311,7 @@ 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 = mei_get_ddi_index(data->port); + lc_init_in.port.physical_port = (u8)data->fw_ddi; byte = mei_cldev_send(cldev, (u8 *)_init_in, sizeof(lc_init_in)); if (byte < 0) { @@ -378,7 +366,7 @@ mei_hdcp_verify_lprime(struct device *dev, struct hdcp_port_data *data, WIRED_CMD_BUF_LEN_VALIDATE_LOCALITY_IN;
[PATCH v9 1/6] drm/i915: mei_hdcp: I915 sends ddi index as per ME FW
I915 converts it's port value into ddi index defiend by ME FW and pass it as a member of hdcp_port_data structure. Hence expose the enum mei_fw_ddi to I915 through i915_mei_interface.h. Signed-off-by: Ramalingam C Acked-by: Jani Nikula --- drivers/gpu/drm/i915/display/intel_hdcp.c | 15 +- drivers/misc/mei/hdcp/mei_hdcp.c | 34 --- drivers/misc/mei/hdcp/mei_hdcp.h | 12 include/drm/i915_mei_hdcp_interface.h | 16 +-- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index 6ec5ceeab601..534832f435dc 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -1749,13 +1749,26 @@ static const struct component_ops i915_hdcp_component_ops = { .unbind = i915_hdcp_component_unbind, }; +static inline +enum mei_fw_ddi intel_get_mei_fw_ddi_index(enum port port) +{ + switch (port) { + case PORT_A: + return MEI_DDI_A; + case PORT_B ... PORT_F: + return (enum mei_fw_ddi)port; + default: + return MEI_DDI_INVALID_PORT; + } +} + static inline int initialize_hdcp_port_data(struct intel_connector *connector, const struct intel_hdcp_shim *shim) { struct intel_hdcp *hdcp = >hdcp; struct hdcp_port_data *data = >port_data; - data->port = connector->encoder->port; + data->fw_ddi = intel_get_mei_fw_ddi_index(connector->encoder->port); data->port_type = (u8)HDCP_PORT_TYPE_INTEGRATED; data->protocol = (u8)shim->protocol; diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c b/drivers/misc/mei/hdcp/mei_hdcp.c index c681f6fab342..3638c77eba26 100644 --- a/drivers/misc/mei/hdcp/mei_hdcp.c +++ b/drivers/misc/mei/hdcp/mei_hdcp.c @@ -27,18 +27,6 @@ #include "mei_hdcp.h" -static inline u8 mei_get_ddi_index(enum port port) -{ - switch (port) { - case PORT_A: - return MEI_DDI_A; - case PORT_B ... PORT_F: - return (u8)port; - default: - return MEI_DDI_INVALID_PORT; - } -} - /** * mei_hdcp_initiate_session() - Initiate a Wired HDCP2.2 Tx Session in ME FW * @dev: device corresponding to the mei_cl_device @@ -69,7 +57,7 @@ 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 = mei_get_ddi_index(data->port); + session_init_in.port.physical_port = (u8)data->fw_ddi; session_init_in.protocol = data->protocol; byte = mei_cldev_send(cldev, (u8 *)_init_in, @@ -138,7 +126,7 @@ 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 = mei_get_ddi_index(data->port); + verify_rxcert_in.port.physical_port = (u8)data->fw_ddi; verify_rxcert_in.cert_rx = rx_cert->cert_rx; memcpy(verify_rxcert_in.r_rx, _cert->r_rx, HDCP_2_2_RRX_LEN); @@ -208,7 +196,7 @@ 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 = mei_get_ddi_index(data->port); + send_hprime_in.port.physical_port = (u8)data->fw_ddi; memcpy(send_hprime_in.h_prime, rx_hprime->h_prime, HDCP_2_2_H_PRIME_LEN); @@ -265,7 +253,7 @@ 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 = mei_get_ddi_index(data->port); + pairing_info_in.port.physical_port = (u8)data->fw_ddi; memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km, HDCP_2_2_E_KH_KM_LEN); @@ -323,7 +311,7 @@ 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 = mei_get_ddi_index(data->port); + lc_init_in.port.physical_port = (u8)data->fw_ddi; byte = mei_cldev_send(cldev, (u8 *)_init_in, sizeof(lc_init_in)); if (byte < 0) { @@ -378,7 +366,7 @@ mei_hdcp_verify_lprime(struct device *dev, struct hdcp_port_data *data, WIRED_CMD_BUF_LEN_VALIDATE_LOCALITY_IN;