On Sat, 4 Nov 2017 14:03:59 +0100 Noralf Trønnes <noralf@xxxxxxxxxxx> wrote: > Use drm_fb_cma_fbdev_init() and drm_fb_cma_fbdev_fini() which relies on > the fact that drm_device holds a pointer to the drm_fb_helper structure. > This means that the driver doesn't have to keep track of that. > Also use the drm_fb_helper functions directly. > > Cc: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> Acked-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> > --- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 26 ++++---------------------- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 2 +- > 2 files changed, 5 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > index c6e8061ffcfc..c1ea5c36b006 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c > @@ -461,13 +461,6 @@ static struct drm_framebuffer *atmel_hlcdc_fb_create(struct drm_device *dev, > return drm_gem_fb_create(dev, file_priv, mode_cmd); > } > > -static void atmel_hlcdc_fb_output_poll_changed(struct drm_device *dev) > -{ > - struct atmel_hlcdc_dc *dc = dev->dev_private; > - > - drm_fbdev_cma_hotplug_event(dc->fbdev); > -} > - > struct atmel_hlcdc_dc_commit { > struct work_struct work; > struct drm_device *dev; > @@ -563,7 +556,7 @@ static int atmel_hlcdc_dc_atomic_commit(struct drm_device *dev, > > static const struct drm_mode_config_funcs mode_config_funcs = { > .fb_create = atmel_hlcdc_fb_create, > - .output_poll_changed = atmel_hlcdc_fb_output_poll_changed, > + .output_poll_changed = drm_fb_helper_output_poll_changed, > .atomic_check = drm_atomic_helper_check, > .atomic_commit = atmel_hlcdc_dc_atomic_commit, > }; > @@ -665,10 +658,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev) > > platform_set_drvdata(pdev, dev); > > - dc->fbdev = drm_fbdev_cma_init(dev, 24, > - dev->mode_config.num_connector); > - if (IS_ERR(dc->fbdev)) > - dc->fbdev = NULL; > + drm_fb_cma_fbdev_init(dev, 24, 0); > > drm_kms_helper_poll_init(dev); > > @@ -688,8 +678,7 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev) > { > struct atmel_hlcdc_dc *dc = dev->dev_private; > > - if (dc->fbdev) > - drm_fbdev_cma_fini(dc->fbdev); > + drm_fb_cma_fbdev_fini(dev); > flush_workqueue(dc->wq); > drm_kms_helper_poll_fini(dev); > drm_mode_config_cleanup(dev); > @@ -705,13 +694,6 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev) > destroy_workqueue(dc->wq); > } > > -static void atmel_hlcdc_dc_lastclose(struct drm_device *dev) > -{ > - struct atmel_hlcdc_dc *dc = dev->dev_private; > - > - drm_fbdev_cma_restore_mode(dc->fbdev); > -} > - > static int atmel_hlcdc_dc_irq_postinstall(struct drm_device *dev) > { > struct atmel_hlcdc_dc *dc = dev->dev_private; > @@ -744,7 +726,7 @@ static struct drm_driver atmel_hlcdc_dc_driver = { > .driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM | > DRIVER_MODESET | DRIVER_PRIME | > DRIVER_ATOMIC, > - .lastclose = atmel_hlcdc_dc_lastclose, > + .lastclose = drm_fb_helper_lastclose, > .irq_handler = atmel_hlcdc_dc_irq_handler, > .irq_preinstall = atmel_hlcdc_dc_irq_uninstall, > .irq_postinstall = atmel_hlcdc_dc_irq_postinstall, > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > index 6833ee253cfa..ab32d5b268d2 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > @@ -32,6 +32,7 @@ > #include <drm/drm_atomic_helper.h> > #include <drm/drm_crtc.h> > #include <drm/drm_crtc_helper.h> > +#include <drm/drm_fb_helper.h> > #include <drm/drm_fb_cma_helper.h> > #include <drm/drm_gem_cma_helper.h> > #include <drm/drm_gem_framebuffer_helper.h> > @@ -374,7 +375,6 @@ struct atmel_hlcdc_dc { > const struct atmel_hlcdc_dc_desc *desc; > struct dma_pool *dscrpool; > struct atmel_hlcdc *hlcdc; > - struct drm_fbdev_cma *fbdev; > struct drm_crtc *crtc; > struct atmel_hlcdc_layer *layers[ATMEL_HLCDC_MAX_LAYERS]; > struct workqueue_struct *wq; _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel