[PATCH 1/6] drm/i915/hdcp: Move to direct reads for HDCP
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Tue Jan 30 08:49:52 UTC 2024
LGTM.
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
On 1/27/2024 12:46 PM, Suraj Kandpal wrote:
> Even for MST scenarios we need to do direct reads only on the
> immediate downstream device the rest of the authentication is taken
> care by that device. Remote reads will only be used to check
> capability of the monitors in MST topology.
>
> --v2
> -Add fixes tag [Ankit]
> -Derive aux where needed rather than through a function [Ankit]
>
> Fixes: ae4f902bb344 ("drm/i915/hdcp: Send the correct aux for DPMST HDCP scenario")
> Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 31 ++++++--------------
> 1 file changed, 9 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> index 3a595cd433d4..defc90936317 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> @@ -330,23 +330,13 @@ static const struct hdcp2_dp_msg_data hdcp2_dp_msg_data[] = {
> 0, 0 },
> };
>
> -static struct drm_dp_aux *
> -intel_dp_hdcp_get_aux(struct intel_connector *connector)
> -{
> - struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> -
> - if (intel_encoder_is_mst(connector->encoder))
> - return &connector->port->aux;
> - else
> - return &dig_port->dp.aux;
> -}
> -
> static int
> intel_dp_hdcp2_read_rx_status(struct intel_connector *connector,
> u8 *rx_status)
> {
> struct drm_i915_private *i915 = to_i915(connector->base.dev);
> - struct drm_dp_aux *aux = intel_dp_hdcp_get_aux(connector);
> + struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> + struct drm_dp_aux *aux = &dig_port->dp.aux;
> ssize_t ret;
>
> ret = drm_dp_dpcd_read(aux,
> @@ -454,8 +444,9 @@ int intel_dp_hdcp2_write_msg(struct intel_connector *connector,
> unsigned int offset;
> u8 *byte = buf;
> ssize_t ret, bytes_to_write, len;
> + struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> + struct drm_dp_aux *aux = &dig_port->dp.aux;
> const struct hdcp2_dp_msg_data *hdcp2_msg_data;
> - struct drm_dp_aux *aux;
>
> hdcp2_msg_data = get_hdcp2_dp_msg_data(*byte);
> if (!hdcp2_msg_data)
> @@ -463,8 +454,6 @@ int intel_dp_hdcp2_write_msg(struct intel_connector *connector,
>
> offset = hdcp2_msg_data->offset;
>
> - aux = intel_dp_hdcp_get_aux(connector);
> -
> /* No msg_id in DP HDCP2.2 msgs */
> bytes_to_write = size - 1;
> byte++;
> @@ -490,7 +479,8 @@ static
> ssize_t get_receiver_id_list_rx_info(struct intel_connector *connector,
> u32 *dev_cnt, u8 *byte)
> {
> - struct drm_dp_aux *aux = intel_dp_hdcp_get_aux(connector);
> + struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> + struct drm_dp_aux *aux = &dig_port->dp.aux;
> ssize_t ret;
> u8 *rx_info = byte;
>
> @@ -516,7 +506,7 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
> 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_hdcp *hdcp = &connector->hdcp;
> - struct drm_dp_aux *aux;
> + struct drm_dp_aux *aux = &dig_port->dp.aux;
> unsigned int offset;
> u8 *byte = buf;
> ssize_t ret, bytes_to_recv, len;
> @@ -530,8 +520,6 @@ int intel_dp_hdcp2_read_msg(struct intel_connector *connector,
> return -EINVAL;
> offset = hdcp2_msg_data->offset;
>
> - aux = intel_dp_hdcp_get_aux(connector);
> -
> ret = intel_dp_hdcp2_wait_for_msg(connector, hdcp2_msg_data);
> if (ret < 0)
> return ret;
> @@ -651,12 +639,11 @@ static
> int intel_dp_hdcp2_capable(struct intel_connector *connector,
> bool *capable)
> {
> - struct drm_dp_aux *aux;
> + struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
> + struct drm_dp_aux *aux = &dig_port->dp.aux;
> u8 rx_caps[3];
> int ret;
>
> - aux = intel_dp_hdcp_get_aux(connector);
> -
> *capable = false;
> ret = drm_dp_dpcd_read(aux,
> DP_HDCP_2_2_REG_RX_CAPS_OFFSET,
More information about the Intel-gfx
mailing list