summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
diff options
context:
space:
mode:
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch')
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
new file mode 100644
index 0000000..d6d8171
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
@@ -0,0 +1,50 @@
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Sat, 10 Sep 2016 17:40:56 +0200
+Subject: [PATCH] vexpress: use device tree provided by QEMU if available
+
+Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
+---
+ arch/arm/boards/vexpress/lowlevel.c | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/boards/vexpress/lowlevel.c b/arch/arm/boards/vexpress/lowlevel.c
+index 0a226b295c2a..9fe7c836b7b6 100644
+--- a/arch/arm/boards/vexpress/lowlevel.c
++++ b/arch/arm/boards/vexpress/lowlevel.c
+@@ -9,18 +9,34 @@
+ #include <asm/barebox-arm-head.h>
+ #include <asm/barebox-arm.h>
+ #include <asm/system_info.h>
++#include <asm/unaligned.h>
+ #include <linux/amba/sp804.h>
+
+ static inline void start_vexpress_common(void *internal_dt)
+ {
+ void *fdt = internal_dt - get_runtime_offset();
++ unsigned long membase, memsize = SZ_512M;
+
+ arm_cpu_lowlevel_init();
+
+ if (amba_is_arm_sp804(IOMEM(0x10011000)))
+- barebox_arm_entry(0x60000000, SZ_512M, fdt);
++ membase = 0x60000000;
+ else
+- barebox_arm_entry(0x80000000, SZ_512M, fdt);
++ membase = 0x80000000;
++
++ /* QEMU may put a DTB at the start of RAM */
++ if (IS_ENABLED(CONFIG_OFDEVICE) &&
++ get_unaligned_be32((void*)membase) == FDT_MAGIC) {
++ fdt = (void*)membase;
++ /*
++ * Need to move membase a bit as the PBL wants to relocate
++ * to the start of RAM, which would overwrite the DTB.
++ */
++ membase += SZ_4M;
++ memsize -= SZ_4M;
++ }
++
++ barebox_arm_entry(membase, memsize, fdt);
+ }
+
+ extern char __dtb_vexpress_v2p_ca9_start[];