summaryrefslogtreecommitdiff
path: root/drivers/video/mcde/mcde_fb.c
diff options
context:
space:
mode:
authorPer Persson <per.xb.persson@stericsson.com>2011-03-09 08:10:51 +0100
committerRobert Marklund <robert.marklund@stericsson.com>2011-10-05 11:17:44 +0200
commit9ce1e4b1bcd9ee442e88badf7f3f5918c6bd0edd (patch)
tree1b2801ee203f9ec5ea30733a6d6a79e237f36ae6 /drivers/video/mcde/mcde_fb.c
parent2063c496369aaaccfcdbe62d6109c0b48273b012 (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/mcde_fb.c')
-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;