diff options
author | Thierry Reding <treding@nvidia.com> | 2014-09-24 10:14:04 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2014-11-13 10:14:48 -0500 |
commit | 53ea72132df8dd62bb77b28df7b05074dcea96fe (patch) | |
tree | 048176e8f160f33f2bc1d3dfad5f4d7aa17cbd8b | |
parent | e55a8bd8ead046e5b7f78c321afc7594034257f9 (diff) |
drm/tegra: gem: Use dma_mmap_writecombine()
Use the existing API rather than open-coding equivalent functionality
in the driver.
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | drivers/gpu/drm/tegra/gem.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c index a42d4c9a4d7d..9905598ebfc4 100644 --- a/drivers/gpu/drm/tegra/gem.c +++ b/drivers/gpu/drm/tegra/gem.c | |||
@@ -306,6 +306,7 @@ const struct vm_operations_struct tegra_bo_vm_ops = { | |||
306 | 306 | ||
307 | int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma) | 307 | int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma) |
308 | { | 308 | { |
309 | unsigned long vm_pgoff = vma->vm_pgoff; | ||
309 | struct drm_gem_object *gem; | 310 | struct drm_gem_object *gem; |
310 | struct tegra_bo *bo; | 311 | struct tegra_bo *bo; |
311 | int ret; | 312 | int ret; |
@@ -317,12 +318,19 @@ int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma) | |||
317 | gem = vma->vm_private_data; | 318 | gem = vma->vm_private_data; |
318 | bo = to_tegra_bo(gem); | 319 | bo = to_tegra_bo(gem); |
319 | 320 | ||
320 | ret = remap_pfn_range(vma, vma->vm_start, bo->paddr >> PAGE_SHIFT, | 321 | vma->vm_flags &= ~VM_PFNMAP; |
321 | vma->vm_end - vma->vm_start, vma->vm_page_prot); | 322 | vma->vm_pgoff = 0; |
322 | if (ret) | 323 | |
324 | ret = dma_mmap_writecombine(gem->dev->dev, vma, bo->vaddr, bo->paddr, | ||
325 | gem->size); | ||
326 | if (ret) { | ||
323 | drm_gem_vm_close(vma); | 327 | drm_gem_vm_close(vma); |
328 | return ret; | ||
329 | } | ||
330 | |||
331 | vma->vm_pgoff = vm_pgoff; | ||
324 | 332 | ||
325 | return ret; | 333 | return 0; |
326 | } | 334 | } |
327 | 335 | ||
328 | static struct sg_table * | 336 | static struct sg_table * |