Move rcar_du_gem_prime_import_sg_table() to RCar DU KMS lib.

Signed-off-by: Biju Das <biju.das...@bp.renesas.com>
---
v1->v2:
 * Rebased on drm-misc-next and DU-next.
---
 drivers/gpu/drm/rcar-du/rcar_du_kms.c     | 47 -----------------------
 drivers/gpu/drm/rcar-du/rcar_du_kms.h     |  8 ----
 drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c | 46 ++++++++++++++++++++++
 drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h |  7 ++++
 4 files changed, 53 insertions(+), 55 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c 
b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index 4b5511a20313..ae969f640bb6 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -11,8 +11,6 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_device.h>
-#include <drm/drm_framebuffer.h>
-#include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_managed.h>
 #include <drm/drm_probe_helper.h>
@@ -36,51 +34,6 @@
  * Frame buffer
  */
 
-static const struct drm_gem_object_funcs rcar_du_gem_funcs = {
-       .free = drm_gem_dma_object_free,
-       .print_info = drm_gem_dma_object_print_info,
-       .get_sg_table = drm_gem_dma_object_get_sg_table,
-       .vmap = drm_gem_dma_object_vmap,
-       .mmap = drm_gem_dma_object_mmap,
-       .vm_ops = &drm_gem_dma_vm_ops,
-};
-
-struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device 
*dev,
-                               struct dma_buf_attachment *attach,
-                               struct sg_table *sgt)
-{
-       struct rcar_du_device *rcdu = to_rcar_du_device(dev);
-       struct drm_gem_dma_object *dma_obj;
-       struct drm_gem_object *gem_obj;
-       int ret;
-
-       if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
-               return drm_gem_dma_prime_import_sg_table(dev, attach, sgt);
-
-       /* Create a DMA GEM buffer. */
-       dma_obj = kzalloc(sizeof(*dma_obj), GFP_KERNEL);
-       if (!dma_obj)
-               return ERR_PTR(-ENOMEM);
-
-       gem_obj = &dma_obj->base;
-       gem_obj->funcs = &rcar_du_gem_funcs;
-
-       drm_gem_private_object_init(dev, gem_obj, attach->dmabuf->size);
-       dma_obj->map_noncoherent = false;
-
-       ret = drm_gem_create_mmap_offset(gem_obj);
-       if (ret) {
-               drm_gem_object_release(gem_obj);
-               kfree(dma_obj);
-               return ERR_PTR(ret);
-       }
-
-       dma_obj->dma_addr = 0;
-       dma_obj->sgt = sgt;
-
-       return gem_obj;
-}
-
 static struct drm_framebuffer *
 rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,
                  const struct drm_mode_fb_cmd2 *mode_cmd)
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.h 
b/drivers/gpu/drm/rcar-du/rcar_du_kms.h
index 821eac74077f..b47a9e464ef4 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.h
@@ -12,16 +12,8 @@
 
 #include "rcar_du_kms_lib.h"
 
-struct dma_buf_attachment;
-struct drm_device;
-struct drm_gem_object;
 struct rcar_du_device;
-struct sg_table;
 
 int rcar_du_modeset_init(struct rcar_du_device *rcdu);
 
-struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device 
*dev,
-                               struct dma_buf_attachment *attach,
-                               struct sg_table *sgt);
-
 #endif /* __RCAR_DU_KMS_H__ */
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c 
b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
index 0a2b1c6c1ea6..6b912fed8a8b 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
@@ -10,6 +10,7 @@
 #include <drm/drm_device.h>
 #include <drm/drm_framebuffer.h>
 #include <drm/drm_gem_dma_helper.h>
+#include <drm/drm_gem_framebuffer_helper.h>
 
 #include <linux/videodev2.h>
 
@@ -311,6 +312,51 @@ const struct rcar_du_format_info *rcar_du_format_info(u32 
fourcc)
  * Frame buffer
  */
 
+static const struct drm_gem_object_funcs rcar_du_gem_funcs = {
+       .free = drm_gem_dma_object_free,
+       .print_info = drm_gem_dma_object_print_info,
+       .get_sg_table = drm_gem_dma_object_get_sg_table,
+       .vmap = drm_gem_dma_object_vmap,
+       .mmap = drm_gem_dma_object_mmap,
+       .vm_ops = &drm_gem_dma_vm_ops,
+};
+
+struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device 
*dev,
+                               struct dma_buf_attachment *attach,
+                               struct sg_table *sgt)
+{
+       struct rcar_du_device *rcdu = to_rcar_du_device(dev);
+       struct drm_gem_dma_object *dma_obj;
+       struct drm_gem_object *gem_obj;
+       int ret;
+
+       if (!rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
+               return drm_gem_dma_prime_import_sg_table(dev, attach, sgt);
+
+       /* Create a DMA GEM buffer. */
+       dma_obj = kzalloc(sizeof(*dma_obj), GFP_KERNEL);
+       if (!dma_obj)
+               return ERR_PTR(-ENOMEM);
+
+       gem_obj = &dma_obj->base;
+       gem_obj->funcs = &rcar_du_gem_funcs;
+
+       drm_gem_private_object_init(dev, gem_obj, attach->dmabuf->size);
+       dma_obj->map_noncoherent = false;
+
+       ret = drm_gem_create_mmap_offset(gem_obj);
+       if (ret) {
+               drm_gem_object_release(gem_obj);
+               kfree(dma_obj);
+               return ERR_PTR(ret);
+       }
+
+       dma_obj->dma_addr = 0;
+       dma_obj->sgt = sgt;
+
+       return gem_obj;
+}
+
 int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,
                        struct drm_mode_create_dumb *args)
 {
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h 
b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h
index 33f96e96f6a2..43261ad601d8 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h
@@ -12,9 +12,12 @@
 
 #include <linux/types.h>
 
+struct dma_buf_attachment;
 struct drm_device;
 struct drm_file;
+struct drm_gem_object;
 struct drm_mode_create_dumb;
+struct sg_table;
 
 struct rcar_du_format_info {
        u32 fourcc;
@@ -31,4 +34,8 @@ const struct rcar_du_format_info *rcar_du_format_info(u32 
fourcc);
 int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,
                        struct drm_mode_create_dumb *args);
 
+struct drm_gem_object *rcar_du_gem_prime_import_sg_table(struct drm_device 
*dev,
+                               struct dma_buf_attachment *attach,
+                               struct sg_table *sgt);
+
 #endif /* __RCAR_DU_KMS_LIB_H__ */
-- 
2.25.1

Reply via email to