Since drm_framebuffer can now store GEM objects directly, place them
there rather than in our own subclass. As this makes the framebuffer
create_handle and destroy functions the same as the GEM framebuffer
helper, we can reuse those.

Signed-off-by: Daniel Stone <dani...@collabora.com>
Cc: Russell King <li...@armlinux.org.uk>
---
 drivers/gpu/drm/armada/armada_fb.c | 23 ++++-------------------
 drivers/gpu/drm/armada/armada_fb.h |  3 +--
 2 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/armada/armada_fb.c 
b/drivers/gpu/drm/armada/armada_fb.c
index ac92bce07ecd..edd15126bde9 100644
--- a/drivers/gpu/drm/armada/armada_fb.c
+++ b/drivers/gpu/drm/armada/armada_fb.c
@@ -7,30 +7,15 @@
  */
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_gem_framebuffer_helper.h>
 #include "armada_drm.h"
 #include "armada_fb.h"
 #include "armada_gem.h"
 #include "armada_hw.h"
 
-static void armada_fb_destroy(struct drm_framebuffer *fb)
-{
-       struct armada_framebuffer *dfb = drm_fb_to_armada_fb(fb);
-
-       drm_framebuffer_cleanup(&dfb->fb);
-       drm_gem_object_put_unlocked(&dfb->obj->obj);
-       kfree(dfb);
-}
-
-static int armada_fb_create_handle(struct drm_framebuffer *fb,
-       struct drm_file *dfile, unsigned int *handle)
-{
-       struct armada_framebuffer *dfb = drm_fb_to_armada_fb(fb);
-       return drm_gem_handle_create(dfile, &dfb->obj->obj, handle);
-}
-
 static const struct drm_framebuffer_funcs armada_fb_funcs = {
-       .destroy        = armada_fb_destroy,
-       .create_handle  = armada_fb_create_handle,
+       .destroy        = drm_gem_fb_destroy,
+       .create_handle  = drm_gem_fb_create_handle,
 };
 
 struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
@@ -78,7 +63,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct 
drm_device *dev,
 
        dfb->fmt = format;
        dfb->mod = config;
-       dfb->obj = obj;
+       dfb->fb.obj[0] = &obj->obj;
 
        drm_helper_mode_fill_fb_struct(dev, &dfb->fb, mode);
 
diff --git a/drivers/gpu/drm/armada/armada_fb.h 
b/drivers/gpu/drm/armada/armada_fb.h
index 48073c4f54d8..5c130ff5da77 100644
--- a/drivers/gpu/drm/armada/armada_fb.h
+++ b/drivers/gpu/drm/armada/armada_fb.h
@@ -10,13 +10,12 @@
 
 struct armada_framebuffer {
        struct drm_framebuffer  fb;
-       struct armada_gem_object *obj;
        uint8_t                 fmt;
        uint8_t                 mod;
 };
 #define drm_fb_to_armada_fb(dfb) \
        container_of(dfb, struct armada_framebuffer, fb)
-#define drm_fb_obj(fb) drm_fb_to_armada_fb(fb)->obj
+#define drm_fb_obj(fb) drm_to_armada_gem((fb)->obj[0])
 
 struct armada_framebuffer *armada_framebuffer_create(struct drm_device *,
        const struct drm_mode_fb_cmd2 *, struct armada_gem_object *);
-- 
2.16.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to