drm/fsl-dcu: deallocate fbdev CMA on unload
authorStefan Agner <stefan@agner.ch>
Sun, 17 Apr 2016 05:02:49 +0000 (22:02 -0700)
committerStefan Agner <stefan@agner.ch>
Tue, 26 Apr 2016 03:45:33 +0000 (20:45 -0700)
Free fbdev CMA using drm_fbdev_cma_fini on unload. This fixes
a warning when unloading the driver:
WARNING: CPU: 0 PID: 164 at drivers/gpu/drm/drm_crtc.c:5930 drm_mode_config_cleanup+0x204/0x208

Signed-off-by: Stefan Agner <stefan@agner.ch>
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c

index 9cbabb24e55c4e17f30b5fbacb2e5b28e7af16b4..182578dd3d6b488eddbc8fb0d2f0ffb41ad82157 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_gem_cma_helper.h>
 
 #include "fsl_dcu_drm_crtc.h"
@@ -90,6 +91,9 @@ static int fsl_dcu_load(struct drm_device *dev, unsigned long flags)
 
        return 0;
 done:
+       if (fsl_dev->fbdev)
+               drm_fbdev_cma_fini(fsl_dev->fbdev);
+
        drm_mode_config_cleanup(dev);
        drm_vblank_cleanup(dev);
        drm_irq_uninstall(dev);
@@ -100,6 +104,11 @@ done:
 
 static int fsl_dcu_unload(struct drm_device *dev)
 {
+       struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
+
+       if (fsl_dev->fbdev)
+               drm_fbdev_cma_fini(fsl_dev->fbdev);
+
        drm_mode_config_cleanup(dev);
        drm_vblank_cleanup(dev);
        drm_irq_uninstall(dev);