On 08.12.2017 20:37, Noralf Trønnes 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. > Remove console.h inclusion which was forgotten when converting to the > suspend/resume helpers. Just realized this never made it upstream. I guess its still valid and could be applied? -- Stefan > > Cc: Stefan Agner <stefan@xxxxxxxx> > Cc: Alison Wang <alison.wang@xxxxxxxxxxxxx> > Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> > --- > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 ++++++-------------------- > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 1 - > 2 files changed, 6 insertions(+), 21 deletions(-) > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c > b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c > index 80232321a244..e487a2002783 100644 > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c > @@ -11,7 +11,6 @@ > > #include <linux/clk.h> > #include <linux/clk-provider.h> > -#include <linux/console.h> > #include <linux/io.h> > #include <linux/mfd/syscon.h> > #include <linux/mm.h> > @@ -25,6 +24,7 @@ > #include <drm/drmP.h> > #include <drm/drm_atomic_helper.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_modeset_helper.h> > @@ -89,19 +89,15 @@ static int fsl_dcu_load(struct drm_device *dev, > unsigned long flags) > "Invalid legacyfb_depth. Defaulting to 24bpp\n"); > legacyfb_depth = 24; > } > - fsl_dev->fbdev = drm_fbdev_cma_init(dev, legacyfb_depth, 1); > - if (IS_ERR(fsl_dev->fbdev)) { > - ret = PTR_ERR(fsl_dev->fbdev); > - fsl_dev->fbdev = NULL; > + ret = drm_fb_cma_fbdev_init(dev, legacyfb_depth, 1); > + if (ret) > goto done; > - } > > return 0; > done: > drm_kms_helper_poll_fini(dev); > > - if (fsl_dev->fbdev) > - drm_fbdev_cma_fini(fsl_dev->fbdev); > + drm_fb_cma_fbdev_fini(dev); > > drm_mode_config_cleanup(dev); > drm_irq_uninstall(dev); > @@ -112,13 +108,10 @@ static int fsl_dcu_load(struct drm_device *dev, > unsigned long flags) > > static void fsl_dcu_unload(struct drm_device *dev) > { > - struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; > - > drm_atomic_helper_shutdown(dev); > drm_kms_helper_poll_fini(dev); > > - if (fsl_dev->fbdev) > - drm_fbdev_cma_fini(fsl_dev->fbdev); > + drm_fb_cma_fbdev_fini(dev); > > drm_mode_config_cleanup(dev); > drm_irq_uninstall(dev); > @@ -147,19 +140,12 @@ static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg) > return IRQ_HANDLED; > } > > -static void fsl_dcu_drm_lastclose(struct drm_device *dev) > -{ > - struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; > - > - drm_fbdev_cma_restore_mode(fsl_dev->fbdev); > -} > - > DEFINE_DRM_GEM_CMA_FOPS(fsl_dcu_drm_fops); > > static struct drm_driver fsl_dcu_drm_driver = { > .driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET > | DRIVER_PRIME | DRIVER_ATOMIC, > - .lastclose = fsl_dcu_drm_lastclose, > + .lastclose = drm_fb_helper_lastclose, > .load = fsl_dcu_load, > .unload = fsl_dcu_unload, > .irq_handler = fsl_dcu_drm_irq, > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h > b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h > index 93bfb98012d4..cb87bb74cb87 100644 > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h > @@ -191,7 +191,6 @@ struct fsl_dcu_drm_device { > /*protects hardware register*/ > spinlock_t irq_lock; > struct drm_device *drm; > - struct drm_fbdev_cma *fbdev; > struct drm_crtc crtc; > struct drm_encoder encoder; > struct fsl_dcu_drm_connector connector; _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel