Hi Tommaso, Thanks for the patch.
> -----Original Message----- > From: Tommaso Merciai <tommaso.merciai...@bp.renesas.com> > Sent: 28 May 2025 08:05 > Subject: [PATCH v2 1/2] drm/bridge: adv7511: Move > adv711_dsi_config_timing_gen() into > adv7511_mode_set() > > adv7511_mode_set() currently updates only the sync registers of the ADV > bridge. At the end, > drm_mode_copy() updates the current mode, but the horizontal and vertical > porch registers of the ADV > bridge still retain values from the old mode. > > Move adv7511_dsi_config_timing_gen() into adv7511_mode_set() to ensure the > horizontal and vertical > porch registers are correctly updated. > > Fixes: ae01d3183d2763ed ("drm/bridge: adv7511: switch to the HDMI connector > helpers") > Reported-by: Biju Das <biju.das...@bp.renesas.com> > Closes: https://lore.kernel.org/all/aDB8bD6cF7qiSpKd@tom-desktop/ > Signed-off-by: Tommaso Merciai <tommaso.merciai...@bp.renesas.com> Reviewed-by: Biju Das <biju.das...@bp.renesas.com> The fix is tested with RZ/V2L SMARC EVK (ADV7535) and RZ/G2UL SMARC EVK(ADV7513) So, Tested-by: Biju Das <biju.das...@bp.renesas.com> Cheers, Biju > --- > v1->v2: > - Fixed Fixes tag. > - Moved adv711_dsi_config_timing_gen() into adv7511_mode_set() > - Updated commit body + commit msg + content > > drivers/gpu/drm/bridge/adv7511/adv7511.h | 2 ++ > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 4 ++++ > drivers/gpu/drm/bridge/adv7511/adv7533.c | 5 +---- > 3 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511.h > b/drivers/gpu/drm/bridge/adv7511/adv7511.h > index 90c9a3da2406..6150d57ff9af 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511.h > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h > @@ -422,6 +422,8 @@ int adv7533_patch_cec_registers(struct adv7511 *adv); int > adv7533_attach_dsi(struct adv7511 *adv); int adv7533_parse_dt(struct > device_node *np, struct adv7511 > *adv); > > +void adv7511_dsi_config_timing_gen(struct adv7511 *adv); > + > #ifdef CONFIG_DRM_I2C_ADV7511_AUDIO > int adv7511_hdmi_audio_startup(struct drm_connector *connector, > struct drm_bridge *bridge); > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 8b7548448615..b58e9e2c6489 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -738,6 +738,10 @@ static void adv7511_mode_set(struct adv7511 *adv7511, > > drm_mode_copy(&adv7511->curr_mode, adj_mode); > > + /* Update horizontal/vertical porch params */ > + if (adv7511->info->has_dsi && adv7511->use_timing_gen) > + adv7511_dsi_config_timing_gen(adv7511); > + > /* > * TODO Test first order 4:2:2 to 4:4:4 up conversion method, which is > * supposed to give better results. > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7533.c > b/drivers/gpu/drm/bridge/adv7511/adv7533.c > index b12d422343fc..df8180e6d733 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7533.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7533.c > @@ -24,7 +24,7 @@ static const struct reg_sequence > adv7533_cec_fixed_registers[] = { > { 0x05, 0xc8 }, > }; > > -static void adv7511_dsi_config_timing_gen(struct adv7511 *adv) > +void adv7511_dsi_config_timing_gen(struct adv7511 *adv) > { > struct mipi_dsi_device *dsi = adv->dsi; > struct drm_display_mode *mode = &adv->curr_mode; @@ -67,9 +67,6 @@ void > adv7533_dsi_power_on(struct adv7511 *adv) { > struct mipi_dsi_device *dsi = adv->dsi; > > - if (adv->use_timing_gen) > - adv7511_dsi_config_timing_gen(adv); > - > /* set number of dsi lanes */ > regmap_write(adv->regmap_cec, 0x1c, dsi->lanes << 4); > > -- > 2.43.0