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>
Reviewed-by: CK Hu <ck...@mediatek.com>
Reviewed-by: Thierry Reding <tred...@nvidia.com>
Reviewed-by: Sean Paul <seanp...@chromium.org>
Cc: Philipp Zabel <p.za...@pengutronix.de>
---
 drivers/gpu/drm/mediatek/mtk_drm_fb.c    | 38 ++++--------------------
 drivers/gpu/drm/mediatek/mtk_drm_fb.h    |  1 -
 drivers/gpu/drm/mediatek/mtk_drm_plane.c |  2 +-
 3 files changed, 6 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.c 
b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
index 0d8d506695f9..f130e37123b5 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_fb.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.c
@@ -15,6 +15,7 @@
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_gem.h>
+#include <drm/drm_gem_framebuffer_helper.h>
 #include <linux/dma-buf.h>
 #include <linux/reservation.h>
 
@@ -30,42 +31,13 @@
  */
 struct mtk_drm_fb {
        struct drm_framebuffer  base;
-       /* For now we only support a single plane */
-       struct drm_gem_object   *gem_obj;
 };
 
 #define to_mtk_fb(x) container_of(x, struct mtk_drm_fb, base)
 
-struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb)
-{
-       struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb);
-
-       return mtk_fb->gem_obj;
-}
-
-static int mtk_drm_fb_create_handle(struct drm_framebuffer *fb,
-                                   struct drm_file *file_priv,
-                                   unsigned int *handle)
-{
-       struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb);
-
-       return drm_gem_handle_create(file_priv, mtk_fb->gem_obj, handle);
-}
-
-static void mtk_drm_fb_destroy(struct drm_framebuffer *fb)
-{
-       struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb);
-
-       drm_framebuffer_cleanup(fb);
-
-       drm_gem_object_put_unlocked(mtk_fb->gem_obj);
-
-       kfree(mtk_fb);
-}
-
 static const struct drm_framebuffer_funcs mtk_drm_fb_funcs = {
-       .create_handle = mtk_drm_fb_create_handle,
-       .destroy = mtk_drm_fb_destroy,
+       .create_handle = drm_gem_fb_create_handle,
+       .destroy = drm_gem_fb_destroy,
 };
 
 static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct drm_device *dev,
@@ -84,7 +56,7 @@ static struct mtk_drm_fb *mtk_drm_framebuffer_init(struct 
drm_device *dev,
 
        drm_helper_mode_fill_fb_struct(dev, &mtk_fb->base, mode);
 
-       mtk_fb->gem_obj = obj;
+       mtk_fb->base.obj[0] = obj;
 
        ret = drm_framebuffer_init(dev, &mtk_fb->base, &mtk_drm_fb_funcs);
        if (ret) {
@@ -110,7 +82,7 @@ int mtk_fb_wait(struct drm_framebuffer *fb)
        if (!fb)
                return 0;
 
-       gem = mtk_fb_get_gem_obj(fb);
+       gem = fb->obj[0];
        if (!gem || !gem->dma_buf || !gem->dma_buf->resv)
                return 0;
 
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_fb.h 
b/drivers/gpu/drm/mediatek/mtk_drm_fb.h
index 9b2ae345a4e9..7f976b196a15 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_fb.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_fb.h
@@ -14,7 +14,6 @@
 #ifndef MTK_DRM_FB_H
 #define MTK_DRM_FB_H
 
-struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb);
 int mtk_fb_wait(struct drm_framebuffer *fb);
 struct drm_framebuffer *mtk_drm_mode_fb_create(struct drm_device *dev,
                                               struct drm_file *file,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c 
b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
index 149fc4372917..f7e6aa1b5b7d 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
@@ -122,7 +122,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane,
        if (!crtc || WARN_ON(!fb))
                return;
 
-       gem = mtk_fb_get_gem_obj(fb);
+       gem = fb->obj[0];
        mtk_gem = to_mtk_gem_obj(gem);
        addr = mtk_gem->dma_addr;
        pitch = fb->pitches[0];
-- 
2.17.0

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

Reply via email to