Message ID | 20200302222631.3861340-32-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm_device managed resources, v4 | expand |
On Mon, Mar 02, 2020 at 11:26:11PM +0100, Daniel Vetter wrote: > Allows us to drop the drm_driver.release callback. > > This is made possible by a preceeding patch which added a drmm_ > cleanup action to drm_mode_config_init(), hence all we need to do to > ensure that drm_mode_config_cleanup() is run on final drm_device > cleanup is check the new error code for _init(). > > v2: Explain why this cleanup is possible (Laurent). > > v3: Use drmm_mode_config_init() for more clarity (Sam, Thomas) > > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Reviewed-by: Paul Cercueil <paul@crapouillou.net> (v2) > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Paul Cercueil <paul@crapouillou.net> Acked-by: Sam Ravnborg <sam@ravnborg.org> > --- > drivers/gpu/drm/ingenic/ingenic-drm.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm.c b/drivers/gpu/drm/ingenic/ingenic-drm.c > index 192aaa4421a3..a9bc6623b488 100644 > --- a/drivers/gpu/drm/ingenic/ingenic-drm.c > +++ b/drivers/gpu/drm/ingenic/ingenic-drm.c > @@ -489,11 +489,6 @@ static irqreturn_t ingenic_drm_irq_handler(int irq, void *arg) > return IRQ_HANDLED; > } > > -static void ingenic_drm_release(struct drm_device *drm) > -{ > - drm_mode_config_cleanup(drm); > -} > - > static int ingenic_drm_enable_vblank(struct drm_crtc *crtc) > { > struct ingenic_drm *priv = drm_crtc_get_priv(crtc); > @@ -537,7 +532,6 @@ static struct drm_driver ingenic_drm_driver_data = { > .gem_prime_mmap = drm_gem_cma_prime_mmap, > > .irq_handler = ingenic_drm_irq_handler, > - .release = ingenic_drm_release, > }; > > static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = { > @@ -638,7 +632,10 @@ static int ingenic_drm_probe(struct platform_device *pdev) > } > drmm_add_final_kfree(drm, priv); > > - drm_mode_config_init(drm); > + ret = drmm_mode_config_init(drm); > + if (ret) > + return ret; > + > drm->mode_config.min_width = 0; > drm->mode_config.min_height = 0; > drm->mode_config.max_width = soc_info->max_width; > -- > 2.24.1
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm.c b/drivers/gpu/drm/ingenic/ingenic-drm.c index 192aaa4421a3..a9bc6623b488 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm.c @@ -489,11 +489,6 @@ static irqreturn_t ingenic_drm_irq_handler(int irq, void *arg) return IRQ_HANDLED; } -static void ingenic_drm_release(struct drm_device *drm) -{ - drm_mode_config_cleanup(drm); -} - static int ingenic_drm_enable_vblank(struct drm_crtc *crtc) { struct ingenic_drm *priv = drm_crtc_get_priv(crtc); @@ -537,7 +532,6 @@ static struct drm_driver ingenic_drm_driver_data = { .gem_prime_mmap = drm_gem_cma_prime_mmap, .irq_handler = ingenic_drm_irq_handler, - .release = ingenic_drm_release, }; static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = { @@ -638,7 +632,10 @@ static int ingenic_drm_probe(struct platform_device *pdev) } drmm_add_final_kfree(drm, priv); - drm_mode_config_init(drm); + ret = drmm_mode_config_init(drm); + if (ret) + return ret; + drm->mode_config.min_width = 0; drm->mode_config.min_height = 0; drm->mode_config.max_width = soc_info->max_width;