drm: Convert drm_framebuffer_remove to atomic, v4.
[sfrench/cifs-2.6.git] / drivers / gpu / drm / drm_framebuffer.c
index 28a0108a1ab85f9a4fbd87c39bff668027597585..c0e593a7f9b4a0629e35fbe918e22c0593a54faf 100644 (file)
@@ -773,6 +773,12 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)
         * in this manner.
         */
        if (drm_framebuffer_read_refcount(fb) > 1) {
+               if (drm_drv_uses_atomic_modeset(dev)) {
+                       int ret = drm_atomic_remove_fb(fb);
+                       WARN(ret, "atomic remove_fb failed with %i\n", ret);
+                       goto out;
+               }
+
                drm_modeset_lock_all(dev);
                /* remove from any CRTC */
                drm_for_each_crtc(crtc, dev) {
@@ -790,6 +796,7 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)
                drm_modeset_unlock_all(dev);
        }
 
+out:
        drm_framebuffer_unreference(fb);
 }
 EXPORT_SYMBOL(drm_framebuffer_remove);