MIPS: ralink: allow manual memory override
authorJohn Crispin <blogic@openwrt.org>
Wed, 8 Oct 2014 20:40:02 +0000 (22:40 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 24 Nov 2014 06:45:20 +0000 (07:45 +0100)
RT5350 relies on the bootloader setting up the memc correctly. On some boards
the setup is incorrect leading to 32 MB being available but only 16 MB being
recognized. Allow these boards to manually override the memory range.

Signed-off-by: John Crispin <blogic@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/8004/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/ralink/of.c

index f68115fd98ef2b9ddc2f81baa5281296636b9c90..f9eda5d8f82cd54681efbdf65c4f55123a3dfeed 100644 (file)
@@ -53,6 +53,17 @@ void __init device_tree_init(void)
        unflatten_and_copy_device_tree();
 }
 
+static int memory_dtb;
+
+static int __init early_init_dt_find_memory(unsigned long node,
+                               const char *uname, int depth, void *data)
+{
+       if (depth == 1 && !strcmp(uname, "memory@0"))
+               memory_dtb = 1;
+
+       return 0;
+}
+
 void __init plat_mem_setup(void)
 {
        set_io_port_base(KSEG1);
@@ -63,7 +74,10 @@ void __init plat_mem_setup(void)
         */
        __dt_setup_arch(__dtb_start);
 
-       if (soc_info.mem_size)
+       of_scan_flat_dt(early_init_dt_find_memory, NULL);
+       if (memory_dtb)
+               of_scan_flat_dt(early_init_dt_scan_memory, NULL);
+       else if (soc_info.mem_size)
                add_memory_region(soc_info.mem_base, soc_info.mem_size * SZ_1M,
                                  BOOT_MEM_RAM);
        else