summaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorLucas Stach <dev@lynxeye.de>2015-03-05 22:49:55 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-03-06 07:51:47 +0100
commite05f9586b302d0dba5e9c98d849596cad1716a6f (patch)
treee4f8aa0b3e0dd5c3899d09e6d46746a37baf4635 /drivers/video
parent6c583d0e327deecaea026cf47576fbe42274bd8c (diff)
downloadbarebox-e05f9586b302d0dba5e9c98d849596cad1716a6f.tar.gz
barebox-e05f9586b302d0dba5e9c98d849596cad1716a6f.tar.xz
ARM: change dma_alloc/free_coherent to match other architectures
As a lot drivers currently rely on the 1:1 virt->phys mapping on ARM we define DMA_ADDRESS_BROKEN to mark them. In order to use them on other architectures with a different mapping they need proper fixing. Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/atmel_lcdfb_core.c5
-rw-r--r--drivers/video/imx-ipu-fb.c3
-rw-r--r--drivers/video/imx-ipu-v3/ipufb.c3
-rw-r--r--drivers/video/omap.c6
-rw-r--r--drivers/video/pxa.c7
5 files changed, 14 insertions, 10 deletions
diff --git a/drivers/video/atmel_lcdfb_core.c b/drivers/video/atmel_lcdfb_core.c
index 420ccbedf1..a0a822c240 100644
--- a/drivers/video/atmel_lcdfb_core.c
+++ b/drivers/video/atmel_lcdfb_core.c
@@ -200,7 +200,7 @@ static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo)
* ((info->bits_per_pixel + 7) / 8));
smem_len = max(smem_len, sinfo->smem_len);
- info->screen_base = dma_alloc_coherent(smem_len);
+ info->screen_base = dma_alloc_coherent(smem_len, DMA_ADDRESS_BROKEN);
if (!info->screen_base)
return -ENOMEM;
@@ -289,7 +289,8 @@ int atmel_lcdc_register(struct device_d *dev, struct atmel_lcdfb_devdata *data)
atmel_lcdfb_start_clock(sinfo);
if (data->dma_desc_size)
- sinfo->dma_desc = dma_alloc_coherent(data->dma_desc_size);
+ sinfo->dma_desc = dma_alloc_coherent(data->dma_desc_size,
+ DMA_ADDRESS_BROKEN);
ret = register_framebuffer(info);
if (ret != 0) {
diff --git a/drivers/video/imx-ipu-fb.c b/drivers/video/imx-ipu-fb.c
index a69df50811..eb913b1b4c 100644
--- a/drivers/video/imx-ipu-fb.c
+++ b/drivers/video/imx-ipu-fb.c
@@ -1030,7 +1030,8 @@ static int imxfb_probe(struct device_d *dev)
fbi->info.screen_size,
mmu_get_pte_uncached_flags());
} else {
- fbi->info.screen_base = dma_alloc_coherent(fbi->info.screen_size);
+ fbi->info.screen_base = dma_alloc_coherent(fbi->info.screen_size,
+ DMA_ADDRESS_BROKEN);
if (!fbi->info.screen_base)
return -ENOMEM;
}
diff --git a/drivers/video/imx-ipu-v3/ipufb.c b/drivers/video/imx-ipu-v3/ipufb.c
index 14a099e14a..d9c81b25e8 100644
--- a/drivers/video/imx-ipu-v3/ipufb.c
+++ b/drivers/video/imx-ipu-v3/ipufb.c
@@ -203,7 +203,8 @@ static int ipufb_activate_var(struct fb_info *info)
struct ipufb_info *fbi = container_of(info, struct ipufb_info, info);
info->line_length = info->xres * (info->bits_per_pixel >> 3);
- fbi->info.screen_base = dma_alloc_coherent(info->line_length * info->yres);
+ fbi->info.screen_base = dma_alloc_coherent(info->line_length * info->yres,
+ DMA_ADDRESS_BROKEN);
if (!fbi->info.screen_base)
return -ENOMEM;
diff --git a/drivers/video/omap.c b/drivers/video/omap.c
index bd66c92f10..91f9e24d7d 100644
--- a/drivers/video/omap.c
+++ b/drivers/video/omap.c
@@ -126,7 +126,7 @@ static void omapfb_disable(struct fb_info *info)
/* free frame buffer; but only when screen is not
* preallocated */
if (info->screen_base)
- dma_free_coherent(info->screen_base, fbi->dma_size);
+ dma_free_coherent(info->screen_base, 0, fbi->dma_size);
}
info->screen_base = NULL;
@@ -270,13 +270,13 @@ static int omapfb_activate_var(struct fb_info *info)
/*Free old screen buf*/
if (!fbi->prealloc_screen.addr && info->screen_base)
- dma_free_coherent(info->screen_base, fbi->dma_size);
+ dma_free_coherent(info->screen_base, 0, fbi->dma_size);
fbi->dma_size = PAGE_ALIGN(size);
if (!fbi->prealloc_screen.addr) {
/* case 1: no preallocated screen */
- info->screen_base = dma_alloc_coherent(size);
+ info->screen_base = dma_alloc_coherent(size, DMA_ADDRESS_BROKEN);
} else if (fbi->prealloc_screen.size < fbi->dma_size) {
/* case 2: preallocated screen, but too small */
dev_err(fbi->dev,
diff --git a/drivers/video/pxa.c b/drivers/video/pxa.c
index d6d11ae610..61ce0a5d33 100644
--- a/drivers/video/pxa.c
+++ b/drivers/video/pxa.c
@@ -522,11 +522,12 @@ static int pxafb_probe(struct device_d *dev)
else
fbi->info.screen_base =
PTR_ALIGN(dma_alloc_coherent(info->xres * info->yres *
- (info->bits_per_pixel >> 3) + PAGE_SIZE),
+ (info->bits_per_pixel >> 3) + PAGE_SIZE,
+ DMA_ADDRESS_BROKEN),
PAGE_SIZE);
- fbi->dma_buff = PTR_ALIGN(dma_alloc_coherent(sizeof(struct pxafb_dma_buff) + 16),
- 16);
+ fbi->dma_buff = PTR_ALIGN(dma_alloc_coherent(sizeof(struct pxafb_dma_buff) + 16,
+ DMA_ADDRESS_BROKEN), 16);
pxafb_activate_var(fbi);