[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f3b80a7a-f18b-4f49-93e8-5728b8531f38@ideasonboard.com>
Date: Mon, 1 Sep 2025 13:07:01 +0300
From: Tomi Valkeinen <tomi.valkeinen@...asonboard.com>
To: Harikrishna Shenoy <h-shenoy@...com>
Cc: jonas@...boo.se, jernej.skrabec@...il.com,
maarten.lankhorst@...ux.intel.com, tzimmermann@...e.de, airlied@...il.com,
simona@...ll.ch, lyude@...hat.com, luca.ceresoli@...tlin.com,
viro@...iv.linux.org.uk, andy.yan@...k-chips.com, linux@...blig.org,
javierm@...hat.com, linux-kernel@...r.kernel.org, devarsht@...com,
j-choudhary@...com, u-kumar1@...com, s-jain1@...com,
andrzej.hajda@...el.com, neil.armstrong@...aro.org, rfoss@...nel.org,
Laurent.pinchart@...asonboard.com, mripard@...nel.org, lumag@...nel.org,
dianders@...omium.org, dri-devel@...ts.freedesktop.org
Subject: Re: [PATCH v5 4/6] drm/bridge: cadence: cdns-mhdp8546-core: Add
mode_valid hook to drm_bridge_funcs
Hi,
On 11/08/2025 10:59, Harikrishna Shenoy wrote:
> From: Jayesh Choudhary <j-choudhary@...com>
>
> Add cdns_mhdp_bridge_mode_valid() to check if specific mode is valid for
> this bridge or not. In the legacy !(DBANC) usecase, we were using the hook
> from drm_connector_helper_funcs but with removal of legacy code, we need
> to have mode_valid() in drm_bridge_funcs.
>
> Fixes: c932ced6b585 ("drm/tidss: Update encoder/bridge chain connect model")
> Signed-off-by: Jayesh Choudhary <j-choudhary@...com>
> ---
> .../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 b2f5a48cac2d..47c657237c37 100644
> --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> @@ -1999,6 +1999,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,
> @@ -2013,6 +2032,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)
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@...asonboard.com>
Tomi
Powered by blists - more mailing lists