diff options
author | David Sin <davidsin@ti.com> | 2010-07-14 10:47:07 -0500 |
---|---|---|
committer | Ricardo Perez Olivares <x0081762@ti.com> | 2010-09-14 19:26:28 -0500 |
commit | 51213155384827bf1870ea0e02706a49c608ceab (patch) | |
tree | b272adae519109e00b5e403ad93b4ba527a10bce /drivers/media | |
parent | 777ee13a1951ffb62aec1aae5d652b886cd3cfdf (diff) |
TILER: Corrrect PAT array allocation error handling
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Signed-off-by: David Sin <davidsin@ti.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/tiler/tiler.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/media/video/tiler/tiler.c b/drivers/media/video/tiler/tiler.c index 3b6cef37ac65..2b8292da4467 100644 --- a/drivers/media/video/tiler/tiler.c +++ b/drivers/media/video/tiler/tiler.c @@ -1486,6 +1486,15 @@ static s32 __init tiler_init(void) struct tcm *sita = NULL; struct tmm *tmm_pat = NULL; + /** + * Array of physical pages for PAT programming, which must be a 16-byte + * aligned physical address + */ + dmac_va = dma_alloc_coherent(NULL, TILER_WIDTH * TILER_HEIGHT * + sizeof(*dmac_va), &dmac_pa, GFP_ATOMIC); + if (!dmac_va) + return -ENOMEM; + /* Allocate tiler container manager (we share 1 on OMAP4) */ div_pt.x = TILER_WIDTH; /* hardcoded default */ div_pt.y = (3 * TILER_HEIGHT) / 4; @@ -1503,15 +1512,6 @@ static s32 __init tiler_init(void) TMM_SET(TILFMT_32BIT, tmm_pat); TMM_SET(TILFMT_PAGE, tmm_pat); - /** - * Array of physical pages for PAT programming, which must be a 16-byte - * aligned physical address - */ - dmac_va = dma_alloc_coherent(NULL, TILER_WIDTH * TILER_HEIGHT * - sizeof(*dmac_va), &dmac_pa, GFP_ATOMIC); - if (!dmac_va) - return -ENOMEM; - tiler_device = kmalloc(sizeof(*tiler_device), GFP_KERNEL); if (!tiler_device || !sita || !tmm_pat) { r = -ENOMEM; @@ -1561,6 +1561,8 @@ error: kfree(tiler_device); tcm_deinit(sita); tmm_deinit(tmm_pat); + dma_free_coherent(NULL, TILER_WIDTH * TILER_HEIGHT * + sizeof(*dmac_va), dmac_va, dmac_pa); } return r; |