mtd: uclinux: allow systems to override map addr/size
authorMike Frysinger <vapier@gentoo.org>
Tue, 26 May 2009 23:33:16 +0000 (19:33 -0400)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 5 Jun 2009 17:29:14 +0000 (18:29 +0100)
Due to a processor anomaly (05000263 to be exact), most Blackfin parts
cannot keep the embedded filesystem image directly after the kernel in
RAM.  Instead, the filesystem needs to be relocated to the end of memory.
As such, we need to tweak the map addr/size during boot for Blackfin
systems.  This can be done in any early arch/board init code.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
CC: Paul Mundt <lethal@linux-sh.org>
CC: Greg Ungerer <gerg@uclinux.org>
CC: uclinux-dev@uclinux.org
CC: linux-mtd@lists.infradead.org
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/maps/uclinux.c

index 81756e397711f4a53972000472d0ef284f9903e0..61d4087dd8f70f60235e4bad03612a7abf1426e8 100644 (file)
 
 /****************************************************************************/
 
+extern char _ebss;
+
 struct map_info uclinux_ram_map = {
        .name = "RAM",
+       .phys = (unsigned long)&_ebss,
+       .size = 0,
 };
 
 struct mtd_info *uclinux_ram_mtdinfo;
@@ -55,12 +59,10 @@ static int __init uclinux_mtd_init(void)
 {
        struct mtd_info *mtd;
        struct map_info *mapp;
-       extern char _ebss;
-       unsigned long addr = (unsigned long) &_ebss;
 
        mapp = &uclinux_ram_map;
-       mapp->phys = addr;
-       mapp->size = PAGE_ALIGN(ntohl(*((unsigned long *)(addr + 8))));
+       if (!mapp->size)
+               mapp->size = PAGE_ALIGN(ntohl(*((unsigned long *)(mapp->phys + 8))));
        mapp->bankwidth = 4;
 
        printk("uclinux[mtd]: RAM probe address=0x%x size=0x%x\n",
This page took 0.025077 seconds and 5 git commands to generate.