aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/mcde
diff options
context:
space:
mode:
authorPer Persson <per.xb.persson@stericsson.com>2011-03-09 08:10:51 +0100
committerPhilippe Langlais <philippe.langlais@linaro.org>2011-07-22 15:41:41 +0200
commit1db4859c1b5fd30115d23d2a1431bac435127266 (patch)
tree9fa1d9bfec0a4d2ffc9be96c000eca921cb8d992 /drivers/video/mcde
parent8427c4f8c4c3bb29cfcb081b419ac0fa352477cd (diff)
video: mcde: Fix memory allocation failure
Use hwmem_kmap instead of ioremap. ST-Ericsson ID: ER 324769, AP 325234 Change-Id: Iab7cfc16c53cc4628d75024e579e7b430bbdf93d Signed-off-by: Per Persson <per.xb.persson@stericsson.com>
Diffstat (limited to 'drivers/video/mcde')
-rw-r--r--drivers/video/mcde/mcde_fb.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/video/mcde/mcde_fb.c b/drivers/video/mcde/mcde_fb.c
index dadb9cf918e..ae21f46b0a1 100644
--- a/drivers/video/mcde/mcde_fb.c
+++ b/drivers/video/mcde/mcde_fb.c
@@ -210,7 +210,7 @@ static int reallocate_fb_mem(struct fb_info *fbi, u32 size)
{
struct mcde_fb *mfb = to_mcde_fb(fbi);
dma_addr_t paddr;
- void __iomem *vaddr;
+ void *vaddr;
struct hwmem_alloc *alloc;
int name;
@@ -242,13 +242,19 @@ static int reallocate_fb_mem(struct fb_info *fbi, u32 size)
}
if (mfb->alloc) {
+ hwmem_kunmap(mfb->alloc);
hwmem_unpin(mfb->alloc);
hwmem_release(mfb->alloc);
}
(void)hwmem_pin(alloc, &paddr, NULL);
- vaddr = ioremap(paddr, size);
+ vaddr = hwmem_kmap(alloc);
+ if (vaddr == NULL) {
+ hwmem_unpin(alloc);
+ hwmem_release(alloc);
+ return -ENOMEM;
+ }
mfb->alloc = alloc;
mfb->alloc_name = name;
@@ -272,6 +278,7 @@ static void free_fb_mem(struct fb_info *fbi)
struct mcde_fb *mfb = to_mcde_fb(fbi);
if (mfb->alloc) {
+ hwmem_kunmap(mfb->alloc);
hwmem_unpin(mfb->alloc);
hwmem_release(mfb->alloc);
mfb->alloc = NULL;