[adm5120] update to 2.6.22-rc6
[openwrt.git] / target / linux / adm5120-2.6 / files / arch / mips / adm5120 / memory.c
index a8ffb0c..190a078 100644 (file)
 #include <asm/page.h>
 #include <asm/sections.h>
 
+#include <asm/mach-adm5120/adm5120_info.h>
 #include <asm-mips/mips-boards/prom.h>
 
-extern char *prom_getenv(char *envname);
-
 #define PFN_ALIGN(x)    (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK)
 
-#define ADM5120_MEMCTRL                        0x1200001c
-#define ADM5120_MEMCTRL_SDRAM_MASK     0x7
-
-static const unsigned long adm_sdramsize[] __initdata = {
-       0x0,            /* Reserved */
-       0x0400000,      /* 4Mb */
-       0x0800000,      /* 8Mb */
-       0x1000000,      /* 16Mb */
-       0x4000000,      /* 64Mb */
-       0x8000000,      /* 128Mb */
-};
-
-/* determined physical memory size, not overridden by command line args  */
-unsigned long physical_memsize = 0L;
-
 struct prom_pmemblock mdesc[PROM_MAX_PMEMBLOCKS];
 
 struct prom_pmemblock * __init prom_getmdesc(void)
 {
-       char *memsize_str;
        unsigned int memsize;
        char cmdline[CL_SIZE], *ptr;
 
-       memsize_str = prom_getenv("memsize");
-
-       if (!memsize_str)
-       {
-               prom_printf("memsize not set in boot prom, set to default (8Mb)\n");
-               physical_memsize = 0x00800000;
-       }
-       else
-#ifdef DEBUG
-               prom_printf("prom_memsize = %s\n", memsize_str);
-#endif
-               physical_memsize = simple_strtol(memsize_str, NULL, 0);
-
+       memsize = adm5120_memsize;
        /* Check the command line for a memsize directive that overrides
         * the physical/default amount */
        strcpy(cmdline, arcs_cmdline);
        ptr = strstr(cmdline, "memsize=");
        if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' '))
        ptr = strstr(ptr, " memsize=");
-       
+
        if (ptr)
                memsize = memparse(ptr + 8, &ptr);
-       else
-               memsize = physical_memsize;
-
-       memset(mdesc, 0, sizeof(mdesc));
-
-       mdesc[0].type = BOOT_MEM_RAM;
-       mdesc[0].base = CPHYSADDR(PFN_ALIGN(&_end));
-       mdesc[0].size = memsize - mdesc[0].base;
+       
+       memset(mdesc, 0, sizeof(mdesc));
+       mdesc[0].type = BOOT_MEM_RAM;
+       mdesc[0].base = CPHYSADDR(PFN_ALIGN(&_end));
+       mdesc[0].size = memsize - mdesc[0].base;
 
-       return &mdesc[0];
+       return &mdesc[0];
 }
 
 void __init prom_meminit(void)
@@ -116,39 +84,7 @@ void __init prom_meminit(void)
        }
 }
 
-#if 0
-void __init prom_meminit(void)
-{
-       unsigned long base = CPHYSADDR(PFN_ALIGN(&_end));
-       unsigned long size;
-
-       u32 memctrl = *(u32*)KSEG1ADDR(ADM5120_MEMCTRL);
-       size = adm_sdramsize[memctrl & ADM5120_MEMCTRL_SDRAM_MASK];
-       add_memory_region(base, size-base, BOOT_MEM_RAM);
-}
-#endif
-
-unsigned long __init prom_free_prom_memory(void)
+void __init prom_free_prom_memory(void)
 {
-        unsigned long freed = 0;
-        unsigned long addr;
-        int i;
-
-        for (i = 0; i < boot_mem_map.nr_map; i++) {
-                if (boot_mem_map.map[i].type != BOOT_MEM_ROM_DATA)
-                        continue;
-
-                addr = PAGE_ALIGN(boot_mem_map.map[i].addr);
-                while (addr < boot_mem_map.map[i].addr
-                              + boot_mem_map.map[i].size) {
-                        ClearPageReserved(virt_to_page(__va(addr)));
-                        init_page_count(virt_to_page(__va(addr)));
-                        free_page((unsigned long)__va(addr));
-                        addr += PAGE_SIZE;
-                        freed += PAGE_SIZE;
-                }
-        }
-        printk("Freeing prom memory: %ldkb freed\n", freed >> 10);
-
-        return freed;
+       /* We do not have to prom memory to free */
 }
This page took 0.028323 seconds and 4 git commands to generate.