Commit ebaf9e03 authored by Laurent Pinchart's avatar Laurent Pinchart

drm: GEM CMA: Split object mapping into GEM mapping and CMA mapping

The CMA-specific mapping code will be used to implement dma-buf mmap
support.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent a5ed8940
...@@ -228,13 +228,26 @@ const struct vm_operations_struct drm_gem_cma_vm_ops = { ...@@ -228,13 +228,26 @@ const struct vm_operations_struct drm_gem_cma_vm_ops = {
}; };
EXPORT_SYMBOL_GPL(drm_gem_cma_vm_ops); EXPORT_SYMBOL_GPL(drm_gem_cma_vm_ops);
static int drm_gem_cma_mmap_obj(struct drm_gem_cma_object *cma_obj,
struct vm_area_struct *vma)
{
int ret;
ret = remap_pfn_range(vma, vma->vm_start, cma_obj->paddr >> PAGE_SHIFT,
vma->vm_end - vma->vm_start, vma->vm_page_prot);
if (ret)
drm_gem_vm_close(vma);
return ret;
}
/* /*
* drm_gem_cma_mmap - (struct file_operation)->mmap callback function * drm_gem_cma_mmap - (struct file_operation)->mmap callback function
*/ */
int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma) int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma)
{ {
struct drm_gem_object *gem_obj;
struct drm_gem_cma_object *cma_obj; struct drm_gem_cma_object *cma_obj;
struct drm_gem_object *gem_obj;
int ret; int ret;
ret = drm_gem_mmap(filp, vma); ret = drm_gem_mmap(filp, vma);
...@@ -244,12 +257,7 @@ int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma) ...@@ -244,12 +257,7 @@ int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma)
gem_obj = vma->vm_private_data; gem_obj = vma->vm_private_data;
cma_obj = to_drm_gem_cma_obj(gem_obj); cma_obj = to_drm_gem_cma_obj(gem_obj);
ret = remap_pfn_range(vma, vma->vm_start, cma_obj->paddr >> PAGE_SHIFT, return drm_gem_cma_mmap_obj(cma_obj, vma);
vma->vm_end - vma->vm_start, vma->vm_page_prot);
if (ret)
drm_gem_vm_close(vma);
return ret;
} }
EXPORT_SYMBOL_GPL(drm_gem_cma_mmap); EXPORT_SYMBOL_GPL(drm_gem_cma_mmap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment