summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@imgtec.com>2015-05-24 16:11:42 +0100
committerRalf Baechle <ralf@linux-mips.org>2015-06-21 21:53:22 +0200
commit6ec127fb3c7754d3dc6614e9744386fbe652927f (patch)
treea8b9195f3351f800cba73611e2b7da148f8d490d
parent1237496af309bc0551949418fb06f63d3b1f45b5 (diff)
MIPS: JZ4740: only detect RAM size if not specified in DT
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>
-rw-r--r--arch/mips/Kconfig1
-rw-r--r--arch/mips/jz4740/Makefile2
-rw-r--r--arch/mips/jz4740/setup.c8
3 files changed, 10 insertions, 1 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index eb70c2d0a6a9..d5acb9e96d59 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -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"
diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
index 7636432af6ee..70a9578cc6db 100644
--- a/arch/mips/jz4740/Makefile
+++ b/arch/mips/jz4740/Makefile
@@ -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
diff --git a/arch/mips/jz4740/setup.c b/arch/mips/jz4740/setup.c
index 8c08d7dcda66..1bed3cb062b3 100644
--- a/arch/mips/jz4740/setup.c
+++ b/arch/mips/jz4740/setup.c
@@ -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)