amlogic: drm: meson_gem: Add prime_vmap callback functionality for dmabuf 04/296004/2 accepted/tizen_8.0_unified tizen_8.0 accepted/tizen/8.0/unified/20231005.094521 accepted/tizen/unified/20230719.102858 tizen_8.0_m2_release
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Tue, 18 Jul 2023 07:23:30 +0000 (16:23 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Tue, 18 Jul 2023 07:29:58 +0000 (16:29 +0900)
To support dmabuf usage of drm gem from other sub-system like
video4linux, implement prime_vmap and prime_vunmap callback
functions properly.

Change-Id: I7be33a94da753dffc497c023fc9b592e4980d709
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
drivers/amlogic/drm/meson_gem.c

index 314045d8d747d9ad1ca64807b154f738cfd7f92c..522ee432b0941f12df5c5bfca5a6faf89c2b9416 100644 (file)
@@ -655,8 +655,16 @@ struct drm_gem_object *am_meson_gem_prime_import_sg_table(
 
 void *am_meson_gem_prime_vmap(struct drm_gem_object *obj)
 {
+       struct am_meson_gem_object *meson_gem_obj;
+
        DRM_DEBUG("am_meson_gem_prime_vmap %p.\n", obj);
 
+       meson_gem_obj = to_am_meson_gem_obj(obj);
+
+       if (meson_gem_obj->handle)
+               return ion_map_kernel(meson_gem_obj->handle->client,
+                                     meson_gem_obj->handle);
+
        return NULL;
 }
 
@@ -664,7 +672,15 @@ void am_meson_gem_prime_vunmap(
        struct drm_gem_object *obj,
        void *vaddr)
 {
+       struct am_meson_gem_object *meson_gem_obj;
+
        DRM_DEBUG("am_meson_gem_prime_vunmap nothing to do.\n");
+
+       meson_gem_obj = to_am_meson_gem_obj(obj);
+
+       if (meson_gem_obj->handle)
+               ion_unmap_kernel(meson_gem_obj->handle->client,
+                                meson_gem_obj->handle);
 }
 
 int am_meson_gem_prime_mmap(