drm/armada: Move GEM BO to drm_framebuffer
authorDaniel Stone <daniels@collabora.com>
Fri, 30 Mar 2018 14:11:33 +0000 (15:11 +0100)
committerDaniel Stone <daniels@collabora.com>
Fri, 18 May 2018 13:52:36 +0000 (14:52 +0100)
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 <daniels@collabora.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Russell King <linux@armlinux.org.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180330141138.28987-19-daniels@collabora.com
drivers/gpu/drm/armada/armada_fb.c
drivers/gpu/drm/armada/armada_fb.h

index ac92bce07ecd92aedffe35ea481df054e24175b8..edd15126bde93a70bcbf15e483c7afca53bf5edc 100644 (file)
@@ -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);
 
index 48073c4f54d8d673bba030fa3893332a8eae93a2..5c130ff5da7707a63a60552451cd6f92584ec901 100644 (file)
 
 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 *);