aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/mediatek
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>2016-08-03 16:46:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-08-04 08:50:07 -0400
commit00085f1efa387a8ce100e3734920f7639c80caa3 (patch)
tree41ff3d6e6884918b4fc4f1ae96a284098167c5b0 /drivers/gpu/drm/mediatek
parent1605d2715ad2e67ddd0485a26e05ed670a4285ca (diff)
dma-mapping: use unsigned long for dma_attrs
The dma-mapping core and the implementations do not change the DMA attributes passed by pointer. Thus the pointer can point to const data. However the attributes do not have to be a bitfield. Instead unsigned long will do fine: 1. This is just simpler. Both in terms of reading the code and setting attributes. Instead of initializing local attributes on the stack and passing pointer to it to dma_set_attr(), just set the bits. 2. It brings safeness and checking for const correctness because the attributes are passed by value. Semantic patches for this change (at least most of them): virtual patch virtual context @r@ identifier f, attrs; @@ f(..., - struct dma_attrs *attrs + unsigned long attrs , ...) { ... } @@ identifier r.f; @@ f(..., - NULL + 0 ) and // Options: --all-includes virtual patch virtual context @r@ identifier f, attrs; type t; @@ t f(..., struct dma_attrs *attrs); @@ identifier r.f; @@ f(..., - NULL + 0 ) Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.com Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Acked-by: Vineet Gupta <vgupta@synopsys.com> Acked-by: Robin Murphy <robin.murphy@arm.com> Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> Acked-by: Mark Salter <msalter@redhat.com> [c6x] Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> [cris] Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> [drm] Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com> Acked-by: Joerg Roedel <jroedel@suse.de> [iommu] Acked-by: Fabien Dessenne <fabien.dessenne@st.com> [bdisp] Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> [vb2-core] Acked-by: David Vrabel <david.vrabel@citrix.com> [xen] Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [xen swiotlb] Acked-by: Joerg Roedel <jroedel@suse.de> [iommu] Acked-by: Richard Kuo <rkuo@codeaurora.org> [hexagon] Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k] Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> [s390] Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org> Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> [avr32] Acked-by: Vineet Gupta <vgupta@synopsys.com> [arc] Acked-by: Robin Murphy <robin.murphy@arm.com> [arm64 and dma-iommu] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpu/drm/mediatek')
-rw-r--r--drivers/gpu/drm/mediatek/mtk_drm_gem.c13
-rw-r--r--drivers/gpu/drm/mediatek/mtk_drm_gem.h2
2 files changed, 7 insertions, 8 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.c b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
index fa2ec0cd00e8..7abc550ebc00 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
@@ -54,15 +54,14 @@ struct mtk_drm_gem_obj *mtk_drm_gem_create(struct drm_device *dev,
54 54
55 obj = &mtk_gem->base; 55 obj = &mtk_gem->base;
56 56
57 init_dma_attrs(&mtk_gem->dma_attrs); 57 mtk_gem->dma_attrs = DMA_ATTR_WRITE_COMBINE;
58 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &mtk_gem->dma_attrs);
59 58
60 if (!alloc_kmap) 59 if (!alloc_kmap)
61 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, &mtk_gem->dma_attrs); 60 mtk_gem->dma_attrs |= DMA_ATTR_NO_KERNEL_MAPPING;
62 61
63 mtk_gem->cookie = dma_alloc_attrs(priv->dma_dev, obj->size, 62 mtk_gem->cookie = dma_alloc_attrs(priv->dma_dev, obj->size,
64 &mtk_gem->dma_addr, GFP_KERNEL, 63 &mtk_gem->dma_addr, GFP_KERNEL,
65 &mtk_gem->dma_attrs); 64 mtk_gem->dma_attrs);
66 if (!mtk_gem->cookie) { 65 if (!mtk_gem->cookie) {
67 DRM_ERROR("failed to allocate %zx byte dma buffer", obj->size); 66 DRM_ERROR("failed to allocate %zx byte dma buffer", obj->size);
68 ret = -ENOMEM; 67 ret = -ENOMEM;
@@ -93,7 +92,7 @@ void mtk_drm_gem_free_object(struct drm_gem_object *obj)
93 drm_prime_gem_destroy(obj, mtk_gem->sg); 92 drm_prime_gem_destroy(obj, mtk_gem->sg);
94 else 93 else
95 dma_free_attrs(priv->dma_dev, obj->size, mtk_gem->cookie, 94 dma_free_attrs(priv->dma_dev, obj->size, mtk_gem->cookie,
96 mtk_gem->dma_addr, &mtk_gem->dma_attrs); 95 mtk_gem->dma_addr, mtk_gem->dma_attrs);
97 96
98 /* release file pointer to gem object. */ 97 /* release file pointer to gem object. */
99 drm_gem_object_release(obj); 98 drm_gem_object_release(obj);
@@ -173,7 +172,7 @@ static int mtk_drm_gem_object_mmap(struct drm_gem_object *obj,
173 vma->vm_pgoff = 0; 172 vma->vm_pgoff = 0;
174 173
175 ret = dma_mmap_attrs(priv->dma_dev, vma, mtk_gem->cookie, 174 ret = dma_mmap_attrs(priv->dma_dev, vma, mtk_gem->cookie,
176 mtk_gem->dma_addr, obj->size, &mtk_gem->dma_attrs); 175 mtk_gem->dma_addr, obj->size, mtk_gem->dma_attrs);
177 if (ret) 176 if (ret)
178 drm_gem_vm_close(vma); 177 drm_gem_vm_close(vma);
179 178
@@ -224,7 +223,7 @@ struct sg_table *mtk_gem_prime_get_sg_table(struct drm_gem_object *obj)
224 223
225 ret = dma_get_sgtable_attrs(priv->dma_dev, sgt, mtk_gem->cookie, 224 ret = dma_get_sgtable_attrs(priv->dma_dev, sgt, mtk_gem->cookie,
226 mtk_gem->dma_addr, obj->size, 225 mtk_gem->dma_addr, obj->size,
227 &mtk_gem->dma_attrs); 226 mtk_gem->dma_attrs);
228 if (ret) { 227 if (ret) {
229 DRM_ERROR("failed to allocate sgt, %d\n", ret); 228 DRM_ERROR("failed to allocate sgt, %d\n", ret);
230 kfree(sgt); 229 kfree(sgt);
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.h b/drivers/gpu/drm/mediatek/mtk_drm_gem.h
index 3a2a5624a1cb..2752718fa5b2 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.h
+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.h
@@ -35,7 +35,7 @@ struct mtk_drm_gem_obj {
35 void *cookie; 35 void *cookie;
36 void *kvaddr; 36 void *kvaddr;
37 dma_addr_t dma_addr; 37 dma_addr_t dma_addr;
38 struct dma_attrs dma_attrs; 38 unsigned long dma_attrs;
39 struct sg_table *sg; 39 struct sg_table *sg;
40}; 40};
41 41