summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches/barebox-2017.08.0/0001-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/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch')
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
new file mode 100644
index 0000000..a5fdc9c
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
@@ -0,0 +1,43 @@
+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 | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/boards/vexpress/lowlevel.c b/arch/arm/boards/vexpress/lowlevel.c
+index 204d29d8f098..7ed07a1e4134 100644
+--- a/arch/arm/boards/vexpress/lowlevel.c
++++ b/arch/arm/boards/vexpress/lowlevel.c
+@@ -9,14 +9,27 @@
+ #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>
+
+ void __naked barebox_arm_reset_vector(void)
+ {
++ unsigned long membase;
++ void *boarddata;
++
+ arm_cpu_lowlevel_init();
+
+ if (amba_is_arm_sp804(IOMEM(0x10011000)))
+- barebox_arm_entry(0x60000000, SZ_512M, NULL);
++ membase = 0x60000000;
++ else
++ membase = 0x80000000;
++
++ /* QEMU may put a dtb at the bare address */
++ if (IS_ENABLED(CONFIG_OFDEVICE) &&
++ get_unaligned_be32((void*)membase) == FDT_MAGIC)
++ boarddata = (void*)membase;
+ else
+- barebox_arm_entry(0x80000000, SZ_512M, NULL);
++ boarddata = NULL;
++
++ barebox_arm_entry(membase, SZ_512M, boarddata);
+ }