diff options
author | Per Persson <per.xb.persson@stericsson.com> | 2011-03-09 08:10:51 +0100 |
---|---|---|
committer | Robert Marklund <robert.marklund@stericsson.com> | 2011-10-05 11:17:44 +0200 |
commit | 9ce1e4b1bcd9ee442e88badf7f3f5918c6bd0edd (patch) | |
tree | 1b2801ee203f9ec5ea30733a6d6a79e237f36ae6 /drivers/video/mcde/mcde_fb.c | |
parent | 2063c496369aaaccfcdbe62d6109c0b48273b012 (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.c | 11 |
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; |