Commit ecb8a947 authored by Daniel Stone's avatar Daniel Stone

drm/armada: Move GEM BO to drm_framebuffer

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: default avatarDaniel Stone <daniels@collabora.com>
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Reviewed-by: default avatarRussell King <linux@armlinux.org.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180330141138.28987-19-daniels@collabora.com
parent 3823da3a
...@@ -7,30 +7,15 @@ ...@@ -7,30 +7,15 @@
*/ */
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_helper.h> #include <drm/drm_fb_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include "armada_drm.h" #include "armada_drm.h"
#include "armada_fb.h" #include "armada_fb.h"
#include "armada_gem.h" #include "armada_gem.h"
#include "armada_hw.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 = { static const struct drm_framebuffer_funcs armada_fb_funcs = {
.destroy = armada_fb_destroy, .destroy = drm_gem_fb_destroy,
.create_handle = armada_fb_create_handle, .create_handle = drm_gem_fb_create_handle,
}; };
struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,
...@@ -78,7 +63,7 @@ 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->fmt = format;
dfb->mod = config; dfb->mod = config;
dfb->obj = obj; dfb->fb.obj[0] = &obj->obj;
drm_helper_mode_fill_fb_struct(dev, &dfb->fb, mode); drm_helper_mode_fill_fb_struct(dev, &dfb->fb, mode);
......
...@@ -10,13 +10,12 @@ ...@@ -10,13 +10,12 @@
struct armada_framebuffer { struct armada_framebuffer {
struct drm_framebuffer fb; struct drm_framebuffer fb;
struct armada_gem_object *obj;
uint8_t fmt; uint8_t fmt;
uint8_t mod; uint8_t mod;
}; };
#define drm_fb_to_armada_fb(dfb) \ #define drm_fb_to_armada_fb(dfb) \
container_of(dfb, struct armada_framebuffer, fb) 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 *, struct armada_framebuffer *armada_framebuffer_create(struct drm_device *,
const struct drm_mode_fb_cmd2 *, struct armada_gem_object *); const struct drm_mode_fb_cmd2 *, struct armada_gem_object *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment