aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis R. Rodriguez <mcgrof@suse.com>2016-01-22 21:34:22 -0500
committerIngo Molnar <mingo@kernel.org>2016-03-09 08:57:51 -0500
commitf6e45661f9be546811b62b2b01f32f4bf0c436c0 (patch)
tree6f23a99fb34604c43a04e9f943553e16100bc516
parente2857b8f11a289ed2b61d18d0665e05c1053c446 (diff)
dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc()
Rename dma_*_writecombine() to dma_*_wc(), so that the naming is coherent across the various write-combining APIs. Keep the old names for compatibility for a while, these can be removed at a later time. A guard is left to enable backporting of the rename, and later remove of the old mapping defines seemlessly. Build tested successfully with allmodconfig. The following Coccinelle SmPL patch was used for this simple transformation: @ rename_dma_alloc_writecombine @ expression dev, size, dma_addr, gfp; @@ -dma_alloc_writecombine(dev, size, dma_addr, gfp) +dma_alloc_wc(dev, size, dma_addr, gfp) @ rename_dma_free_writecombine @ expression dev, size, cpu_addr, dma_addr; @@ -dma_free_writecombine(dev, size, cpu_addr, dma_addr) +dma_free_wc(dev, size, cpu_addr, dma_addr) @ rename_dma_mmap_writecombine @ expression dev, vma, cpu_addr, dma_addr, size; @@ -dma_mmap_writecombine(dev, vma, cpu_addr, dma_addr, size) +dma_mmap_wc(dev, vma, cpu_addr, dma_addr, size) We also keep the old names as compatibility helpers, and guard against their definition to make backporting easier. Generated-by: Coccinelle SmPL Suggested-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: airlied@linux.ie Cc: akpm@linux-foundation.org Cc: benh@kernel.crashing.org Cc: bhelgaas@google.com Cc: bp@suse.de Cc: dan.j.williams@intel.com Cc: daniel.vetter@ffwll.ch Cc: dhowells@redhat.com Cc: julia.lawall@lip6.fr Cc: konrad.wilk@oracle.com Cc: linux-fbdev@vger.kernel.org Cc: linux-pci@vger.kernel.org Cc: luto@amacapital.net Cc: mst@redhat.com Cc: tomi.valkeinen@ti.com Cc: toshi.kani@hp.com Cc: vinod.koul@intel.com Cc: xen-devel@lists.xensource.com Link: http://lkml.kernel.org/r/1453516462-4844-1-git-send-email-mcgrof@do-not-panic.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/arm/mach-lpc32xx/phy3250.c13
-rw-r--r--arch/arm/mach-netx/fb.c14
-rw-r--r--arch/arm/mach-nspire/clcd.c13
-rw-r--r--drivers/dma/iop-adma.c8
-rw-r--r--drivers/dma/mv_xor.c4
-rw-r--r--drivers/dma/qcom_bam_dma.c14
-rw-r--r--drivers/gpu/drm/drm_gem_cma_helper.c13
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gpu.c8
-rw-r--r--drivers/gpu/drm/omapdrm/omap_dmm_tiler.c13
-rw-r--r--drivers/gpu/drm/omapdrm/omap_gem.c8
-rw-r--r--drivers/gpu/drm/sti/sti_cursor.c20
-rw-r--r--drivers/gpu/drm/sti/sti_gdp.c3
-rw-r--r--drivers/gpu/drm/sti/sti_hqvdp.c6
-rw-r--r--drivers/gpu/drm/tegra/gem.c11
-rw-r--r--drivers/gpu/drm/vc4/vc4_bo.c5
-rw-r--r--drivers/gpu/host1x/cdma.c8
-rw-r--r--drivers/gpu/host1x/job.c10
-rw-r--r--drivers/media/platform/coda/coda-bit.c10
-rw-r--r--drivers/video/fbdev/acornfb.c4
-rw-r--r--drivers/video/fbdev/amba-clcd-versatile.c14
-rw-r--r--drivers/video/fbdev/amba-clcd.c4
-rw-r--r--drivers/video/fbdev/atmel_lcdfb.c9
-rw-r--r--drivers/video/fbdev/ep93xx-fb.c8
-rw-r--r--drivers/video/fbdev/gbefb.c8
-rw-r--r--drivers/video/fbdev/imxfb.c12
-rw-r--r--drivers/video/fbdev/mx3fb.c9
-rw-r--r--drivers/video/fbdev/nuc900fb.c8
-rw-r--r--drivers/video/fbdev/omap/lcdc.c16
-rw-r--r--drivers/video/fbdev/pxa168fb.c8
-rw-r--r--drivers/video/fbdev/pxafb.c4
-rw-r--r--drivers/video/fbdev/s3c-fb.c7
-rw-r--r--drivers/video/fbdev/s3c2410fb.c8
-rw-r--r--drivers/video/fbdev/sa1100fb.c8
-rw-r--r--include/linux/dma-mapping.h25
-rw-r--r--sound/arm/pxa2xx-pcm-lib.c12
-rw-r--r--sound/soc/fsl/imx-pcm-fiq.c10
-rw-r--r--sound/soc/nuc900/nuc900-pcm.c6
-rw-r--r--sound/soc/omap/omap-pcm.c12
38 files changed, 176 insertions, 197 deletions
diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c
index 77d6b1bab278..ee06fabdf60e 100644
--- a/arch/arm/mach-lpc32xx/phy3250.c
+++ b/arch/arm/mach-lpc32xx/phy3250.c
@@ -86,8 +86,8 @@ static int lpc32xx_clcd_setup(struct clcd_fb *fb)
86{ 86{
87 dma_addr_t dma; 87 dma_addr_t dma;
88 88
89 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, 89 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, PANEL_SIZE, &dma,
90 PANEL_SIZE, &dma, GFP_KERNEL); 90 GFP_KERNEL);
91 if (!fb->fb.screen_base) { 91 if (!fb->fb.screen_base) {
92 printk(KERN_ERR "CLCD: unable to map framebuffer\n"); 92 printk(KERN_ERR "CLCD: unable to map framebuffer\n");
93 return -ENOMEM; 93 return -ENOMEM;
@@ -116,15 +116,14 @@ static int lpc32xx_clcd_setup(struct clcd_fb *fb)
116 116
117static int lpc32xx_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) 117static int lpc32xx_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
118{ 118{
119 return dma_mmap_writecombine(&fb->dev->dev, vma, 119 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
120 fb->fb.screen_base, fb->fb.fix.smem_start, 120 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
121 fb->fb.fix.smem_len);
122} 121}
123 122
124static void lpc32xx_clcd_remove(struct clcd_fb *fb) 123static void lpc32xx_clcd_remove(struct clcd_fb *fb)
125{ 124{
126 dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len, 125 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base,
127 fb->fb.screen_base, fb->fb.fix.smem_start); 126 fb->fb.fix.smem_start);
128} 127}
129 128
130/* 129/*
diff --git a/arch/arm/mach-netx/fb.c b/arch/arm/mach-netx/fb.c
index d122ee6ab991..8814ee5e98fd 100644
--- a/arch/arm/mach-netx/fb.c
+++ b/arch/arm/mach-netx/fb.c
@@ -42,8 +42,8 @@ int netx_clcd_setup(struct clcd_fb *fb)
42 42
43 fb->panel = netx_panel; 43 fb->panel = netx_panel;
44 44
45 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, 1024*1024, 45 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, 1024 * 1024, &dma,
46 &dma, GFP_KERNEL); 46 GFP_KERNEL);
47 if (!fb->fb.screen_base) { 47 if (!fb->fb.screen_base) {
48 printk(KERN_ERR "CLCD: unable to map framebuffer\n"); 48 printk(KERN_ERR "CLCD: unable to map framebuffer\n");
49 return -ENOMEM; 49 return -ENOMEM;
@@ -57,16 +57,14 @@ int netx_clcd_setup(struct clcd_fb *fb)
57 57
58int netx_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) 58int netx_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
59{ 59{
60 return dma_mmap_writecombine(&fb->dev->dev, vma, 60 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
61 fb->fb.screen_base, 61 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
62 fb->fb.fix.smem_start,
63 fb->fb.fix.smem_len);
64} 62}
65 63
66void netx_clcd_remove(struct clcd_fb *fb) 64void netx_clcd_remove(struct clcd_fb *fb)
67{ 65{
68 dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len, 66 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base,
69 fb->fb.screen_base, fb->fb.fix.smem_start); 67 fb->fb.fix.smem_start);
70} 68}
71 69
72static AMBA_AHB_DEVICE(fb, "fb", 0, 0x00104000, { NETX_IRQ_LCD }, NULL); 70static AMBA_AHB_DEVICE(fb, "fb", 0, 0x00104000, { NETX_IRQ_LCD }, NULL);
diff --git a/arch/arm/mach-nspire/clcd.c b/arch/arm/mach-nspire/clcd.c
index abea12617b17..ea0e5b2ca1cd 100644
--- a/arch/arm/mach-nspire/clcd.c
+++ b/arch/arm/mach-nspire/clcd.c
@@ -90,8 +90,8 @@ int nspire_clcd_setup(struct clcd_fb *fb)
90 panel_size = ((panel->mode.xres * panel->mode.yres) * panel->bpp) / 8; 90 panel_size = ((panel->mode.xres * panel->mode.yres) * panel->bpp) / 8;
91 panel_size = ALIGN(panel_size, PAGE_SIZE); 91 panel_size = ALIGN(panel_size, PAGE_SIZE);
92 92
93 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, 93 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, panel_size, &dma,
94 panel_size, &dma, GFP_KERNEL); 94 GFP_KERNEL);
95 95
96 if (!fb->fb.screen_base) { 96 if (!fb->fb.screen_base) {
97 pr_err("CLCD: unable to map framebuffer\n"); 97 pr_err("CLCD: unable to map framebuffer\n");
@@ -107,13 +107,12 @@ int nspire_clcd_setup(struct clcd_fb *fb)
107 107
108int nspire_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) 108int nspire_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
109{ 109{
110 return dma_mmap_writecombine(&fb->dev->dev, vma, 110 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
111 fb->fb.screen_base, fb->fb.fix.smem_start, 111 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
112 fb->fb.fix.smem_len);
113} 112}
114 113
115void nspire_clcd_remove(struct clcd_fb *fb) 114void nspire_clcd_remove(struct clcd_fb *fb)
116{ 115{
117 dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len, 116 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base,
118 fb->fb.screen_base, fb->fb.fix.smem_start); 117 fb->fb.fix.smem_start);
119} 118}
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index e4f43125e0fb..f039cfadf17b 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -1300,10 +1300,10 @@ static int iop_adma_probe(struct platform_device *pdev)
1300 * note: writecombine gives slightly better performance, but 1300 * note: writecombine gives slightly better performance, but
1301 * requires that we explicitly flush the writes 1301 * requires that we explicitly flush the writes
1302 */ 1302 */
1303 adev->dma_desc_pool_virt = dma_alloc_writecombine(&pdev->dev, 1303 adev->dma_desc_pool_virt = dma_alloc_wc(&pdev->dev,
1304 plat_data->pool_size, 1304 plat_data->pool_size,
1305 &adev->dma_desc_pool, 1305 &adev->dma_desc_pool,
1306 GFP_KERNEL); 1306 GFP_KERNEL);
1307 if (!adev->dma_desc_pool_virt) { 1307 if (!adev->dma_desc_pool_virt) {
1308 ret = -ENOMEM; 1308 ret = -ENOMEM;
1309 goto err_free_adev; 1309 goto err_free_adev;
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
index 14091f878f80..3922a5d56806 100644
--- a/drivers/dma/mv_xor.c
+++ b/drivers/dma/mv_xor.c
@@ -964,8 +964,8 @@ mv_xor_channel_add(struct mv_xor_device *xordev,
964 * requires that we explicitly flush the writes 964 * requires that we explicitly flush the writes
965 */ 965 */
966 mv_chan->dma_desc_pool_virt = 966 mv_chan->dma_desc_pool_virt =
967 dma_alloc_writecombine(&pdev->dev, MV_XOR_POOL_SIZE, 967 dma_alloc_wc(&pdev->dev, MV_XOR_POOL_SIZE, &mv_chan->dma_desc_pool,
968 &mv_chan->dma_desc_pool, GFP_KERNEL); 968 GFP_KERNEL);
969 if (!mv_chan->dma_desc_pool_virt) 969 if (!mv_chan->dma_desc_pool_virt)
970 return ERR_PTR(-ENOMEM); 970 return ERR_PTR(-ENOMEM);
971 971
diff --git a/drivers/dma/qcom_bam_dma.c b/drivers/dma/qcom_bam_dma.c
index 5a250cdc8376..d34aef7a101b 100644
--- a/drivers/dma/qcom_bam_dma.c
+++ b/drivers/dma/qcom_bam_dma.c
@@ -502,8 +502,8 @@ static int bam_alloc_chan(struct dma_chan *chan)
502 return 0; 502 return 0;
503 503
504 /* allocate FIFO descriptor space, but only if necessary */ 504 /* allocate FIFO descriptor space, but only if necessary */
505 bchan->fifo_virt = dma_alloc_writecombine(bdev->dev, BAM_DESC_FIFO_SIZE, 505 bchan->fifo_virt = dma_alloc_wc(bdev->dev, BAM_DESC_FIFO_SIZE,
506 &bchan->fifo_phys, GFP_KERNEL); 506 &bchan->fifo_phys, GFP_KERNEL);
507 507
508 if (!bchan->fifo_virt) { 508 if (!bchan->fifo_virt) {
509 dev_err(bdev->dev, "Failed to allocate desc fifo\n"); 509 dev_err(bdev->dev, "Failed to allocate desc fifo\n");
@@ -538,8 +538,8 @@ static void bam_free_chan(struct dma_chan *chan)
538 bam_reset_channel(bchan); 538 bam_reset_channel(bchan);
539 spin_unlock_irqrestore(&bchan->vc.lock, flags); 539 spin_unlock_irqrestore(&bchan->vc.lock, flags);
540 540
541 dma_free_writecombine(bdev->dev, BAM_DESC_FIFO_SIZE, bchan->fifo_virt, 541 dma_free_wc(bdev->dev, BAM_DESC_FIFO_SIZE, bchan->fifo_virt,
542 bchan->fifo_phys); 542 bchan->fifo_phys);
543 bchan->fifo_virt = NULL; 543 bchan->fifo_virt = NULL;
544 544
545 /* mask irq for pipe/channel */ 545 /* mask irq for pipe/channel */
@@ -1231,9 +1231,9 @@ static int bam_dma_remove(struct platform_device *pdev)
1231 bam_dma_terminate_all(&bdev->channels[i].vc.chan); 1231 bam_dma_terminate_all(&bdev->channels[i].vc.chan);
1232 tasklet_kill(&bdev->channels[i].vc.task); 1232 tasklet_kill(&bdev->channels[i].vc.task);
1233 1233
1234 dma_free_writecombine(bdev->dev, BAM_DESC_FIFO_SIZE, 1234 dma_free_wc(bdev->dev, BAM_DESC_FIFO_SIZE,
1235 bdev->channels[i].fifo_virt, 1235 bdev->channels[i].fifo_virt,
1236 bdev->channels[i].fifo_phys); 1236 bdev->channels[i].fifo_phys);
1237 } 1237 }
1238 1238
1239 tasklet_kill(&bdev->task); 1239 tasklet_kill(&bdev->task);
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
index e5df53b6e229..1f500a1b9969 100644
--- a/drivers/gpu/drm/drm_gem_cma_helper.c
+++ b/drivers/gpu/drm/drm_gem_cma_helper.c
@@ -109,8 +109,8 @@ struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm,
109 if (IS_ERR(cma_obj)) 109 if (IS_ERR(cma_obj))
110 return cma_obj; 110 return cma_obj;
111 111
112 cma_obj->vaddr = dma_alloc_writecombine(drm->dev, size, 112 cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr,
113 &cma_obj->paddr, GFP_KERNEL | __GFP_NOWARN); 113 GFP_KERNEL | __GFP_NOWARN);
114 if (!cma_obj->vaddr) { 114 if (!cma_obj->vaddr) {
115 dev_err(drm->dev, "failed to allocate buffer with size %zu\n", 115 dev_err(drm->dev, "failed to allocate buffer with size %zu\n",
116 size); 116 size);
@@ -192,8 +192,8 @@ void drm_gem_cma_free_object(struct drm_gem_object *gem_obj)
192 cma_obj = to_drm_gem_cma_obj(gem_obj); 192 cma_obj = to_drm_gem_cma_obj(gem_obj);
193 193
194 if (cma_obj->vaddr) { 194 if (cma_obj->vaddr) {
195 dma_free_writecombine(gem_obj->dev->dev, cma_obj->base.size, 195 dma_free_wc(gem_obj->dev->dev, cma_obj->base.size,
196 cma_obj->vaddr, cma_obj->paddr); 196 cma_obj->vaddr, cma_obj->paddr);
197 } else if (gem_obj->import_attach) { 197 } else if (gem_obj->import_attach) {
198 drm_prime_gem_destroy(gem_obj, cma_obj->sgt); 198 drm_prime_gem_destroy(gem_obj, cma_obj->sgt);
199 } 199 }
@@ -324,9 +324,8 @@ static int drm_gem_cma_mmap_obj(struct drm_gem_cma_object *cma_obj,
324 vma->vm_flags &= ~VM_PFNMAP; 324 vma->vm_flags &= ~VM_PFNMAP;
325 vma->vm_pgoff = 0; 325 vma->vm_pgoff = 0;
326 326
327 ret = dma_mmap_writecombine(cma_obj->base.dev->dev, vma, 327 ret = dma_mmap_wc(cma_obj->base.dev->dev, vma, cma_obj->vaddr,
328 cma_obj->vaddr, cma_obj->paddr, 328 cma_obj->paddr, vma->vm_end - vma->vm_start);
329 vma->vm_end - vma->vm_start);
330 if (ret) 329 if (ret)
331 drm_gem_vm_close(vma); 330 drm_gem_vm_close(vma);
332 331
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
index a33162cf4f4c..3c1ce44483d9 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
@@ -1113,8 +1113,8 @@ struct etnaviv_cmdbuf *etnaviv_gpu_cmdbuf_new(struct etnaviv_gpu *gpu, u32 size,
1113 if (!cmdbuf) 1113 if (!cmdbuf)
1114 return NULL; 1114 return NULL;
1115 1115
1116 cmdbuf->vaddr = dma_alloc_writecombine(gpu->dev, size, &cmdbuf->paddr, 1116 cmdbuf->vaddr = dma_alloc_wc(gpu->dev, size, &cmdbuf->paddr,
1117 GFP_KERNEL); 1117 GFP_KERNEL);
1118 if (!cmdbuf->vaddr) { 1118 if (!cmdbuf->vaddr) {
1119 kfree(cmdbuf); 1119 kfree(cmdbuf);
1120 return NULL; 1120 return NULL;
@@ -1128,8 +1128,8 @@ struct etnaviv_cmdbuf *etnaviv_gpu_cmdbuf_new(struct etnaviv_gpu *gpu, u32 size,
1128 1128
1129void etnaviv_gpu_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf) 1129void etnaviv_gpu_cmdbuf_free(struct etnaviv_cmdbuf *cmdbuf)
1130{ 1130{
1131 dma_free_writecombine(cmdbuf->gpu->dev, cmdbuf->size, 1131 dma_free_wc(cmdbuf->gpu->dev, cmdbuf->size, cmdbuf->vaddr,
1132 cmdbuf->vaddr, cmdbuf->paddr); 1132 cmdbuf->paddr);
1133 kfree(cmdbuf); 1133 kfree(cmdbuf);
1134} 1134}
1135 1135
diff --git a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
index dfebdc4aa0f2..85dfe3674b41 100644
--- a/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
+++ b/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c
@@ -573,10 +573,9 @@ static int omap_dmm_remove(struct platform_device *dev)
573 573
574 kfree(omap_dmm->engines); 574 kfree(omap_dmm->engines);
575 if (omap_dmm->refill_va) 575 if (omap_dmm->refill_va)
576 dma_free_writecombine(omap_dmm->dev, 576 dma_free_wc(omap_dmm->dev,
577 REFILL_BUFFER_SIZE * omap_dmm->num_engines, 577 REFILL_BUFFER_SIZE * omap_dmm->num_engines,
578 omap_dmm->refill_va, 578 omap_dmm->refill_va, omap_dmm->refill_pa);
579 omap_dmm->refill_pa);
580 if (omap_dmm->dummy_page) 579 if (omap_dmm->dummy_page)
581 __free_page(omap_dmm->dummy_page); 580 __free_page(omap_dmm->dummy_page);
582 581
@@ -701,9 +700,9 @@ static int omap_dmm_probe(struct platform_device *dev)
701 omap_dmm->dummy_pa = page_to_phys(omap_dmm->dummy_page); 700 omap_dmm->dummy_pa = page_to_phys(omap_dmm->dummy_page);
702 701
703 /* alloc refill memory */ 702 /* alloc refill memory */
704 omap_dmm->refill_va = dma_alloc_writecombine(&dev->dev, 703 omap_dmm->refill_va = dma_alloc_wc(&dev->dev,
705 REFILL_BUFFER_SIZE * omap_dmm->num_engines, 704 REFILL_BUFFER_SIZE * omap_dmm->num_engines,
706 &omap_dmm->refill_pa, GFP_KERNEL); 705 &omap_dmm->refill_pa, GFP_KERNEL);
707 if (!omap_dmm->refill_va) { 706 if (!omap_dmm->refill_va) {
708 dev_err(&dev->dev, "could not allocate refill memory\n"); 707 dev_err(&dev->dev, "could not allocate refill memory\n");
709 goto fail; 708 goto fail;
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
index 8495a1a4b617..359b0d7e8ef7 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -1330,8 +1330,8 @@ void omap_gem_free_object(struct drm_gem_object *obj)
1330 omap_gem_detach_pages(obj); 1330 omap_gem_detach_pages(obj);
1331 1331
1332 if (!is_shmem(obj)) { 1332 if (!is_shmem(obj)) {
1333 dma_free_writecombine(dev->dev, obj->size, 1333 dma_free_wc(dev->dev, obj->size, omap_obj->vaddr,
1334 omap_obj->vaddr, omap_obj->paddr); 1334 omap_obj->paddr);
1335 } else if (omap_obj->vaddr) { 1335 } else if (omap_obj->vaddr) {
1336 vunmap(omap_obj->vaddr); 1336 vunmap(omap_obj->vaddr);
1337 } 1337 }
@@ -1395,8 +1395,8 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
1395 /* attempt to allocate contiguous memory if we don't 1395 /* attempt to allocate contiguous memory if we don't
1396 * have DMM for remappign discontiguous buffers 1396 * have DMM for remappign discontiguous buffers
1397 */ 1397 */
1398 omap_obj->vaddr = dma_alloc_writecombine(dev->dev, size, 1398 omap_obj->vaddr = dma_alloc_wc(dev->dev, size,
1399 &omap_obj->paddr, GFP_KERNEL); 1399 &omap_obj->paddr, GFP_KERNEL);
1400 if (!omap_obj->vaddr) { 1400 if (!omap_obj->vaddr) {
1401 kfree(omap_obj); 1401 kfree(omap_obj);
1402 1402
diff --git a/drivers/gpu/drm/sti/sti_cursor.c b/drivers/gpu/drm/sti/sti_cursor.c
index 807863106b8d..bd736ace3f81 100644
--- a/drivers/gpu/drm/sti/sti_cursor.c
+++ b/drivers/gpu/drm/sti/sti_cursor.c
@@ -157,17 +157,15 @@ static void sti_cursor_atomic_update(struct drm_plane *drm_plane,
157 cursor->height = src_h; 157 cursor->height = src_h;
158 158
159 if (cursor->pixmap.base) 159 if (cursor->pixmap.base)
160 dma_free_writecombine(cursor->dev, 160 dma_free_wc(cursor->dev, cursor->pixmap.size,
161 cursor->pixmap.size, 161 cursor->pixmap.base, cursor->pixmap.paddr);
162 cursor->pixmap.base,
163 cursor->pixmap.paddr);
164 162
165 cursor->pixmap.size = cursor->width * cursor->height; 163 cursor->pixmap.size = cursor->width * cursor->height;
166 164
167 cursor->pixmap.base = dma_alloc_writecombine(cursor->dev, 165 cursor->pixmap.base = dma_alloc_wc(cursor->dev,
168 cursor->pixmap.size, 166 cursor->pixmap.size,
169 &cursor->pixmap.paddr, 167 &cursor->pixmap.paddr,
170 GFP_KERNEL | GFP_DMA); 168 GFP_KERNEL | GFP_DMA);
171 if (!cursor->pixmap.base) { 169 if (!cursor->pixmap.base) {
172 DRM_ERROR("Failed to allocate memory for pixmap\n"); 170 DRM_ERROR("Failed to allocate memory for pixmap\n");
173 return; 171 return;
@@ -252,8 +250,8 @@ struct drm_plane *sti_cursor_create(struct drm_device *drm_dev,
252 250
253 /* Allocate clut buffer */ 251 /* Allocate clut buffer */
254 size = 0x100 * sizeof(unsigned short); 252 size = 0x100 * sizeof(unsigned short);
255 cursor->clut = dma_alloc_writecombine(dev, size, &cursor->clut_paddr, 253 cursor->clut = dma_alloc_wc(dev, size, &cursor->clut_paddr,
256 GFP_KERNEL | GFP_DMA); 254 GFP_KERNEL | GFP_DMA);
257 255
258 if (!cursor->clut) { 256 if (!cursor->clut) {
259 DRM_ERROR("Failed to allocate memory for cursor clut\n"); 257 DRM_ERROR("Failed to allocate memory for cursor clut\n");
@@ -286,7 +284,7 @@ struct drm_plane *sti_cursor_create(struct drm_device *drm_dev,
286 return &cursor->plane.drm_plane; 284 return &cursor->plane.drm_plane;
287 285
288err_plane: 286err_plane:
289 dma_free_writecombine(dev, size, cursor->clut, cursor->clut_paddr); 287 dma_free_wc(dev, size, cursor->clut, cursor->clut_paddr);
290err_clut: 288err_clut:
291 devm_kfree(dev, cursor); 289 devm_kfree(dev, cursor);
292 return NULL; 290 return NULL;
diff --git a/drivers/gpu/drm/sti/sti_gdp.c b/drivers/gpu/drm/sti/sti_gdp.c
index f9a1d92c9d95..514551c857bb 100644
--- a/drivers/gpu/drm/sti/sti_gdp.c
+++ b/drivers/gpu/drm/sti/sti_gdp.c
@@ -312,8 +312,7 @@ static void sti_gdp_init(struct sti_gdp *gdp)
312 /* Allocate all the nodes within a single memory page */ 312 /* Allocate all the nodes within a single memory page */
313 size = sizeof(struct sti_gdp_node) * 313 size = sizeof(struct sti_gdp_node) *
314 GDP_NODE_PER_FIELD * GDP_NODE_NB_BANK; 314 GDP_NODE_PER_FIELD * GDP_NODE_NB_BANK;
315 base = dma_alloc_writecombine(gdp->dev, 315 base = dma_alloc_wc(gdp->dev, size, &dma_addr, GFP_KERNEL | GFP_DMA);
316 size, &dma_addr, GFP_KERNEL | GFP_DMA);
317 316
318 if (!base) { 317 if (!base) {
319 DRM_ERROR("Failed to allocate memory for GDP node\n"); 318 DRM_ERROR("Failed to allocate memory for GDP node\n");
diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c
index 43861b52261d..1d3c3d029603 100644
--- a/drivers/gpu/drm/sti/sti_hqvdp.c
+++ b/drivers/gpu/drm/sti/sti_hqvdp.c
@@ -617,9 +617,9 @@ static void sti_hqvdp_init(struct sti_hqvdp *hqvdp)
617 617
618 /* Allocate memory for the VDP commands */ 618 /* Allocate memory for the VDP commands */
619 size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd); 619 size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd);
620 hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size, 620 hqvdp->hqvdp_cmd = dma_alloc_wc(hqvdp->dev, size,
621 &hqvdp->hqvdp_cmd_paddr, 621 &hqvdp->hqvdp_cmd_paddr,
622 GFP_KERNEL | GFP_DMA); 622 GFP_KERNEL | GFP_DMA);
623 if (!hqvdp->hqvdp_cmd) { 623 if (!hqvdp->hqvdp_cmd) {
624 DRM_ERROR("Failed to allocate memory for VDP cmd\n"); 624 DRM_ERROR("Failed to allocate memory for VDP cmd\n");
625 return; 625 return;
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index 33add93b4ed9..3b0d8c392b70 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -175,8 +175,7 @@ static void tegra_bo_free(struct drm_device *drm, struct tegra_bo *bo)
175 sg_free_table(bo->sgt); 175 sg_free_table(bo->sgt);
176 kfree(bo->sgt); 176 kfree(bo->sgt);
177 } else if (bo->vaddr) { 177 } else if (bo->vaddr) {
178 dma_free_writecombine(drm->dev, bo->gem.size, bo->vaddr, 178 dma_free_wc(drm->dev, bo->gem.size, bo->vaddr, bo->paddr);
179 bo->paddr);
180 } 179 }
181} 180}
182 181
@@ -233,8 +232,8 @@ static int tegra_bo_alloc(struct drm_device *drm, struct tegra_bo *bo)
233 } else { 232 } else {
234 size_t size = bo->gem.size; 233 size_t size = bo->gem.size;
235 234
236 bo->vaddr = dma_alloc_writecombine(drm->dev, size, &bo->paddr, 235 bo->vaddr = dma_alloc_wc(drm->dev, size, &bo->paddr,
237 GFP_KERNEL | __GFP_NOWARN); 236 GFP_KERNEL | __GFP_NOWARN);
238 if (!bo->vaddr) { 237 if (!bo->vaddr) {
239 dev_err(drm->dev, 238 dev_err(drm->dev,
240 "failed to allocate buffer of size %zu\n", 239 "failed to allocate buffer of size %zu\n",
@@ -472,8 +471,8 @@ int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma)
472 vma->vm_flags &= ~VM_PFNMAP; 471 vma->vm_flags &= ~VM_PFNMAP;
473 vma->vm_pgoff = 0; 472 vma->vm_pgoff = 0;
474 473
475 ret = dma_mmap_writecombine(gem->dev->dev, vma, bo->vaddr, 474 ret = dma_mmap_wc(gem->dev->dev, vma, bo->vaddr, bo->paddr,
476 bo->paddr, gem->size); 475 gem->size);
477 if (ret) { 476 if (ret) {
478 drm_gem_vm_close(vma); 477 drm_gem_vm_close(vma);
479 return ret; 478 return ret;
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index 22278bcfc60e..034ef2de9037 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -398,9 +398,8 @@ int vc4_mmap(struct file *filp, struct vm_area_struct *vma)
398 vma->vm_flags &= ~VM_PFNMAP; 398 vma->vm_flags &= ~VM_PFNMAP;
399 vma->vm_pgoff = 0; 399 vma->vm_pgoff = 0;
400 400
401 ret = dma_mmap_writecombine(bo->base.base.dev->dev, vma, 401 ret = dma_mmap_wc(bo->base.base.dev->dev, vma, bo->base.vaddr,
402 bo->base.vaddr, bo->base.paddr, 402 bo->base.paddr, vma->vm_end - vma->vm_start);
403 vma->vm_end - vma->vm_start);
404 if (ret) 403 if (ret)
405 drm_gem_vm_close(vma); 404 drm_gem_vm_close(vma);
406 405
diff --git a/drivers/gpu/host1x/cdma.c b/drivers/gpu/host1x/cdma.c
index 5a8c8d55317a..a18db4d5347c 100644
--- a/drivers/gpu/host1x/cdma.c
+++ b/drivers/gpu/host1x/cdma.c
@@ -52,8 +52,8 @@ static void host1x_pushbuffer_destroy(struct push_buffer *pb)
52 struct host1x *host1x = cdma_to_host1x(cdma); 52 struct host1x *host1x = cdma_to_host1x(cdma);
53 53
54 if (pb->phys != 0) 54 if (pb->phys != 0)
55 dma_free_writecombine(host1x->dev, pb->size_bytes + 4, 55 dma_free_wc(host1x->dev, pb->size_bytes + 4, pb->mapped,
56 pb->mapped, pb->phys); 56 pb->phys);
57 57
58 pb->mapped = NULL; 58 pb->mapped = NULL;
59 pb->phys = 0; 59 pb->phys = 0;
@@ -76,8 +76,8 @@ static int host1x_pushbuffer_init(struct push_buffer *pb)
76 pb->pos = 0; 76 pb->pos = 0;
77 77
78 /* allocate and map pushbuffer memory */ 78 /* allocate and map pushbuffer memory */
79 pb->mapped = dma_alloc_writecombine(host1x->dev, pb->size_bytes + 4, 79 pb->mapped = dma_alloc_wc(host1x->dev, pb->size_bytes + 4, &pb->phys,
80 &pb->phys, GFP_KERNEL); 80 GFP_KERNEL);
81 if (!pb->mapped) 81 if (!pb->mapped)
82 goto fail; 82 goto fail;
83 83
diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c
index 63bd63f3c7df..defa7995f213 100644
--- a/drivers/gpu/host1x/job.c
+++ b/drivers/gpu/host1x/job.c
@@ -467,9 +467,8 @@ static inline int copy_gathers(struct host1x_job *job, struct device *dev)
467 size += g->words * sizeof(u32); 467 size += g->words * sizeof(u32);
468 } 468 }
469 469
470 job->gather_copy_mapped = dma_alloc_writecombine(dev, size, 470 job->gather_copy_mapped = dma_alloc_wc(dev, size, &job->gather_copy,
471 &job->gather_copy, 471 GFP_KERNEL);
472 GFP_KERNEL);
473 if (!job->gather_copy_mapped) { 472 if (!job->gather_copy_mapped) {
474 job->gather_copy_mapped = NULL; 473 job->gather_copy_mapped = NULL;
475 return -ENOMEM; 474 return -ENOMEM;
@@ -578,9 +577,8 @@ void host1x_job_unpin(struct host1x_job *job)
578 job->num_unpins = 0; 577 job->num_unpins = 0;
579 578
580 if (job->gather_copy_size) 579 if (job->gather_copy_size)
581 dma_free_writecombine(job->channel->dev, job->gather_copy_size, 580 dma_free_wc(job->channel->dev, job->gather_copy_size,
582 job->gather_copy_mapped, 581 job->gather_copy_mapped, job->gather_copy);
583 job->gather_copy);
584} 582}
585EXPORT_SYMBOL(host1x_job_unpin); 583EXPORT_SYMBOL(host1x_job_unpin);
586 584
diff --git a/drivers/media/platform/coda/coda-bit.c b/drivers/media/platform/coda/coda-bit.c
index 7d28899f89ce..38aacc7fc692 100644
--- a/drivers/media/platform/coda/coda-bit.c
+++ b/drivers/media/platform/coda/coda-bit.c
@@ -1455,9 +1455,9 @@ static int coda_alloc_bitstream_buffer(struct coda_ctx *ctx,
1455 return 0; 1455 return 0;
1456 1456
1457 ctx->bitstream.size = roundup_pow_of_two(q_data->sizeimage * 2); 1457 ctx->bitstream.size = roundup_pow_of_two(q_data->sizeimage * 2);
1458 ctx->bitstream.vaddr = dma_alloc_writecombine( 1458 ctx->bitstream.vaddr = dma_alloc_wc(&ctx->dev->plat_dev->dev,
1459 &ctx->dev->plat_dev->dev, ctx->bitstream.size, 1459 ctx->bitstream.size,
1460 &ctx->bitstream.paddr, GFP_KERNEL); 1460 &ctx->bitstream.paddr, GFP_KERNEL);
1461 if (!ctx->bitstream.vaddr) { 1461 if (!ctx->bitstream.vaddr) {
1462 v4l2_err(&ctx->dev->v4l2_dev, 1462 v4l2_err(&ctx->dev->v4l2_dev,
1463 "failed to allocate bitstream ringbuffer"); 1463 "failed to allocate bitstream ringbuffer");
@@ -1474,8 +1474,8 @@ static void coda_free_bitstream_buffer(struct coda_ctx *ctx)
1474 if (ctx->bitstream.vaddr == NULL) 1474 if (ctx->bitstream.vaddr == NULL)
1475 return; 1475 return;
1476 1476
1477 dma_free_writecombine(&ctx->dev->plat_dev->dev, ctx->bitstream.size, 1477 dma_free_wc(&ctx->dev->plat_dev->dev, ctx->bitstream.size,
1478 ctx->bitstream.vaddr, ctx->bitstream.paddr); 1478 ctx->bitstream.vaddr, ctx->bitstream.paddr);
1479 ctx->bitstream.vaddr = NULL; 1479 ctx->bitstream.vaddr = NULL;
1480 kfifo_init(&ctx->bitstream_fifo, NULL, 0); 1480 kfifo_init(&ctx->bitstream_fifo, NULL, 0);
1481} 1481}
diff --git a/drivers/video/fbdev/acornfb.c b/drivers/video/fbdev/acornfb.c
index a305caea58ee..fb75b7e5a19a 100644
--- a/drivers/video/fbdev/acornfb.c
+++ b/drivers/video/fbdev/acornfb.c
@@ -1040,8 +1040,8 @@ static int acornfb_probe(struct platform_device *dev)
1040 * for the framebuffer if we are not using 1040 * for the framebuffer if we are not using
1041 * VRAM. 1041 * VRAM.
1042 */ 1042 */
1043 base = dma_alloc_writecombine(current_par.dev, size, &handle, 1043 base = dma_alloc_wc(current_par.dev, size, &handle,
1044 GFP_KERNEL); 1044 GFP_KERNEL);
1045 if (base == NULL) { 1045 if (base == NULL) {
1046 printk(KERN_ERR "acornfb: unable to allocate screen " 1046 printk(KERN_ERR "acornfb: unable to allocate screen "
1047 "memory\n"); 1047 "memory\n");
diff --git a/drivers/video/fbdev/amba-clcd-versatile.c b/drivers/video/fbdev/amba-clcd-versatile.c
index 7a8afcd4573e..a8a22daa3f9d 100644
--- a/drivers/video/fbdev/amba-clcd-versatile.c
+++ b/drivers/video/fbdev/amba-clcd-versatile.c
@@ -154,8 +154,8 @@ int versatile_clcd_setup_dma(struct clcd_fb *fb, unsigned long framesize)
154{ 154{
155 dma_addr_t dma; 155 dma_addr_t dma;
156 156
157 fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, framesize, 157 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, framesize, &dma,
158 &dma, GFP_KERNEL); 158 GFP_KERNEL);
159 if (!fb->fb.screen_base) { 159 if (!fb->fb.screen_base) {
160 pr_err("CLCD: unable to map framebuffer\n"); 160 pr_err("CLCD: unable to map framebuffer\n");
161 return -ENOMEM; 161 return -ENOMEM;
@@ -169,14 +169,12 @@ int versatile_clcd_setup_dma(struct clcd_fb *fb, unsigned long framesize)
169 169
170int versatile_clcd_mmap_dma(struct clcd_fb *fb, struct vm_area_struct *vma) 170int versatile_clcd_mmap_dma(struct clcd_fb *fb, struct vm_area_struct *vma)
171{ 171{
172 return dma_mmap_writecombine(&fb->dev->dev, vma, 172 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
173 fb->fb.screen_base, 173 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
174 fb->fb.fix.smem_start,
175 fb->fb.fix.smem_len);
176} 174}
177 175
178void versatile_clcd_remove_dma(struct clcd_fb *fb) 176void versatile_clcd_remove_dma(struct clcd_fb *fb)
179{ 177{
180 dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len, 178 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base,
181 fb->fb.screen_base, fb->fb.fix.smem_start); 179 fb->fb.fix.smem_start);
182} 180}
diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c
index 9362424c2340..fe274b5851c7 100644
--- a/drivers/video/fbdev/amba-clcd.c
+++ b/drivers/video/fbdev/amba-clcd.c
@@ -774,8 +774,8 @@ static int clcdfb_of_dma_setup(struct clcd_fb *fb)
774 774
775static int clcdfb_of_dma_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) 775static int clcdfb_of_dma_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
776{ 776{
777 return dma_mmap_writecombine(&fb->dev->dev, vma, fb->fb.screen_base, 777 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
778 fb->fb.fix.smem_start, fb->fb.fix.smem_len); 778 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
779} 779}
780 780
781static void clcdfb_of_dma_remove(struct clcd_fb *fb) 781static void clcdfb_of_dma_remove(struct clcd_fb *fb)
diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c
index 19eb42b57d87..56c60e67316a 100644
--- a/drivers/video/fbdev/atmel_lcdfb.c
+++ b/drivers/video/fbdev/atmel_lcdfb.c
@@ -414,8 +414,8 @@ static inline void atmel_lcdfb_free_video_memory(struct atmel_lcdfb_info *sinfo)
414{ 414{
415 struct fb_info *info = sinfo->info; 415 struct fb_info *info = sinfo->info;
416 416
417 dma_free_writecombine(info->device, info->fix.smem_len, 417 dma_free_wc(info->device, info->fix.smem_len, info->screen_base,
418 info->screen_base, info->fix.smem_start); 418 info->fix.smem_start);
419} 419}
420 420
421/** 421/**
@@ -435,8 +435,9 @@ static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
435 * ((var->bits_per_pixel + 7) / 8)); 435 * ((var->bits_per_pixel + 7) / 8));
436 info->fix.smem_len = max(smem_len, sinfo->smem_len); 436 info->fix.smem_len = max(smem_len, sinfo->smem_len);
437 437
438 info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len, 438 info->screen_base = dma_alloc_wc(info->device, info->fix.smem_len,
439 (dma_addr_t *)&info->fix.smem_start, GFP_KERNEL); 439 (dma_addr_t *)&info->fix.smem_start,
440 GFP_KERNEL);
440 441
441 if (!info->screen_base) { 442 if (!info->screen_base) {
442 return -ENOMEM; 443 return -ENOMEM;
diff --git a/drivers/video/fbdev/ep93xx-fb.c b/drivers/video/fbdev/ep93xx-fb.c
index 5b1081030cbb..75f0db25d19f 100644
--- a/drivers/video/fbdev/ep93xx-fb.c
+++ b/drivers/video/fbdev/ep93xx-fb.c
@@ -316,9 +316,8 @@ static int ep93xxfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
316 unsigned int offset = vma->vm_pgoff << PAGE_SHIFT; 316 unsigned int offset = vma->vm_pgoff << PAGE_SHIFT;
317 317
318 if (offset < info->fix.smem_len) { 318 if (offset < info->fix.smem_len) {
319 return dma_mmap_writecombine(info->dev, vma, info->screen_base, 319 return dma_mmap_wc(info->dev, vma, info->screen_base,
320 info->fix.smem_start, 320 info->fix.smem_start, info->fix.smem_len);
321 info->fix.smem_len);
322 } 321 }
323 322
324 return -EINVAL; 323 return -EINVAL;
@@ -428,8 +427,7 @@ static int ep93xxfb_alloc_videomem(struct fb_info *info)
428 /* Maximum 16bpp -> used memory is maximum x*y*2 bytes */ 427 /* Maximum 16bpp -> used memory is maximum x*y*2 bytes */
429 fb_size = EP93XXFB_MAX_XRES * EP93XXFB_MAX_YRES * 2; 428 fb_size = EP93XXFB_MAX_XRES * EP93XXFB_MAX_YRES * 2;
430 429
431 virt_addr = dma_alloc_writecombine(info->dev, fb_size, 430 virt_addr = dma_alloc_wc(info->dev, fb_size, &phys_addr, GFP_KERNEL);
432 &phys_addr, GFP_KERNEL);
433 if (!virt_addr) 431 if (!virt_addr)
434 return -ENOMEM; 432 return -ENOMEM;
435 433
diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c
index b63d55f481fa..1a242b1338e9 100644
--- a/drivers/video/fbdev/gbefb.c
+++ b/drivers/video/fbdev/gbefb.c
@@ -1185,8 +1185,8 @@ static int gbefb_probe(struct platform_device *p_dev)
1185 } else { 1185 } else {
1186 /* try to allocate memory with the classical allocator 1186 /* try to allocate memory with the classical allocator
1187 * this has high chance to fail on low memory machines */ 1187 * this has high chance to fail on low memory machines */
1188 gbe_mem = dma_alloc_writecombine(NULL, gbe_mem_size, 1188 gbe_mem = dma_alloc_wc(NULL, gbe_mem_size, &gbe_dma_addr,
1189 &gbe_dma_addr, GFP_KERNEL); 1189 GFP_KERNEL);
1190 if (!gbe_mem) { 1190 if (!gbe_mem) {
1191 printk(KERN_ERR "gbefb: couldn't allocate framebuffer memory\n"); 1191 printk(KERN_ERR "gbefb: couldn't allocate framebuffer memory\n");
1192 ret = -ENOMEM; 1192 ret = -ENOMEM;
@@ -1238,7 +1238,7 @@ static int gbefb_probe(struct platform_device *p_dev)
1238out_gbe_unmap: 1238out_gbe_unmap:
1239 arch_phys_wc_del(par->wc_cookie); 1239 arch_phys_wc_del(par->wc_cookie);
1240 if (gbe_dma_addr) 1240 if (gbe_dma_addr)
1241 dma_free_writecombine(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); 1241 dma_free_wc(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys);
1242out_tiles_free: 1242out_tiles_free:
1243 dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t), 1243 dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t),
1244 (void *)gbe_tiles.cpu, gbe_tiles.dma); 1244 (void *)gbe_tiles.cpu, gbe_tiles.dma);
@@ -1259,7 +1259,7 @@ static int gbefb_remove(struct platform_device* p_dev)
1259 gbe_turn_off(); 1259 gbe_turn_off();
1260 arch_phys_wc_del(par->wc_cookie); 1260 arch_phys_wc_del(par->wc_cookie);
1261 if (gbe_dma_addr) 1261 if (gbe_dma_addr)
1262 dma_free_writecombine(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys); 1262 dma_free_wc(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys);
1263 dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t), 1263 dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t),
1264 (void *)gbe_tiles.cpu, gbe_tiles.dma); 1264 (void *)gbe_tiles.cpu, gbe_tiles.dma);
1265 release_mem_region(GBE_BASE, sizeof(struct sgi_gbe)); 1265 release_mem_region(GBE_BASE, sizeof(struct sgi_gbe));
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index bb2f1e866020..76b6a7784b06 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -937,8 +937,8 @@ static int imxfb_probe(struct platform_device *pdev)
937 } 937 }
938 938
939 fbi->map_size = PAGE_ALIGN(info->fix.smem_len); 939 fbi->map_size = PAGE_ALIGN(info->fix.smem_len);
940 info->screen_base = dma_alloc_writecombine(&pdev->dev, fbi->map_size, 940 info->screen_base = dma_alloc_wc(&pdev->dev, fbi->map_size,
941 &fbi->map_dma, GFP_KERNEL); 941 &fbi->map_dma, GFP_KERNEL);
942 942
943 if (!info->screen_base) { 943 if (!info->screen_base) {
944 dev_err(&pdev->dev, "Failed to allocate video RAM: %d\n", ret); 944 dev_err(&pdev->dev, "Failed to allocate video RAM: %d\n", ret);
@@ -1005,8 +1005,8 @@ failed_cmap:
1005 if (pdata && pdata->exit) 1005 if (pdata && pdata->exit)
1006 pdata->exit(fbi->pdev); 1006 pdata->exit(fbi->pdev);
1007failed_platform_init: 1007failed_platform_init:
1008 dma_free_writecombine(&pdev->dev, fbi->map_size, info->screen_base, 1008 dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base,
1009 fbi->map_dma); 1009 fbi->map_dma);
1010failed_map: 1010failed_map:
1011 iounmap(fbi->regs); 1011 iounmap(fbi->regs);
1012failed_ioremap: 1012failed_ioremap:
@@ -1041,8 +1041,8 @@ static int imxfb_remove(struct platform_device *pdev)
1041 kfree(info->pseudo_palette); 1041 kfree(info->pseudo_palette);
1042 framebuffer_release(info); 1042 framebuffer_release(info);
1043 1043
1044 dma_free_writecombine(&pdev->dev, fbi->map_size, info->screen_base, 1044 dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base,
1045 fbi->map_dma); 1045 fbi->map_dma);
1046 1046
1047 iounmap(fbi->regs); 1047 iounmap(fbi->regs);
1048 release_mem_region(res->start, resource_size(res)); 1048 release_mem_region(res->start, resource_size(res));
diff --git a/drivers/video/fbdev/mx3fb.c b/drivers/video/fbdev/mx3fb.c
index 7947634ee6b0..f91b1db262b0 100644
--- a/drivers/video/fbdev/mx3fb.c
+++ b/drivers/video/fbdev/mx3fb.c
@@ -1336,9 +1336,8 @@ static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len,
1336 int retval = 0; 1336 int retval = 0;
1337 dma_addr_t addr; 1337 dma_addr_t addr;
1338 1338
1339 fbi->screen_base = dma_alloc_writecombine(fbi->device, 1339 fbi->screen_base = dma_alloc_wc(fbi->device, mem_len, &addr,
1340 mem_len, 1340 GFP_DMA | GFP_KERNEL);
1341 &addr, GFP_DMA | GFP_KERNEL);
1342 1341
1343 if (!fbi->screen_base) { 1342 if (!fbi->screen_base) {
1344 dev_err(fbi->device, "Cannot allocate %u bytes framebuffer memory\n", 1343 dev_err(fbi->device, "Cannot allocate %u bytes framebuffer memory\n",
@@ -1378,8 +1377,8 @@ err0:
1378 */ 1377 */
1379static int mx3fb_unmap_video_memory(struct fb_info *fbi) 1378static int mx3fb_unmap_video_memory(struct fb_info *fbi)
1380{ 1379{
1381 dma_free_writecombine(fbi->device, fbi->fix.smem_len, 1380 dma_free_wc(fbi->device, fbi->fix.smem_len, fbi->screen_base,
1382 fbi->screen_base, fbi->fix.smem_start); 1381 fbi->fix.smem_start);
1383 1382
1384 fbi->screen_base = NULL; 1383 fbi->screen_base = NULL;
1385 mutex_lock(&fbi->mm_lock); 1384 mutex_lock(&fbi->mm_lock);
diff --git a/drivers/video/fbdev/nuc900fb.c b/drivers/video/fbdev/nuc900fb.c
index 389fa2cbb713..6680edae4696 100644
--- a/drivers/video/fbdev/nuc900fb.c
+++ b/drivers/video/fbdev/nuc900fb.c
@@ -396,8 +396,8 @@ static int nuc900fb_map_video_memory(struct fb_info *info)
396 dev_dbg(fbi->dev, "nuc900fb_map_video_memory(fbi=%p) map_size %lu\n", 396 dev_dbg(fbi->dev, "nuc900fb_map_video_memory(fbi=%p) map_size %lu\n",
397 fbi, map_size); 397 fbi, map_size);
398 398
399 info->screen_base = dma_alloc_writecombine(fbi->dev, map_size, 399 info->screen_base = dma_alloc_wc(fbi->dev, map_size, &map_dma,
400 &map_dma, GFP_KERNEL); 400 GFP_KERNEL);
401 401
402 if (!info->screen_base) 402 if (!info->screen_base)
403 return -ENOMEM; 403 return -ENOMEM;
@@ -411,8 +411,8 @@ static int nuc900fb_map_video_memory(struct fb_info *info)
411static inline void nuc900fb_unmap_video_memory(struct fb_info *info) 411static inline void nuc900fb_unmap_video_memory(struct fb_info *info)
412{ 412{
413 struct nuc900fb_info *fbi = info->par; 413 struct nuc900fb_info *fbi = info->par;
414 dma_free_writecombine(fbi->dev, PAGE_ALIGN(info->fix.smem_len), 414 dma_free_wc(fbi->dev, PAGE_ALIGN(info->fix.smem_len),
415 info->screen_base, info->fix.smem_start); 415 info->screen_base, info->fix.smem_start);
416} 416}
417 417
418static irqreturn_t nuc900fb_irqhandler(int irq, void *dev_id) 418static irqreturn_t nuc900fb_irqhandler(int irq, void *dev_id)
diff --git a/drivers/video/fbdev/omap/lcdc.c b/drivers/video/fbdev/omap/lcdc.c
index 6efa2591eaa8..e3d9b9ea5498 100644
--- a/drivers/video/fbdev/omap/lcdc.c
+++ b/drivers/video/fbdev/omap/lcdc.c
@@ -612,8 +612,8 @@ static void lcdc_dma_handler(u16 status, void *data)
612 612
613static int alloc_palette_ram(void) 613static int alloc_palette_ram(void)
614{ 614{
615 lcdc.palette_virt = dma_alloc_writecombine(lcdc.fbdev->dev, 615 lcdc.palette_virt = dma_alloc_wc(lcdc.fbdev->dev, MAX_PALETTE_SIZE,
616 MAX_PALETTE_SIZE, &lcdc.palette_phys, GFP_KERNEL); 616 &lcdc.palette_phys, GFP_KERNEL);
617 if (lcdc.palette_virt == NULL) { 617 if (lcdc.palette_virt == NULL) {
618 dev_err(lcdc.fbdev->dev, "failed to alloc palette memory\n"); 618 dev_err(lcdc.fbdev->dev, "failed to alloc palette memory\n");
619 return -ENOMEM; 619 return -ENOMEM;
@@ -625,8 +625,8 @@ static int alloc_palette_ram(void)
625 625
626static void free_palette_ram(void) 626static void free_palette_ram(void)
627{ 627{
628 dma_free_writecombine(lcdc.fbdev->dev, MAX_PALETTE_SIZE, 628 dma_free_wc(lcdc.fbdev->dev, MAX_PALETTE_SIZE, lcdc.palette_virt,
629 lcdc.palette_virt, lcdc.palette_phys); 629 lcdc.palette_phys);
630} 630}
631 631
632static int alloc_fbmem(struct omapfb_mem_region *region) 632static int alloc_fbmem(struct omapfb_mem_region *region)
@@ -642,8 +642,8 @@ static int alloc_fbmem(struct omapfb_mem_region *region)
642 if (region->size > frame_size) 642 if (region->size > frame_size)
643 frame_size = region->size; 643 frame_size = region->size;
644 lcdc.vram_size = frame_size; 644 lcdc.vram_size = frame_size;
645 lcdc.vram_virt = dma_alloc_writecombine(lcdc.fbdev->dev, 645 lcdc.vram_virt = dma_alloc_wc(lcdc.fbdev->dev, lcdc.vram_size,
646 lcdc.vram_size, &lcdc.vram_phys, GFP_KERNEL); 646 &lcdc.vram_phys, GFP_KERNEL);
647 if (lcdc.vram_virt == NULL) { 647 if (lcdc.vram_virt == NULL) {
648 dev_err(lcdc.fbdev->dev, "unable to allocate FB DMA memory\n"); 648 dev_err(lcdc.fbdev->dev, "unable to allocate FB DMA memory\n");
649 return -ENOMEM; 649 return -ENOMEM;
@@ -660,8 +660,8 @@ static int alloc_fbmem(struct omapfb_mem_region *region)
660 660
661static void free_fbmem(void) 661static void free_fbmem(void)
662{ 662{
663 dma_free_writecombine(lcdc.fbdev->dev, lcdc.vram_size, 663 dma_free_wc(lcdc.fbdev->dev, lcdc.vram_size, lcdc.vram_virt,
664 lcdc.vram_virt, lcdc.vram_phys); 664 lcdc.vram_phys);
665} 665}
666 666
667static int setup_fbmem(struct omapfb_mem_desc *req_md) 667static int setup_fbmem(struct omapfb_mem_desc *req_md)
diff --git a/drivers/video/fbdev/pxa168fb.c b/drivers/video/fbdev/pxa168fb.c
index efb57c059997..def3a501acd6 100644
--- a/drivers/video/fbdev/pxa168fb.c
+++ b/drivers/video/fbdev/pxa168fb.c
@@ -680,8 +680,8 @@ static int pxa168fb_probe(struct platform_device *pdev)
680 */ 680 */
681 info->fix.smem_len = PAGE_ALIGN(DEFAULT_FB_SIZE); 681 info->fix.smem_len = PAGE_ALIGN(DEFAULT_FB_SIZE);
682 682
683 info->screen_base = dma_alloc_writecombine(fbi->dev, info->fix.smem_len, 683 info->screen_base = dma_alloc_wc(fbi->dev, info->fix.smem_len,
684 &fbi->fb_start_dma, GFP_KERNEL); 684 &fbi->fb_start_dma, GFP_KERNEL);
685 if (info->screen_base == NULL) { 685 if (info->screen_base == NULL) {
686 ret = -ENOMEM; 686 ret = -ENOMEM;
687 goto failed_free_info; 687 goto failed_free_info;
@@ -804,8 +804,8 @@ static int pxa168fb_remove(struct platform_device *pdev)
804 804
805 irq = platform_get_irq(pdev, 0); 805 irq = platform_get_irq(pdev, 0);
806 806
807 dma_free_writecombine(fbi->dev, PAGE_ALIGN(info->fix.smem_len), 807 dma_free_wc(fbi->dev, PAGE_ALIGN(info->fix.smem_len),
808 info->screen_base, info->fix.smem_start); 808 info->screen_base, info->fix.smem_start);
809 809
810 clk_disable(fbi->clk); 810 clk_disable(fbi->clk);
811 811
diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c
index 33b2bb315a2a..2c0487f4f805 100644
--- a/drivers/video/fbdev/pxafb.c
+++ b/drivers/video/fbdev/pxafb.c
@@ -2446,8 +2446,8 @@ static int pxafb_remove(struct platform_device *dev)
2446 2446
2447 free_pages_exact(fbi->video_mem, fbi->video_mem_size); 2447 free_pages_exact(fbi->video_mem, fbi->video_mem_size);
2448 2448
2449 dma_free_writecombine(&dev->dev, fbi->dma_buff_size, 2449 dma_free_wc(&dev->dev, fbi->dma_buff_size, fbi->dma_buff,
2450 fbi->dma_buff, fbi->dma_buff_phys); 2450 fbi->dma_buff_phys);
2451 2451
2452 iounmap(fbi->mmio_base); 2452 iounmap(fbi->mmio_base);
2453 2453
diff --git a/drivers/video/fbdev/s3c-fb.c b/drivers/video/fbdev/s3c-fb.c
index f72dd12456f9..5f4f696c2ecf 100644
--- a/drivers/video/fbdev/s3c-fb.c
+++ b/drivers/video/fbdev/s3c-fb.c
@@ -1105,8 +1105,7 @@ static int s3c_fb_alloc_memory(struct s3c_fb *sfb, struct s3c_fb_win *win)
1105 1105
1106 dev_dbg(sfb->dev, "want %u bytes for window\n", size); 1106 dev_dbg(sfb->dev, "want %u bytes for window\n", size);
1107 1107
1108 fbi->screen_base = dma_alloc_writecombine(sfb->dev, size, 1108 fbi->screen_base = dma_alloc_wc(sfb->dev, size, &map_dma, GFP_KERNEL);
1109 &map_dma, GFP_KERNEL);
1110 if (!fbi->screen_base) 1109 if (!fbi->screen_base)
1111 return -ENOMEM; 1110 return -ENOMEM;
1112 1111
@@ -1131,8 +1130,8 @@ static void s3c_fb_free_memory(struct s3c_fb *sfb, struct s3c_fb_win *win)
1131 struct fb_info *fbi = win->fbinfo; 1130 struct fb_info *fbi = win->fbinfo;
1132 1131
1133 if (fbi->screen_base) 1132 if (fbi->screen_base)
1134 dma_free_writecombine(sfb->dev, PAGE_ALIGN(fbi->fix.smem_len), 1133 dma_free_wc(sfb->dev, PAGE_ALIGN(fbi->fix.smem_len),
1135 fbi->screen_base, fbi->fix.smem_start); 1134 fbi->screen_base, fbi->fix.smem_start);
1136} 1135}
1137 1136
1138/** 1137/**
diff --git a/drivers/video/fbdev/s3c2410fb.c b/drivers/video/fbdev/s3c2410fb.c
index d6704add1601..0dd86be36afb 100644
--- a/drivers/video/fbdev/s3c2410fb.c
+++ b/drivers/video/fbdev/s3c2410fb.c
@@ -645,8 +645,8 @@ static int s3c2410fb_map_video_memory(struct fb_info *info)
645 645
646 dprintk("map_video_memory(fbi=%p) map_size %u\n", fbi, map_size); 646 dprintk("map_video_memory(fbi=%p) map_size %u\n", fbi, map_size);
647 647
648 info->screen_base = dma_alloc_writecombine(fbi->dev, map_size, 648 info->screen_base = dma_alloc_wc(fbi->dev, map_size, &map_dma,
649 &map_dma, GFP_KERNEL); 649 GFP_KERNEL);
650 650
651 if (info->screen_base) { 651 if (info->screen_base) {
652 /* prevent initial garbage on screen */ 652 /* prevent initial garbage on screen */
@@ -667,8 +667,8 @@ static inline void s3c2410fb_unmap_video_memory(struct fb_info *info)
667{ 667{
668 struct s3c2410fb_info *fbi = info->par; 668 struct s3c2410fb_info *fbi = info->par;
669 669
670 dma_free_writecombine(fbi->dev, PAGE_ALIGN(info->fix.smem_len), 670 dma_free_wc(fbi->dev, PAGE_ALIGN(info->fix.smem_len),
671 info->screen_base, info->fix.smem_start); 671 info->screen_base, info->fix.smem_start);
672} 672}
673 673
674static inline void modify_gpio(void __iomem *reg, 674static inline void modify_gpio(void __iomem *reg,
diff --git a/drivers/video/fbdev/sa1100fb.c b/drivers/video/fbdev/sa1100fb.c
index dcf774c15889..fc2aaa5aca23 100644
--- a/drivers/video/fbdev/sa1100fb.c
+++ b/drivers/video/fbdev/sa1100fb.c
@@ -567,8 +567,8 @@ static int sa1100fb_mmap(struct fb_info *info,
567 567
568 if (off < info->fix.smem_len) { 568 if (off < info->fix.smem_len) {
569 vma->vm_pgoff += 1; /* skip over the palette */ 569 vma->vm_pgoff += 1; /* skip over the palette */
570 return dma_mmap_writecombine(fbi->dev, vma, fbi->map_cpu, 570 return dma_mmap_wc(fbi->dev, vma, fbi->map_cpu, fbi->map_dma,
571 fbi->map_dma, fbi->map_size); 571 fbi->map_size);
572 } 572 }
573 573
574 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 574 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
@@ -1099,8 +1099,8 @@ static int sa1100fb_map_video_memory(struct sa1100fb_info *fbi)
1099 * of the framebuffer. 1099 * of the framebuffer.
1100 */ 1100 */
1101 fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE); 1101 fbi->map_size = PAGE_ALIGN(fbi->fb.fix.smem_len + PAGE_SIZE);
1102 fbi->map_cpu = dma_alloc_writecombine(fbi->dev, fbi->map_size, 1102 fbi->map_cpu = dma_alloc_wc(fbi->dev, fbi->map_size, &fbi->map_dma,
1103 &fbi->map_dma, GFP_KERNEL); 1103 GFP_KERNEL);
1104 1104
1105 if (fbi->map_cpu) { 1105 if (fbi->map_cpu) {
1106 fbi->fb.screen_base = fbi->map_cpu + PAGE_SIZE; 1106 fbi->fb.screen_base = fbi->map_cpu + PAGE_SIZE;
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 75857cda38e9..471e064af29f 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -641,31 +641,40 @@ static inline void dmam_release_declared_memory(struct device *dev)
641} 641}
642#endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */ 642#endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */
643 643
644static inline void *dma_alloc_writecombine(struct device *dev, size_t size, 644static inline void *dma_alloc_wc(struct device *dev, size_t size,
645 dma_addr_t *dma_addr, gfp_t gfp) 645 dma_addr_t *dma_addr, gfp_t gfp)
646{ 646{
647 DEFINE_DMA_ATTRS(attrs); 647 DEFINE_DMA_ATTRS(attrs);
648 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); 648 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs);
649 return dma_alloc_attrs(dev, size, dma_addr, gfp, &attrs); 649 return dma_alloc_attrs(dev, size, dma_addr, gfp, &attrs);
650} 650}
651#ifndef dma_alloc_writecombine
652#define dma_alloc_writecombine dma_alloc_wc
653#endif
651 654
652static inline void dma_free_writecombine(struct device *dev, size_t size, 655static inline void dma_free_wc(struct device *dev, size_t size,
653 void *cpu_addr, dma_addr_t dma_addr) 656 void *cpu_addr, dma_addr_t dma_addr)
654{ 657{
655 DEFINE_DMA_ATTRS(attrs); 658 DEFINE_DMA_ATTRS(attrs);
656 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); 659 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs);
657 return dma_free_attrs(dev, size, cpu_addr, dma_addr, &attrs); 660 return dma_free_attrs(dev, size, cpu_addr, dma_addr, &attrs);
658} 661}
662#ifndef dma_free_writecombine
663#define dma_free_writecombine dma_free_wc
664#endif
659 665
660static inline int dma_mmap_writecombine(struct device *dev, 666static inline int dma_mmap_wc(struct device *dev,
661 struct vm_area_struct *vma, 667 struct vm_area_struct *vma,
662 void *cpu_addr, dma_addr_t dma_addr, 668 void *cpu_addr, dma_addr_t dma_addr,
663 size_t size) 669 size_t size)
664{ 670{
665 DEFINE_DMA_ATTRS(attrs); 671 DEFINE_DMA_ATTRS(attrs);
666 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs); 672 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &attrs);
667 return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs); 673 return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs);
668} 674}
675#ifndef dma_mmap_writecombine
676#define dma_mmap_writecombine dma_mmap_wc
677#endif
669 678
670#ifdef CONFIG_NEED_DMA_MAP_STATE 679#ifdef CONFIG_NEED_DMA_MAP_STATE
671#define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME 680#define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME
diff --git a/sound/arm/pxa2xx-pcm-lib.c b/sound/arm/pxa2xx-pcm-lib.c
index e9b98af6b52c..e8da3b8ee721 100644
--- a/sound/arm/pxa2xx-pcm-lib.c
+++ b/sound/arm/pxa2xx-pcm-lib.c
@@ -141,10 +141,8 @@ int pxa2xx_pcm_mmap(struct snd_pcm_substream *substream,
141 struct vm_area_struct *vma) 141 struct vm_area_struct *vma)
142{ 142{
143 struct snd_pcm_runtime *runtime = substream->runtime; 143 struct snd_pcm_runtime *runtime = substream->runtime;
144 return dma_mmap_writecombine(substream->pcm->card->dev, vma, 144 return dma_mmap_wc(substream->pcm->card->dev, vma, runtime->dma_area,
145 runtime->dma_area, 145 runtime->dma_addr, runtime->dma_bytes);
146 runtime->dma_addr,
147 runtime->dma_bytes);
148} 146}
149EXPORT_SYMBOL(pxa2xx_pcm_mmap); 147EXPORT_SYMBOL(pxa2xx_pcm_mmap);
150 148
@@ -156,8 +154,7 @@ int pxa2xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
156 buf->dev.type = SNDRV_DMA_TYPE_DEV; 154 buf->dev.type = SNDRV_DMA_TYPE_DEV;
157 buf->dev.dev = pcm->card->dev; 155 buf->dev.dev = pcm->card->dev;
158 buf->private_data = NULL; 156 buf->private_data = NULL;
159 buf->area = dma_alloc_writecombine(pcm->card->dev, size, 157 buf->area = dma_alloc_wc(pcm->card->dev, size, &buf->addr, GFP_KERNEL);
160 &buf->addr, GFP_KERNEL);
161 if (!buf->area) 158 if (!buf->area)
162 return -ENOMEM; 159 return -ENOMEM;
163 buf->bytes = size; 160 buf->bytes = size;
@@ -178,8 +175,7 @@ void pxa2xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
178 buf = &substream->dma_buffer; 175 buf = &substream->dma_buffer;
179 if (!buf->area) 176 if (!buf->area)
180 continue; 177 continue;
181 dma_free_writecombine(pcm->card->dev, buf->bytes, 178 dma_free_wc(pcm->card->dev, buf->bytes, buf->area, buf->addr);
182 buf->area, buf->addr);
183 buf->area = NULL; 179 buf->area = NULL;
184 } 180 }
185} 181}
diff --git a/sound/soc/fsl/imx-pcm-fiq.c b/sound/soc/fsl/imx-pcm-fiq.c
index 49d7513f429e..e63cd5ecfd8f 100644
--- a/sound/soc/fsl/imx-pcm-fiq.c
+++ b/sound/soc/fsl/imx-pcm-fiq.c
@@ -217,8 +217,8 @@ static int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
217 struct snd_pcm_runtime *runtime = substream->runtime; 217 struct snd_pcm_runtime *runtime = substream->runtime;
218 int ret; 218 int ret;
219 219
220 ret = dma_mmap_writecombine(substream->pcm->card->dev, vma, 220 ret = dma_mmap_wc(substream->pcm->card->dev, vma, runtime->dma_area,
221 runtime->dma_area, runtime->dma_addr, runtime->dma_bytes); 221 runtime->dma_addr, runtime->dma_bytes);
222 222
223 pr_debug("%s: ret: %d %p %pad 0x%08x\n", __func__, ret, 223 pr_debug("%s: ret: %d %p %pad 0x%08x\n", __func__, ret,
224 runtime->dma_area, 224 runtime->dma_area,
@@ -247,8 +247,7 @@ static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
247 buf->dev.type = SNDRV_DMA_TYPE_DEV; 247 buf->dev.type = SNDRV_DMA_TYPE_DEV;
248 buf->dev.dev = pcm->card->dev; 248 buf->dev.dev = pcm->card->dev;
249 buf->private_data = NULL; 249 buf->private_data = NULL;
250 buf->area = dma_alloc_writecombine(pcm->card->dev, size, 250 buf->area = dma_alloc_wc(pcm->card->dev, size, &buf->addr, GFP_KERNEL);
251 &buf->addr, GFP_KERNEL);
252 if (!buf->area) 251 if (!buf->area)
253 return -ENOMEM; 252 return -ENOMEM;
254 buf->bytes = size; 253 buf->bytes = size;
@@ -330,8 +329,7 @@ static void imx_pcm_free(struct snd_pcm *pcm)
330 if (!buf->area) 329 if (!buf->area)
331 continue; 330 continue;
332 331
333 dma_free_writecombine(pcm->card->dev, buf->bytes, 332 dma_free_wc(pcm->card->dev, buf->bytes, buf->area, buf->addr);
334 buf->area, buf->addr);
335 buf->area = NULL; 333 buf->area = NULL;
336 } 334 }
337} 335}
diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c
index e09326158bc2..2cca055fd806 100644
--- a/sound/soc/nuc900/nuc900-pcm.c
+++ b/sound/soc/nuc900/nuc900-pcm.c
@@ -267,10 +267,8 @@ static int nuc900_dma_mmap(struct snd_pcm_substream *substream,
267{ 267{
268 struct snd_pcm_runtime *runtime = substream->runtime; 268 struct snd_pcm_runtime *runtime = substream->runtime;
269 269
270 return dma_mmap_writecombine(substream->pcm->card->dev, vma, 270 return dma_mmap_wc(substream->pcm->card->dev, vma, runtime->dma_area,
271 runtime->dma_area, 271 runtime->dma_addr, runtime->dma_bytes);
272 runtime->dma_addr,
273 runtime->dma_bytes);
274} 272}
275 273
276static struct snd_pcm_ops nuc900_dma_ops = { 274static struct snd_pcm_ops nuc900_dma_ops = {
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 6bb623a2a4df..99381a27295b 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -156,10 +156,8 @@ static int omap_pcm_mmap(struct snd_pcm_substream *substream,
156{ 156{
157 struct snd_pcm_runtime *runtime = substream->runtime; 157 struct snd_pcm_runtime *runtime = substream->runtime;
158 158
159 return dma_mmap_writecombine(substream->pcm->card->dev, vma, 159 return dma_mmap_wc(substream->pcm->card->dev, vma, runtime->dma_area,
160 runtime->dma_area, 160 runtime->dma_addr, runtime->dma_bytes);
161 runtime->dma_addr,
162 runtime->dma_bytes);
163} 161}
164 162
165static struct snd_pcm_ops omap_pcm_ops = { 163static struct snd_pcm_ops omap_pcm_ops = {
@@ -183,8 +181,7 @@ static int omap_pcm_preallocate_dma_buffer(struct snd_pcm *pcm,
183 buf->dev.type = SNDRV_DMA_TYPE_DEV; 181 buf->dev.type = SNDRV_DMA_TYPE_DEV;
184 buf->dev.dev = pcm->card->dev; 182 buf->dev.dev = pcm->card->dev;
185 buf->private_data = NULL; 183 buf->private_data = NULL;
186 buf->area = dma_alloc_writecombine(pcm->card->dev, size, 184 buf->area = dma_alloc_wc(pcm->card->dev, size, &buf->addr, GFP_KERNEL);
187 &buf->addr, GFP_KERNEL);
188 if (!buf->area) 185 if (!buf->area)
189 return -ENOMEM; 186 return -ENOMEM;
190 187
@@ -207,8 +204,7 @@ static void omap_pcm_free_dma_buffers(struct snd_pcm *pcm)
207 if (!buf->area) 204 if (!buf->area)
208 continue; 205 continue;
209 206
210 dma_free_writecombine(pcm->card->dev, buf->bytes, 207 dma_free_wc(pcm->card->dev, buf->bytes, buf->area, buf->addr);
211 buf->area, buf->addr);
212 buf->area = NULL; 208 buf->area = NULL;
213 } 209 }
214} 210}