Change DRM_EXYNOS_GEM_MAP to DRM_IOCTL_MODE_MAP_DUMB and mmap 35/34435/4 devel/tizen
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 27 Jan 2015 09:09:28 +0000 (18:09 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 27 Jan 2015 11:26:05 +0000 (20:26 +0900)
Change-Id: I4ca3fe556e626ce52540f55b5df3f60f54e46b44
Signed-off-by: Changyeon Lee <cyeon.lee@samsung.com>
src/tbm_bufmgr_exynos4412.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index cd6b28d..0f90ffd
@@ -294,18 +294,28 @@ _exynos4412_bo_handle (tbm_bo_exynos4412 bo_exynos4412, int device)
     case TBM_DEVICE_CPU:
         if (!bo_exynos4412->pBase)
         {
-            struct drm_exynos_gem_mmap arg = {0,};
+            struct drm_mode_map_dumb arg = {0,};
+            void *map = NULL;
 
             arg.handle = bo_exynos4412->gem;
-            arg.size = bo_exynos4412->size;
-            if (drmCommandWriteRead (bo_exynos4412->fd, DRM_EXYNOS_GEM_MMAP, &arg, sizeof(arg)))
+            if (drmIoctl (bo_exynos4412->fd, DRM_IOCTL_MODE_MAP_DUMB, &arg))
+            {
+                TBM_EXYNOS4412_LOG ("[libtbm-exynos4412:%d] "
+                         "error %s:%d Cannot map_dumb gem=%d\n",
+                         getpid(), __FUNCTION__, __LINE__, bo_exynos4412->gem);
+                return (tbm_bo_handle) NULL;
+            }
+
+            map = mmap (NULL, bo_exynos4412->size, PROT_READ|PROT_WRITE, MAP_SHARED,
+                              bo_exynos4412->fd, arg.offset);
+            if (map == MAP_FAILED)
             {
                 TBM_EXYNOS4412_LOG ("[libtbm-exynos4412:%d] "
                          "error %s:%d Cannot usrptr gem=%d\n",
                          getpid(), __FUNCTION__, __LINE__, bo_exynos4412->gem);
                 return (tbm_bo_handle) NULL;
             }
-            bo_exynos4412->pBase = (void*)((uint64_t)arg.mapped);
+            bo_exynos4412->pBase = map;
         }
 
         bo_handle.ptr = (void *)bo_exynos4412->pBase;