[PATCH 10/12] drm/i915/hdcp: Don't enable HDCP directly from check_link
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Thu Feb 15 06:42:11 UTC 2024
On 2/15/2024 10:35 AM, Suraj Kandpal wrote:
> Whenever LIC fails instead of moving from ENABLED to DESIRED
> CP property we directly enable HDCP without informing the userspace
> of this failure in link integrity check.
> Now we will just update the value to DESIRED send the event to
> userspace and then continue with the normal flow of HDCP enablement.
>
> Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_hdcp.c | 31 ++++-------------------
> 1 file changed, 5 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 16b2b180563f..b22dbc6494e0 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -30,7 +30,7 @@
> #define KEY_LOAD_TRIES 5
> #define HDCP2_LC_RETRY_CNT 3
>
> -static int intel_conn_to_vcpi(struct drm_atomic_state *state,
> +static int intel_conn_to_vcpi(struct intel_atomic_state *state,
> struct intel_connector *connector)
This change does not belong to this patch. Perhaps should be moved to
the next patch.
> {
> struct drm_dp_mst_topology_mgr *mgr;
> @@ -43,7 +43,7 @@ static int intel_conn_to_vcpi(struct drm_atomic_state *state,
> return 0;
> mgr = connector->port->mgr;
>
> - drm_modeset_lock(&mgr->base.lock, state->acquire_ctx);
> + drm_modeset_lock(&mgr->base.lock, state->base.acquire_ctx);
Same as above.
> mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
> payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
> if (drm_WARN_ON(mgr->dev, !payload))
> @@ -2068,17 +2068,6 @@ static int intel_hdcp2_check_link(struct intel_connector *connector)
>
> drm_dbg_kms(&i915->drm,
> "HDCP2.2 Downstream topology change\n");
> - ret = hdcp2_authenticate_repeater_topology(connector);
> - if (!ret) {
> - intel_hdcp_update_value(connector,
> - DRM_MODE_CONTENT_PROTECTION_ENABLED,
> - true);
> - goto out;
> - }
I think we still need these. If repeater topology is authenticated, we
can go ahead with hdcp_update_value.
Otherwise we disable hdcp first.
Also, we need to make similar change for hdcp_check_link.
Regards,
Ankit
> - drm_dbg_kms(&i915->drm,
> - "[CONNECTOR:%d:%s] Repeater topology auth failed.(%d)\n",
> - connector->base.base.id, connector->base.name,
> - ret);
> } else {
> drm_dbg_kms(&i915->drm,
> "[CONNECTOR:%d:%s] HDCP2.2 link failed, retrying auth\n",
> @@ -2095,18 +2084,8 @@ static int intel_hdcp2_check_link(struct intel_connector *connector)
> goto out;
> }
>
> - ret = _intel_hdcp2_enable(connector);
> - if (ret) {
> - drm_dbg_kms(&i915->drm,
> - "[CONNECTOR:%d:%s] Failed to enable hdcp2.2 (%d)\n",
> - connector->base.base.id, connector->base.name,
> - ret);
> - intel_hdcp_update_value(connector,
> - DRM_MODE_CONTENT_PROTECTION_DESIRED,
> - true);
> - goto out;
> - }
> -
> + intel_hdcp_update_value(connector,
> + DRM_MODE_CONTENT_PROTECTION_DESIRED, true);
> out:
> mutex_unlock(&dig_port->hdcp_mutex);
> mutex_unlock(&hdcp->mutex);
> @@ -2345,7 +2324,7 @@ intel_hdcp_set_streams(struct intel_digital_port *dig_port,
> continue;
>
> data->streams[data->k].stream_id =
> - intel_conn_to_vcpi(&state->base, connector);
> + intel_conn_to_vcpi(state, connector);
> data->k++;
>
> /* if there is only one active stream */
More information about the Intel-gfx
mailing list