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 /drivers/gpu | |
| 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>
Diffstat (limited to 'drivers/gpu')
| -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: |
