mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
DMA mapping updates for 5.2
- remove the already broken support for NULL dev arguments to the
DMA API calls
- Kconfig tidyups
-----BEGIN PGP SIGNATURE-----
iQI/BAABCgApFiEEgdbnc3r/njty3Iq9D55TZVIEUYMFAlzT00YLHGhjaEBsc3Qu
ZGUACgkQD55TZVIEUYO66hAAx2kCUIh+K2gFB5uxHqZiG62UmRjkPzolxcR5/Jx9
4Rz6NRAE+rp8v2fbBr2bveDx7cF5bm1L+pRyRsFMfwkm3a8dCHQ51ldIm5VFoI3e
NiX6Zoxk02BCXP/Qk//aHeNW9dBmuiemiXzdPEhOvWvVzqTO5JZrECQpkHEkG+8A
R/IWU15sr5xzw9Td/HVN9CRJri/qiTAuB9nSoP6BGjZeHkQjREJKNMGKDTvSzH4L
tlyD1G7yEymQvLBqGGO64ztuav00l8sqjI3tn1mmwpw4VTajabeRHPnWh+7g9Od+
sH1pRvIOTvEMc456fizufYIOedB5Ze344kgfrxhngRbBVXmMfShr8ZLzdIUGhGjY
1cdGqIUOEKywiDf13KrHVkNU+lJtvjMCMxvV93mAYRLOIQg0Jf4T2kklgKyEhqrG
rqFdbbtSBzmLjPyqc1FS0heDWmA+yJsKAumGcH4blJXCpsD1rHWGe0AJ34x+OHPT
tw5l+P4zAH1eO1qHCtmxN9s0lXZv1VLcFkOrJH91LPvAhZsUCrdqDjyJpTUYaIao
yzkiLbDwFO7SVoqzaVNlVZIJ/9LX0qfAnl2Atty+sAQomrQMoviNSzGbLSLQqhHN
FbTIEBMxrxS49+3lfzHOS/lYPpJp6B31yotNM+6YpXmbRQZN5gjGNYBqhKD+7Rgn
L0Y=
=IdsP
-----END PGP SIGNATURE-----
Merge tag 'dma-mapping-5.2' of git://git.infradead.org/users/hch/dma-mapping
Pull DMA mapping updates from Christoph Hellwig:
- remove the already broken support for NULL dev arguments to the DMA
API calls
- Kconfig tidyups
* tag 'dma-mapping-5.2' of git://git.infradead.org/users/hch/dma-mapping:
dma-mapping: add a Kconfig symbol to indicate arch_dma_prep_coherent presence
dma-mapping: remove an unnecessary NULL check
x86/dma: Remove the x86_dma_fallback_dev hack
dma-mapping: remove leftover NULL device support
arm: use a dummy struct device for ISA DMA use of the DMA API
pxa3xx-gcu: pass struct device to dma_mmap_coherent
gbefb: switch to managed version of the DMA allocator
da8xx-fb: pass struct device to DMA API functions
parport_ip32: pass struct device to DMA API functions
dma: select GENERIC_ALLOCATOR for DMA_REMAP
This commit is contained in:
commit
ddab5337b2
17 changed files with 65 additions and 88 deletions
|
|
@ -1097,9 +1097,9 @@ static int fb_remove(struct platform_device *dev)
|
|||
|
||||
unregister_framebuffer(info);
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
dma_free_coherent(NULL, PALETTE_SIZE, par->v_palette_base,
|
||||
dma_free_coherent(par->dev, PALETTE_SIZE, par->v_palette_base,
|
||||
par->p_palette_base);
|
||||
dma_free_coherent(NULL, par->vram_size, par->vram_virt,
|
||||
dma_free_coherent(par->dev, par->vram_size, par->vram_virt,
|
||||
par->vram_phys);
|
||||
pm_runtime_put_sync(&dev->dev);
|
||||
pm_runtime_disable(&dev->dev);
|
||||
|
|
@ -1425,7 +1425,7 @@ static int fb_probe(struct platform_device *device)
|
|||
par->vram_size = roundup(par->vram_size/8, ulcm);
|
||||
par->vram_size = par->vram_size * LCD_NUM_BUFFERS;
|
||||
|
||||
par->vram_virt = dma_alloc_coherent(NULL,
|
||||
par->vram_virt = dma_alloc_coherent(par->dev,
|
||||
par->vram_size,
|
||||
&par->vram_phys,
|
||||
GFP_KERNEL | GFP_DMA);
|
||||
|
|
@ -1446,7 +1446,7 @@ static int fb_probe(struct platform_device *device)
|
|||
da8xx_fb_fix.line_length - 1;
|
||||
|
||||
/* allocate palette buffer */
|
||||
par->v_palette_base = dma_alloc_coherent(NULL, PALETTE_SIZE,
|
||||
par->v_palette_base = dma_alloc_coherent(par->dev, PALETTE_SIZE,
|
||||
&par->p_palette_base,
|
||||
GFP_KERNEL | GFP_DMA);
|
||||
if (!par->v_palette_base) {
|
||||
|
|
@ -1532,11 +1532,12 @@ err_dealloc_cmap:
|
|||
fb_dealloc_cmap(&da8xx_fb_info->cmap);
|
||||
|
||||
err_release_pl_mem:
|
||||
dma_free_coherent(NULL, PALETTE_SIZE, par->v_palette_base,
|
||||
dma_free_coherent(par->dev, PALETTE_SIZE, par->v_palette_base,
|
||||
par->p_palette_base);
|
||||
|
||||
err_release_fb_mem:
|
||||
dma_free_coherent(NULL, par->vram_size, par->vram_virt, par->vram_phys);
|
||||
dma_free_coherent(par->dev, par->vram_size, par->vram_virt,
|
||||
par->vram_phys);
|
||||
|
||||
err_release_fb:
|
||||
framebuffer_release(da8xx_fb_info);
|
||||
|
|
|
|||
|
|
@ -1162,9 +1162,9 @@ static int gbefb_probe(struct platform_device *p_dev)
|
|||
}
|
||||
gbe_revision = gbe->ctrlstat & 15;
|
||||
|
||||
gbe_tiles.cpu =
|
||||
dma_alloc_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t),
|
||||
&gbe_tiles.dma, GFP_KERNEL);
|
||||
gbe_tiles.cpu = dmam_alloc_coherent(&p_dev->dev,
|
||||
GBE_TLB_SIZE * sizeof(uint16_t),
|
||||
&gbe_tiles.dma, GFP_KERNEL);
|
||||
if (!gbe_tiles.cpu) {
|
||||
printk(KERN_ERR "gbefb: couldn't allocate tiles table\n");
|
||||
ret = -ENOMEM;
|
||||
|
|
@ -1178,19 +1178,20 @@ static int gbefb_probe(struct platform_device *p_dev)
|
|||
if (!gbe_mem) {
|
||||
printk(KERN_ERR "gbefb: couldn't map framebuffer\n");
|
||||
ret = -ENOMEM;
|
||||
goto out_tiles_free;
|
||||
goto out_release_mem_region;
|
||||
}
|
||||
|
||||
gbe_dma_addr = 0;
|
||||
} else {
|
||||
/* try to allocate memory with the classical allocator
|
||||
* this has high chance to fail on low memory machines */
|
||||
gbe_mem = dma_alloc_wc(NULL, gbe_mem_size, &gbe_dma_addr,
|
||||
GFP_KERNEL);
|
||||
gbe_mem = dmam_alloc_attrs(&p_dev->dev, gbe_mem_size,
|
||||
&gbe_dma_addr, GFP_KERNEL,
|
||||
DMA_ATTR_WRITE_COMBINE);
|
||||
if (!gbe_mem) {
|
||||
printk(KERN_ERR "gbefb: couldn't allocate framebuffer memory\n");
|
||||
ret = -ENOMEM;
|
||||
goto out_tiles_free;
|
||||
goto out_release_mem_region;
|
||||
}
|
||||
|
||||
gbe_mem_phys = (unsigned long) gbe_dma_addr;
|
||||
|
|
@ -1237,11 +1238,6 @@ static int gbefb_probe(struct platform_device *p_dev)
|
|||
|
||||
out_gbe_unmap:
|
||||
arch_phys_wc_del(par->wc_cookie);
|
||||
if (gbe_dma_addr)
|
||||
dma_free_wc(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys);
|
||||
out_tiles_free:
|
||||
dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t),
|
||||
(void *)gbe_tiles.cpu, gbe_tiles.dma);
|
||||
out_release_mem_region:
|
||||
release_mem_region(GBE_BASE, sizeof(struct sgi_gbe));
|
||||
out_release_framebuffer:
|
||||
|
|
@ -1258,10 +1254,6 @@ static int gbefb_remove(struct platform_device* p_dev)
|
|||
unregister_framebuffer(info);
|
||||
gbe_turn_off();
|
||||
arch_phys_wc_del(par->wc_cookie);
|
||||
if (gbe_dma_addr)
|
||||
dma_free_wc(NULL, gbe_mem_size, gbe_mem, gbe_mem_phys);
|
||||
dma_free_coherent(NULL, GBE_TLB_SIZE * sizeof(uint16_t),
|
||||
(void *)gbe_tiles.cpu, gbe_tiles.dma);
|
||||
release_mem_region(GBE_BASE, sizeof(struct sgi_gbe));
|
||||
gbefb_remove_sysfs(&p_dev->dev);
|
||||
framebuffer_release(info);
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ struct pxa3xx_gcu_batch {
|
|||
};
|
||||
|
||||
struct pxa3xx_gcu_priv {
|
||||
struct device *dev;
|
||||
void __iomem *mmio_base;
|
||||
struct clk *clk;
|
||||
struct pxa3xx_gcu_shared *shared;
|
||||
|
|
@ -493,7 +494,7 @@ pxa3xx_gcu_mmap(struct file *file, struct vm_area_struct *vma)
|
|||
if (size != SHARED_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
return dma_mmap_coherent(NULL, vma,
|
||||
return dma_mmap_coherent(priv->dev, vma,
|
||||
priv->shared, priv->shared_phys, size);
|
||||
|
||||
case SHARED_SIZE >> PAGE_SHIFT:
|
||||
|
|
@ -670,6 +671,7 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
|
|||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
priv->resource_mem = r;
|
||||
priv->dev = dev;
|
||||
pxa3xx_gcu_reset(priv);
|
||||
pxa3xx_gcu_init_debug_timer(priv);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue