diff options
Diffstat (limited to 'drivers/gpu/drm/arm/hdlcd_drv.c')
-rw-r--r-- | drivers/gpu/drm/arm/hdlcd_drv.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c index 70fca288313a..0ed1cde98cf8 100644 --- a/drivers/gpu/drm/arm/hdlcd_drv.c +++ b/drivers/gpu/drm/arm/hdlcd_drv.c | |||
@@ -325,6 +325,7 @@ err_fbdev: | |||
325 | err_vblank: | 325 | err_vblank: |
326 | pm_runtime_disable(drm->dev); | 326 | pm_runtime_disable(drm->dev); |
327 | err_pm_active: | 327 | err_pm_active: |
328 | drm_atomic_helper_shutdown(drm); | ||
328 | component_unbind_all(dev, drm); | 329 | component_unbind_all(dev, drm); |
329 | err_unload: | 330 | err_unload: |
330 | of_node_put(hdlcd->crtc.port); | 331 | of_node_put(hdlcd->crtc.port); |
@@ -350,16 +351,18 @@ static void hdlcd_drm_unbind(struct device *dev) | |||
350 | component_unbind_all(dev, drm); | 351 | component_unbind_all(dev, drm); |
351 | of_node_put(hdlcd->crtc.port); | 352 | of_node_put(hdlcd->crtc.port); |
352 | hdlcd->crtc.port = NULL; | 353 | hdlcd->crtc.port = NULL; |
353 | pm_runtime_get_sync(drm->dev); | 354 | pm_runtime_get_sync(dev); |
355 | drm_crtc_vblank_off(&hdlcd->crtc); | ||
354 | drm_irq_uninstall(drm); | 356 | drm_irq_uninstall(drm); |
355 | pm_runtime_put_sync(drm->dev); | ||
356 | pm_runtime_disable(drm->dev); | ||
357 | of_reserved_mem_device_release(drm->dev); | ||
358 | drm_atomic_helper_shutdown(drm); | 357 | drm_atomic_helper_shutdown(drm); |
358 | pm_runtime_put(dev); | ||
359 | if (pm_runtime_enabled(dev)) | ||
360 | pm_runtime_disable(dev); | ||
361 | of_reserved_mem_device_release(dev); | ||
359 | drm_mode_config_cleanup(drm); | 362 | drm_mode_config_cleanup(drm); |
360 | drm_dev_put(drm); | ||
361 | drm->dev_private = NULL; | 363 | drm->dev_private = NULL; |
362 | dev_set_drvdata(dev, NULL); | 364 | dev_set_drvdata(dev, NULL); |
365 | drm_dev_put(drm); | ||
363 | } | 366 | } |
364 | 367 | ||
365 | static const struct component_master_ops hdlcd_master_ops = { | 368 | static const struct component_master_ops hdlcd_master_ops = { |