On Sat, Sep 08, 2018 at 03:46:37PM +0200, Noralf Trønnes wrote: > The CMA helper is already using the drm_fb_helper_generic_probe part of > the generic fbdev emulation. This patch makes full use of the generic > fbdev emulation by using its drm_client callbacks. This means that > drm_mode_config_funcs->output_poll_changed and drm_driver->lastclose are > now handled by the emulation code. Additionally fbdev unregister happens > automatically on drm_dev_unregister(). > > The drm_fbdev_generic_setup() call is put after drm_dev_register() in the > driver. This is done to highlight the fact that fbdev emulation is an > internal client that makes use of the driver, it is not part of the > driver as such. If fbdev setup fails, an error is printed, but the driver > succeeds probing. > > Cc: Liviu Dudau <liviu.dudau@xxxxxxx> Acked-by: Liviu Dudau <liviu.dudau@xxxxxxx> Unless you want me to pick this patch into the mali-dp tree, I'm going to assume that you're going to push the whole series through drm-misc-next. Best regards, Liviu > Cc: Brian Starkey <brian.starkey@xxxxxxx> > Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> > --- > drivers/gpu/drm/arm/malidp_drv.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c > index 08b5bb219816..3171ffaadd77 100644 > --- a/drivers/gpu/drm/arm/malidp_drv.c > +++ b/drivers/gpu/drm/arm/malidp_drv.c > @@ -260,7 +260,6 @@ static const struct drm_mode_config_helper_funcs malidp_mode_config_helpers = { > > static const struct drm_mode_config_funcs malidp_mode_config_funcs = { > .fb_create = drm_gem_fb_create, > - .output_poll_changed = drm_fb_helper_output_poll_changed, > .atomic_check = drm_atomic_helper_check, > .atomic_commit = drm_atomic_helper_commit, > }; > @@ -450,7 +449,6 @@ static int malidp_debugfs_init(struct drm_minor *minor) > static struct drm_driver malidp_driver = { > .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC | > DRIVER_PRIME, > - .lastclose = drm_fb_helper_lastclose, > .gem_free_object_unlocked = drm_gem_cma_free_object, > .gem_vm_ops = &drm_gem_cma_vm_ops, > .dumb_create = malidp_dumb_create, > @@ -762,22 +760,18 @@ static int malidp_bind(struct device *dev) > > drm_mode_config_reset(drm); > > - ret = drm_fb_cma_fbdev_init(drm, 32, 0); > - if (ret) > - goto fbdev_fail; > - > drm_kms_helper_poll_init(drm); > > ret = drm_dev_register(drm, 0); > if (ret) > goto register_fail; > > + drm_fbdev_generic_setup(drm, 32); > + > return 0; > > register_fail: > - drm_fb_cma_fbdev_fini(drm); > drm_kms_helper_poll_fini(drm); > -fbdev_fail: > pm_runtime_get_sync(dev); > vblank_fail: > malidp_se_irq_fini(hwdev); > @@ -814,7 +808,6 @@ static void malidp_unbind(struct device *dev) > struct malidp_hw_device *hwdev = malidp->dev; > > drm_dev_unregister(drm); > - drm_fb_cma_fbdev_fini(drm); > drm_kms_helper_poll_fini(drm); > pm_runtime_get_sync(dev); > drm_crtc_vblank_off(&malidp->crtc); > -- > 2.15.1 > -- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯ _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel