diff options
author | Joonyoung Shim <jy0922.shim@samsung.com> | 2015-07-28 04:53:19 -0400 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2015-08-16 00:30:15 -0400 |
commit | 0e9a2ee3bc1ee24be519312453ef93288b545ad3 (patch) | |
tree | 0d6141e1fb3d9dbd2ff0b4d8f949ec0679d48ae7 | |
parent | 67412d15afb7cc34943157c4bce2cf138b579fd1 (diff) |
drm/exynos: remove function exynos_drm_gem_map_buf
The exynos_drm_gem_map_buf can be merged in exynos_drm_gem_fault.
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_gem.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 0c53b858bfec..4d9a09907607 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c | |||
@@ -53,25 +53,6 @@ static unsigned long roundup_gem_size(unsigned long size, unsigned int flags) | |||
53 | return roundup(size, PAGE_SIZE); | 53 | return roundup(size, PAGE_SIZE); |
54 | } | 54 | } |
55 | 55 | ||
56 | static int exynos_drm_gem_map_buf(struct drm_gem_object *obj, | ||
57 | struct vm_area_struct *vma, | ||
58 | unsigned long f_vaddr, | ||
59 | pgoff_t page_offset) | ||
60 | { | ||
61 | struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj); | ||
62 | struct exynos_drm_gem_buf *buf = exynos_gem_obj->buffer; | ||
63 | unsigned long pfn; | ||
64 | |||
65 | if (page_offset >= (buf->size >> PAGE_SHIFT)) { | ||
66 | DRM_ERROR("invalid page offset\n"); | ||
67 | return -EINVAL; | ||
68 | } | ||
69 | |||
70 | pfn = page_to_pfn(buf->pages[page_offset]); | ||
71 | |||
72 | return vm_insert_mixed(vma, f_vaddr, pfn); | ||
73 | } | ||
74 | |||
75 | static int exynos_drm_gem_handle_create(struct drm_gem_object *obj, | 56 | static int exynos_drm_gem_handle_create(struct drm_gem_object *obj, |
76 | struct drm_file *file_priv, | 57 | struct drm_file *file_priv, |
77 | unsigned int *handle) | 58 | unsigned int *handle) |
@@ -560,18 +541,25 @@ unlock: | |||
560 | int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) | 541 | int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) |
561 | { | 542 | { |
562 | struct drm_gem_object *obj = vma->vm_private_data; | 543 | struct drm_gem_object *obj = vma->vm_private_data; |
563 | unsigned long f_vaddr; | 544 | struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj); |
545 | struct exynos_drm_gem_buf *buf = exynos_gem_obj->buffer; | ||
546 | unsigned long pfn; | ||
564 | pgoff_t page_offset; | 547 | pgoff_t page_offset; |
565 | int ret; | 548 | int ret; |
566 | 549 | ||
567 | page_offset = ((unsigned long)vmf->virtual_address - | 550 | page_offset = ((unsigned long)vmf->virtual_address - |
568 | vma->vm_start) >> PAGE_SHIFT; | 551 | vma->vm_start) >> PAGE_SHIFT; |
569 | f_vaddr = (unsigned long)vmf->virtual_address; | ||
570 | 552 | ||
571 | ret = exynos_drm_gem_map_buf(obj, vma, f_vaddr, page_offset); | 553 | if (page_offset >= (buf->size >> PAGE_SHIFT)) { |
572 | if (ret < 0) | 554 | DRM_ERROR("invalid page offset\n"); |
573 | DRM_ERROR("failed to map a buffer with user.\n"); | 555 | ret = -EINVAL; |
556 | goto out; | ||
557 | } | ||
574 | 558 | ||
559 | pfn = page_to_pfn(buf->pages[page_offset]); | ||
560 | ret = vm_insert_mixed(vma, (unsigned long)vmf->virtual_address, pfn); | ||
561 | |||
562 | out: | ||
575 | switch (ret) { | 563 | switch (ret) { |
576 | case 0: | 564 | case 0: |
577 | case -ERESTARTSYS: | 565 | case -ERESTARTSYS: |