aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/vram.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/vram.c')
-rw-r--r--drivers/video/omap2/vram.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/video/omap2/vram.c b/drivers/video/omap2/vram.c
index f6fdc2085f3e..9441e2eb3dee 100644
--- a/drivers/video/omap2/vram.c
+++ b/drivers/video/omap2/vram.c
@@ -551,16 +551,18 @@ void __init omap_vram_reserve_sdram_memblock(void)
551 if (!size) 551 if (!size)
552 return; 552 return;
553 553
554 size = PAGE_ALIGN(size); 554 size = ALIGN(size, SZ_2M);
555 555
556 if (paddr) { 556 if (paddr) {
557 struct memblock_property res; 557 if (paddr & ~PAGE_MASK) {
558 pr_err("VRAM start address 0x%08x not page aligned\n",
559 paddr);
560 return;
561 }
558 562
559 res.base = paddr; 563 if (!memblock_is_region_memory(paddr, size)) {
560 res.size = size; 564 pr_err("Illegal SDRAM region 0x%08x..0x%08x for VRAM\n",
561 if ((paddr & ~PAGE_MASK) || memblock_find(&res) || 565 paddr, paddr + size - 1);
562 res.base != paddr || res.size != size) {
563 pr_err("Illegal SDRAM region for VRAM\n");
564 return; 566 return;
565 } 567 }
566 568
@@ -574,9 +576,12 @@ void __init omap_vram_reserve_sdram_memblock(void)
574 return; 576 return;
575 } 577 }
576 } else { 578 } else {
577 paddr = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_REAL_LIMIT); 579 paddr = memblock_alloc(size, SZ_2M);
578 } 580 }
579 581
582 memblock_free(paddr, size);
583 memblock_remove(paddr, size);
584
580 omap_vram_add_region(paddr, size); 585 omap_vram_add_region(paddr, size);
581 586
582 pr_info("Reserving %u bytes SDRAM for VRAM\n", size); 587 pr_info("Reserving %u bytes SDRAM for VRAM\n", size);