diff options
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.patch | 50 |
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[]; |