Hi Luca Ceresoli, Thanks for the patch.
> -----Original Message----- > From: Luca Ceresoli <[email protected]> > Sent: 18 March 2026 09:40 > Subject: [PATCH v3 1/4] drm: renesas: rz-du: rzg2l_du_encoder: convert to > of_drm_find_and_get_bridge() > > of_drm_find_bridge() is deprecated. Move to its replacement > of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it is > put when done. > > This is made somewhat simpler by the fact that 'bridge' is a local variable. > > However we need to handle both branches of the main if(). > > In the 'else' case, just switch to of_drm_find_and_get_bridge() to ensure the > bridge is not freed > while in use in the function tail > (drm_bridge_attach() mainly). > > In the 'then' case, devm_drm_panel_bridge_add_typed() already increments the > refcount using devres > which ties the bridge allocation lifetime to the device lifetime, so we would > not need to do anything. > However to have the same behaviour in both branches take an additional > reference here, so that the > bridge needs to be put whichever branch is taken without more complicated > logic. Ensure to clear the > bridge pointer however, to avoid calling drm_bridge_put() on an ERR_PTR. > > Signed-off-by: Luca Ceresoli <[email protected]> Reviewed-by: Biju Das <[email protected]> Tested on Renesas RZ/V2L SMARC EVK So, Tested-by: Biju Das <[email protected]> Cheers, Biju > --- > drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c > b/drivers/gpu/drm/renesas/rz- > du/rzg2l_du_encoder.c > index 5e6dd16705e6..9b65bcefdb86 100644 > --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c > +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c > @@ -67,7 +67,7 @@ int rzg2l_du_encoder_init(struct rzg2l_du_device *rcdu, { > struct rzg2l_du_encoder *renc; > struct drm_connector *connector; > - struct drm_bridge *bridge; > + struct drm_bridge *bridge __free(drm_bridge_put) = NULL; > int ret; > > /* > @@ -83,10 +83,16 @@ int rzg2l_du_encoder_init(struct rzg2l_du_device *rcdu, > > bridge = devm_drm_panel_bridge_add_typed(rcdu->dev, panel, > > DRM_MODE_CONNECTOR_DPI); > - if (IS_ERR(bridge)) > - return PTR_ERR(bridge); > + if (IS_ERR(bridge)) { > + // Inhibit the cleanup action on an ERR_PTR > + ret = PTR_ERR(bridge); > + bridge = NULL; > + return ret; > + } > + > + drm_bridge_get(bridge); > } else { > - bridge = of_drm_find_bridge(enc_node); > + bridge = of_drm_find_and_get_bridge(enc_node); > if (!bridge) > return -EPROBE_DEFER; > } > > -- > 2.53.0
