Hi,

On 20/11/2025 14:14, Harikrishna Shenoy wrote:
> Now that we have DRM_BRIDGE_ATTACH_NO_CONNECTOR framework, handle the
> HDCP state change inbridge atomic check as well to enable correct

"in bridge's"

> functioning for HDCP in both DRM_BRIDGE_ATTACH_NO_CONNECTOR and
> !DRM_BRIDGE_ATTACH_NO_CONNECTOR case.

Same thing here. What is the issue? What behavior do you see without
this patch?

 Tomi

> Fixes: 6a3608eae6d33 ("drm: bridge: cdns-mhdp8546: Enable HDCP")
> Signed-off-by: Harikrishna Shenoy <[email protected]>
> ---
>  .../drm/bridge/cadence/cdns-mhdp8546-core.c   | 23 +++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c 
> b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> index 7178a01e4d4d8..d944095da4722 100644
> --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> @@ -2123,6 +2123,10 @@ static int cdns_mhdp_atomic_check(struct drm_bridge 
> *bridge,
>  {
>       struct cdns_mhdp_device *mhdp = bridge_to_mhdp(bridge);
>       const struct drm_display_mode *mode = &crtc_state->adjusted_mode;
> +     struct drm_connector_state *old_state, *new_state;
> +     struct drm_atomic_state *state = crtc_state->state;
> +     struct drm_connector *conn = mhdp->connector_ptr;
> +     u64 old_cp, new_cp;
>  
>       mutex_lock(&mhdp->link_mutex);
>  
> @@ -2142,6 +2146,25 @@ static int cdns_mhdp_atomic_check(struct drm_bridge 
> *bridge,
>       if (mhdp->info)
>               bridge_state->input_bus_cfg.flags = 
> *mhdp->info->input_bus_flags;
>  
> +     if (conn && mhdp->hdcp_supported) {
> +             old_state = drm_atomic_get_old_connector_state(state, conn);
> +             new_state = drm_atomic_get_new_connector_state(state, conn);
> +             old_cp = old_state->content_protection;
> +             new_cp = new_state->content_protection;
> +
> +             if (old_state->hdcp_content_type != 
> new_state->hdcp_content_type &&
> +                 new_cp != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) {
> +                     new_state->content_protection = 
> DRM_MODE_CONTENT_PROTECTION_DESIRED;
> +                     crtc_state = drm_atomic_get_new_crtc_state(state, 
> new_state->crtc);
> +                     crtc_state->mode_changed = true;
> +             }
> +
> +             if (!new_state->crtc) {
> +                     if (old_cp == DRM_MODE_CONTENT_PROTECTION_ENABLED)
> +                             new_state->content_protection = 
> DRM_MODE_CONTENT_PROTECTION_DESIRED;
> +             }
> +     }
> +
>       mutex_unlock(&mhdp->link_mutex);
>       return 0;
>  }

Reply via email to