[PATCH 06/11] drm/i915/hdcp: HDCP Capability for the downstream device

Nautiyal, Ankit K ankit.k.nautiyal at intel.com
Fri Feb 2 09:56:08 UTC 2024


On 2/2/2024 12:08 PM, Suraj Kandpal wrote:
> Currently we are only checking capability of remote device and not
> immediate downstream device but during capability check we need are
> concerned with only the HDCP capability of downstream device.
> During i915_display_info reporting we need HDCP Capability for both
> the monitors and downstream branch device if any this patch adds that.
>
> --v2
> -Use MST Hub HDCP version [Ankit]
>
> --v3
> -Redefined how we seprate remote and direct read to make sure HDMI
> shim functions are not touched [Ankit]
>
> Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
> ---
>   .../drm/i915/display/intel_display_debugfs.c  | 26 +++++++++++++++----
>   1 file changed, 21 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 6f2d13c8ccf7..41458f1cae38 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -188,7 +188,8 @@ static void intel_panel_info(struct seq_file *m,
>   }
>   
>   static void intel_hdcp_info(struct seq_file *m,
> -			    struct intel_connector *intel_connector)
> +			    struct intel_connector *intel_connector,
> +			    bool remote_req)
>   {
>   	bool hdcp_cap, hdcp2_cap;
>   
> @@ -197,8 +198,13 @@ static void intel_hdcp_info(struct seq_file *m,
>   		goto out;
>   	}
>   
> -	hdcp_cap = intel_hdcp_capable(intel_connector);
> -	hdcp2_cap = intel_hdcp2_capable(intel_connector);
> +	if (remote_req) {
> +		intel_hdcp_remote_cap(intel_connector, &hdcp_cap,
> +				      &hdcp2_cap);
> +	} else {
> +		hdcp_cap = intel_hdcp_capable(intel_connector);
> +		hdcp2_cap = intel_hdcp2_capable(intel_connector);
> +	}
>   
>   	if (hdcp_cap)
>   		seq_puts(m, "HDCP1.4 ");
> @@ -285,7 +291,12 @@ static void intel_connector_info(struct seq_file *m,
>   	}
>   
>   	seq_puts(m, "\tHDCP version: ");
> -	intel_hdcp_info(m, intel_connector);
> +	intel_hdcp_info(m, intel_connector, true);

This seems to be wrong, If its not an MST then we dont want to read remote.

this should be something like:

seq_puts(m, "\tHDCP version: ");
         if (intel_encoder_is_mst(encoder)) {

         intel_hdcp_info(m, intel_connector, true);
                 seq_puts(m, "\tMST Hub HDCP version: ");
                 intel_hdcp_info(m, intel_connector, false);
         }

else {
intel_hdcp_info(m, intel_connector, false);

}

Regards,

Ankit


> +
> +	if (intel_encoder_is_mst(encoder)) {
> +		seq_puts(m, "\tMST Hub HDCP version: ");
> +		intel_hdcp_info(m, intel_connector, false);
> +	}
>   
>   	seq_printf(m, "\tmax bpc: %u\n", connector->display_info.bpc);
>   
> @@ -1131,7 +1142,12 @@ static int i915_hdcp_sink_capability_show(struct seq_file *m, void *data)
>   
>   	seq_printf(m, "%s:%d HDCP version: ", connector->base.name,
>   		   connector->base.base.id);
> -	intel_hdcp_info(m, connector);
> +	intel_hdcp_info(m, connector, true);
> +
> +	if (intel_encoder_is_mst(connector->encoder)) {
> +		seq_puts(m, "\tMST Hub HDCP version: ");
> +		intel_hdcp_info(m, connector, false);
> +	}
>   
>   out:
>   	drm_modeset_unlock(&i915->drm.mode_config.connection_mutex);


More information about the Intel-gfx mailing list