On Fri, 10 Jun 2022 at 10:30, Maxime Ripard <maxime@xxxxxxxxxx> wrote: > > The current code uses a device-managed function to retrieve the next bridge > downstream. > > However, that means that it will be removed at unbind time, where the DRM > device is still very much live and might still have some applications that > still have it open. > > Switch to a DRM-managed variant to clean everything up once the DRM device > has been last closed. > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_dpi.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c > index 8a50de2c40d9..9950761449cf 100644 > --- a/drivers/gpu/drm/vc4/vc4_dpi.c > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c > @@ -220,10 +220,11 @@ static const struct of_device_id vc4_dpi_dt_match[] = { > */ > static int vc4_dpi_init_bridge(struct vc4_dpi *dpi) > { > + struct drm_device *drm = dpi->encoder.base.dev; > struct device *dev = &dpi->pdev->dev; > struct drm_bridge *bridge; > > - bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0); > + bridge = drmm_of_get_bridge(drm, dev->of_node, 0, 0); > if (IS_ERR(bridge)) { > /* If nothing was connected in the DT, that's not an > * error. > -- > 2.36.1 >