[PATCH 08/20] drm/arm/hdlcd: Use drm_fbdev_generic_setup()
Noralf Trønnes
noralf at tronnes.org
Tue Sep 25 09:47:17 UTC 2018
Den 11.09.2018 14.17, skrev Liviu Dudau:
> On Sat, Sep 08, 2018 at 03:46:36PM +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 at arm.com>
> Acked-by: Liviu Dudau <liviu.dudau at arm.com>
>
> I'm assuming you're going to push the whole series through drm-misc-next rather
> than me picking up this patch into the HDLCD tree, if that is fine with you.
Applied to drm-misc-next, thanks.
Noralf.
> Best regards,
> Liviu
>
>> Signed-off-by: Noralf Trønnes <noralf at tronnes.org>
>> ---
>> drivers/gpu/drm/arm/hdlcd_drv.c | 11 ++---------
>> 1 file changed, 2 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
>> index 0ed1cde98cf8..dfad8d06d108 100644
>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
>> @@ -103,7 +103,6 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags)
>>
>> static const struct drm_mode_config_funcs hdlcd_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,
>> };
>> @@ -233,7 +232,6 @@ static struct drm_driver hdlcd_driver = {
>> .driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
>> DRIVER_MODESET | DRIVER_PRIME |
>> DRIVER_ATOMIC,
>> - .lastclose = drm_fb_helper_lastclose,
>> .irq_handler = hdlcd_irq,
>> .irq_preinstall = hdlcd_irq_preinstall,
>> .irq_postinstall = hdlcd_irq_postinstall,
>> @@ -308,19 +306,15 @@ static int hdlcd_drm_bind(struct device *dev)
>> drm_mode_config_reset(drm);
>> drm_kms_helper_poll_init(drm);
>>
>> - ret = drm_fb_cma_fbdev_init(drm, 32, 0);
>> - if (ret)
>> - goto err_fbdev;
>> -
>> ret = drm_dev_register(drm, 0);
>> if (ret)
>> goto err_register;
>>
>> + drm_fbdev_generic_setup(drm, 32);
>> +
>> return 0;
>>
>> err_register:
>> - drm_fb_cma_fbdev_fini(drm);
>> -err_fbdev:
>> drm_kms_helper_poll_fini(drm);
>> err_vblank:
>> pm_runtime_disable(drm->dev);
>> @@ -346,7 +340,6 @@ static void hdlcd_drm_unbind(struct device *dev)
>> struct hdlcd_drm_private *hdlcd = drm->dev_private;
>>
>> drm_dev_unregister(drm);
>> - drm_fb_cma_fbdev_fini(drm);
>> drm_kms_helper_poll_fini(drm);
>> component_unbind_all(dev, drm);
>> of_node_put(hdlcd->crtc.port);
>> --
>> 2.15.1
>>
More information about the dri-devel
mailing list