MIPS: JZ4740: only detect RAM size if not specified in DT
authorPaul Burton <paul.burton@imgtec.com>
Sun, 24 May 2015 15:11:42 +0000 (16:11 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Sun, 21 Jun 2015 19:53:22 +0000 (21:53 +0200)
Allow a devicetree to specify the memory present in the system rather
than probing it from the memory controller. This both saves the probing
for systems where the amount of memory is fixed, and will simplify the
bringup of later Ingenic SoCs where the memory controller register
layout differs.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/10163/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/Kconfig
arch/mips/jz4740/Makefile
arch/mips/jz4740/setup.c

index eb70c2d0a6a93f28067703b43fde0093b0a2edea..d5acb9e96d596e2dfff9da63ef9ec2b8515ea252 100644 (file)
@@ -302,6 +302,7 @@ config MACH_INGENIC
        select GENERIC_IRQ_CHIP
        select BUILTIN_DTB
        select USE_OF
+       select LIBFDT
 
 config LANTIQ
        bool "Lantiq based platforms"
index 7636432af6eeaf6bf3b66ee42a80f432a07e5b61..70a9578cc6db7bd9b78e6f118a7d4118aea68963 100644 (file)
@@ -7,6 +7,8 @@
 obj-y += prom.o time.o reset.o setup.o \
        gpio.o platform.o timer.o serial.o
 
+CFLAGS_setup.o = -I$(src)/../../../scripts/dtc/libfdt
+
 # board specific support
 
 obj-$(CONFIG_JZ4740_QI_LB60)   += board-qi_lb60.o
index 8c08d7dcda6695b100a19b1a83e504b870779ba0..1bed3cb062b31e03cc89c6b0af52ea42c7e78e5a 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/io.h>
 #include <linux/irqchip.h>
 #include <linux/kernel.h>
+#include <linux/libfdt.h>
 #include <linux/of_fdt.h>
 #include <linux/of_platform.h>
 
@@ -55,9 +56,14 @@ static void __init jz4740_detect_mem(void)
 
 void __init plat_mem_setup(void)
 {
+       int offset;
+
        jz4740_reset_init();
-       jz4740_detect_mem();
        __dt_setup_arch(__dtb_start);
+
+       offset = fdt_path_offset(__dtb_start, "/memory");
+       if (offset < 0)
+               jz4740_detect_mem();
 }
 
 void __init device_tree_init(void)