aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-06-08 08:19:16 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-07-13 06:56:20 -0400
commit11c21e73f848844d439cbccb42a1018b8c560e5c (patch)
tree6e0563aca3d269d7f8383e58a003cd7555f830ac /drivers/gpu/drm/drm_crtc.c
parentcf47a07ab8f65d1d1fdbb72f4c38efe293f7a623 (diff)
drm: Resurrect atomic rmfb code
This was somehow lost between v3 and the merged version in Maarten's patch merged as: commit f2d580b9a8149735cbc4b59c4a8df60173658140 Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Date: Wed May 4 14:38:26 2016 +0200 drm/core: Do not preserve framebuffer on rmfb, v4. Actual code copied from Maarten's patch, but with the slight change to just use dev->mode_config.funcs->atomic_commit to decide whether to use the atomic path or not. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1465388359-8070-24-git-send-email-daniel.vetter@ffwll.ch
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 578bd6f5ce83..9d3f80efc9cc 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -613,6 +613,11 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)
613 * in this manner. 613 * in this manner.
614 */ 614 */
615 if (drm_framebuffer_read_refcount(fb) > 1) { 615 if (drm_framebuffer_read_refcount(fb) > 1) {
616 if (dev->mode_config.funcs->atomic_commit) {
617 drm_atomic_remove_fb(fb);
618 goto out;
619 }
620
616 drm_modeset_lock_all(dev); 621 drm_modeset_lock_all(dev);
617 /* remove from any CRTC */ 622 /* remove from any CRTC */
618 drm_for_each_crtc(crtc, dev) { 623 drm_for_each_crtc(crtc, dev) {
@@ -630,6 +635,7 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)
630 drm_modeset_unlock_all(dev); 635 drm_modeset_unlock_all(dev);
631 } 636 }
632 637
638out:
633 drm_framebuffer_unreference(fb); 639 drm_framebuffer_unreference(fb);
634} 640}
635EXPORT_SYMBOL(drm_framebuffer_remove); 641EXPORT_SYMBOL(drm_framebuffer_remove);