aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-s5p
diff options
context:
space:
mode:
authorHuisung Kang <hs1218.kang@samsung.com>2011-05-10 22:03:31 -0700
committerArve Hjønnevåg <arve@android.com>2011-11-17 17:53:51 -0800
commit85a817429764669c0b9b7103f64c860d71a78f03 (patch)
tree464b639fe07b87abaa9648f0c316c88e347f90de /arch/arm/plat-s5p
parentd183f87a7bfc58f10047e19b881aa2155d486311 (diff)
downloadkernel_samsung_crespo-85a817429764669c0b9b7103f64c860d71a78f03.zip
kernel_samsung_crespo-85a817429764669c0b9b7103f64c860d71a78f03.tar.gz
kernel_samsung_crespo-85a817429764669c0b9b7103f64c860d71a78f03.tar.bz2
ARM: S5P: BOOTMEM: Fix the bug on bootmem
modify to consider multiple memory bank when allocating media devices. Change-Id: I07f4f8f4d229ba5e6a65551d3194db160ac0ec1d Signed-off-by: Huisung Kang <hs1218.kang@samsung.com>
Diffstat (limited to 'arch/arm/plat-s5p')
-rw-r--r--arch/arm/plat-s5p/bootmem.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/arm/plat-s5p/bootmem.c b/arch/arm/plat-s5p/bootmem.c
index d931cd2..11fbcdc 100644
--- a/arch/arm/plat-s5p/bootmem.c
+++ b/arch/arm/plat-s5p/bootmem.c
@@ -80,8 +80,8 @@ EXPORT_SYMBOL(s5p_get_media_memsize_bank);
void s5p_reserve_bootmem(struct s5p_media_device *mdevs, int nr_mdevs)
{
struct s5p_media_device *mdev;
- int i;
- int ret;
+ u64 start, end;
+ int i, ret;
media_devs = mdevs;
nr_media_devs = nr_mdevs;
@@ -92,16 +92,19 @@ void s5p_reserve_bootmem(struct s5p_media_device *mdevs, int nr_mdevs)
continue;
if (!mdev->paddr) {
- mdev->paddr = memblock_alloc(mdev->memsize, PAGE_SIZE);
- memblock_free(mdev->paddr, mdev->memsize);
+ start = meminfo.bank[mdev->bank].start;
+ end = start + meminfo.bank[mdev->bank].size;
+
+ mdev->paddr = memblock_find_in_range(start, end,
+ mdev->memsize, PAGE_SIZE);
}
ret = memblock_remove(mdev->paddr, mdev->memsize);
if (ret < 0)
- pr_err("memblock_reserve(%x, %x) failed\n",
+ pr_err("memblock_reserve(%x, %x) failed\n",
mdev->paddr, mdev->memsize);
- printk(KERN_INFO "s5pv210: %lu bytes system memory reserved "
+ printk(KERN_INFO "s5p: %lu bytes system memory reserved "
"for %s at 0x%08x\n", (unsigned long) mdev->memsize,
mdev->name, mdev->paddr);
}