Hi,

On 20/11/2025 14:14, Harikrishna Shenoy wrote:
> From: Jayesh Choudhary <[email protected]>
> 
> Add cdns_mhdp_bridge_mode_valid() to check if specific mode is valid for
> this bridge or not. In the legacy usecase with
> !DRM_BRIDGE_ATTACH_NO_CONNECTOR we were using the hook from
> drm_connector_helper_funcs but with DRM_BRIDGE_ATTACH_NO_CONNECTOR
> we need to have mode_valid() in drm_bridge_funcs.

This looks fine, but a fix should always explain what the issue is. What
is the behavior without this patch, if DRM_BRIDGE_ATTACH_NO_CONNECTOR is
set?

 Tomi

> Fixes: c932ced6b585 ("drm/tidss: Update encoder/bridge chain connect model")
> Reviewed-by: Tomi Valkeinen <[email protected]>
> Signed-off-by: Jayesh Choudhary <[email protected]>
> Signed-off-by: Harikrishna Shenoy <[email protected]>
> ---
>  .../drm/bridge/cadence/cdns-mhdp8546-core.c   | 20 +++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c 
> b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> index f3076e9cdabbe..7178a01e4d4d8 100644
> --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> @@ -2162,6 +2162,25 @@ static const struct drm_edid 
> *cdns_mhdp_bridge_edid_read(struct drm_bridge *brid
>       return cdns_mhdp_edid_read(mhdp, connector);
>  }
>  
> +static enum drm_mode_status
> +cdns_mhdp_bridge_mode_valid(struct drm_bridge *bridge,
> +                         const struct drm_display_info *info,
> +                         const struct drm_display_mode *mode)
> +{
> +     struct cdns_mhdp_device *mhdp = bridge_to_mhdp(bridge);
> +
> +     mutex_lock(&mhdp->link_mutex);
> +
> +     if (!cdns_mhdp_bandwidth_ok(mhdp, mode, mhdp->link.num_lanes,
> +                                 mhdp->link.rate)) {
> +             mutex_unlock(&mhdp->link_mutex);
> +             return MODE_CLOCK_HIGH;
> +     }
> +
> +     mutex_unlock(&mhdp->link_mutex);
> +     return MODE_OK;
> +}
> +
>  static const struct drm_bridge_funcs cdns_mhdp_bridge_funcs = {
>       .atomic_enable = cdns_mhdp_atomic_enable,
>       .atomic_disable = cdns_mhdp_atomic_disable,
> @@ -2176,6 +2195,7 @@ static const struct drm_bridge_funcs 
> cdns_mhdp_bridge_funcs = {
>       .edid_read = cdns_mhdp_bridge_edid_read,
>       .hpd_enable = cdns_mhdp_bridge_hpd_enable,
>       .hpd_disable = cdns_mhdp_bridge_hpd_disable,
> +     .mode_valid = cdns_mhdp_bridge_mode_valid,
>  };
>  
>  static bool cdns_mhdp_detect_hpd(struct cdns_mhdp_device *mhdp, bool 
> *hpd_pulse)

Reply via email to