There is no reason to be wapper functions to use DMA mapping APIs. We
can use directly DMA mapping APIs without locking and remove the wapper
functions.

Signed-off-by: Joonyoung Shim <jy0922.shim at samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_g2d.c | 10 +++++-----
 drivers/gpu/drm/exynos/exynos_drm_gem.c | 26 --------------------------
 drivers/gpu/drm/exynos/exynos_drm_gem.h | 10 ----------
 3 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c 
b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
index c17efdb238a6..24d84a4298ac 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
@@ -365,6 +365,7 @@ static void g2d_userptr_put_dma_addr(struct drm_device 
*drm_dev,
 {
        struct g2d_cmdlist_userptr *g2d_userptr =
                                        (struct g2d_cmdlist_userptr *)obj;
+       struct sg_table *sgt;
        struct page **pages;

        if (!obj)
@@ -382,8 +383,8 @@ static void g2d_userptr_put_dma_addr(struct drm_device 
*drm_dev,
                return;

 out:
-       exynos_gem_unmap_sgt_from_dma(drm_dev, g2d_userptr->sgt,
-                                       DMA_BIDIRECTIONAL);
+       sgt = g2d_userptr->sgt;
+       dma_unmap_sg(drm_dev->dev, sgt->sgl, sgt->nents, DMA_BIDIRECTIONAL);

        pages = frame_vector_pages(g2d_userptr->vec);
        if (!IS_ERR(pages)) {
@@ -500,9 +501,8 @@ static dma_addr_t *g2d_userptr_get_dma_addr(struct 
drm_device *drm_dev,

        g2d_userptr->sgt = sgt;

-       ret = exynos_gem_map_sgt_with_dma(drm_dev, g2d_userptr->sgt,
-                                               DMA_BIDIRECTIONAL);
-       if (ret < 0) {
+       if (!dma_map_sg(drm_dev->dev, sgt->sgl, sgt->nents,
+                               DMA_BIDIRECTIONAL)) {
                DRM_ERROR("failed to map sgt with dma region.\n");
                goto err_sg_free_table;
        }
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c 
b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 29f48756e72f..17a52f89a690 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -373,32 +373,6 @@ int exynos_drm_gem_get_ioctl(struct drm_device *dev, void 
*data,
        return 0;
 }

-int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev,
-                               struct sg_table *sgt,
-                               enum dma_data_direction dir)
-{
-       int nents;
-
-       mutex_lock(&drm_dev->struct_mutex);
-
-       nents = dma_map_sg(drm_dev->dev, sgt->sgl, sgt->nents, dir);
-       if (!nents) {
-               DRM_ERROR("failed to map sgl with dma.\n");
-               mutex_unlock(&drm_dev->struct_mutex);
-               return nents;
-       }
-
-       mutex_unlock(&drm_dev->struct_mutex);
-       return 0;
-}
-
-void exynos_gem_unmap_sgt_from_dma(struct drm_device *drm_dev,
-                               struct sg_table *sgt,
-                               enum dma_data_direction dir)
-{
-       dma_unmap_sg(drm_dev->dev, sgt->sgl, sgt->nents, dir);
-}
-
 void exynos_drm_gem_free_object(struct drm_gem_object *obj)
 {
        exynos_drm_gem_destroy(to_exynos_gem(obj));
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h 
b/drivers/gpu/drm/exynos/exynos_drm_gem.h
index 00223052b87b..c1df26877b76 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h
@@ -121,16 +121,6 @@ int exynos_drm_gem_fault(struct vm_area_struct *vma, 
struct vm_fault *vmf);
 /* set vm_flags and we can change the vm attribute to other one at here. */
 int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);

-/* map sgt with dma region. */
-int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev,
-                               struct sg_table *sgt,
-                               enum dma_data_direction dir);
-
-/* unmap sgt from dma region. */
-void exynos_gem_unmap_sgt_from_dma(struct drm_device *drm_dev,
-                               struct sg_table *sgt,
-                               enum dma_data_direction dir);
-
 /* low-level interface prime helpers */
 struct sg_table *exynos_drm_gem_prime_get_sg_table(struct drm_gem_object *obj);
 struct drm_gem_object *
-- 
1.9.1

Reply via email to