summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configs/platform-v7a/barebox-vexpress.config31
-rw-r--r--configs/platform-v7a/config/images/vexpress-nor.config2
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0001-ARM-vexpress-always-build-relocatable-image.patch106
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch43
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0002-of-populate-clock-providers-before-other-devices.patch27
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0002-vexpress-device-tree-support.patch78
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0003-clk-versatile-add-basic-clocks.patch225
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0004-clocksource-sp804-silently-ignore-secondary-instaces.patch28
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0005-commands-of_dump-don-t-use-flatten-unflatten-to-copy.patch34
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0005-mci-mmci-add-DT-support.patch82
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0006-ARM-vexpress-switch-to-DT-probe-and-multi-image-buil.patch577
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0007-ARM-vexpress-regenerate-config.patch63
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0008-docs-add-qemu-vexpress.patch38
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch50
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0010-vexpress-add-bootstate-node-to-the-device-tree.patch (renamed from configs/platform-v7a/patches/barebox-2017.08.0/0003-vexpress-add-bootstate-node-to-the-device-tree.patch)0
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch (renamed from configs/platform-v7a/patches/barebox-2017.08.0/0004-of-base-add-funtion-to-copy-a-device-tree-node.patch)2
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch (renamed from configs/platform-v7a/patches/barebox-2017.08.0/0006-common-oftree-add-fixup-handler-for-virtio-mmio-devi.patch)18
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0201-ARM-imx-add-support-for-Udoo-Neo-full.patch4
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170912-1.patch (renamed from configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170822-1.patch)8
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/series34
-rw-r--r--configs/platform-v7a/rules/barebox-vexpress.make6
21 files changed, 1253 insertions, 203 deletions
diff --git a/configs/platform-v7a/barebox-vexpress.config b/configs/platform-v7a/barebox-vexpress.config
index 1a2d40a..41ac235 100644
--- a/configs/platform-v7a/barebox-vexpress.config
+++ b/configs/platform-v7a/barebox-vexpress.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Barebox/arm 2017.08.0-20170822-1 Configuration
+# Barebox/arm 2017.08.0-20170907-1 Configuration
#
CONFIG_ARM=y
CONFIG_ARM_LINUX=y
@@ -8,8 +8,6 @@ CONFIG_ARM_LINUX=y
#
# System Type
#
-CONFIG_BUILTIN_DTB=y
-CONFIG_BUILTIN_DTB_NAME="vexpress-v2p-ca9"
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_BCM283X is not set
# CONFIG_ARCH_CLPS711X is not set
@@ -47,7 +45,7 @@ CONFIG_CPU_32v7=y
# processor features
#
# CONFIG_BOOT_ENDIANNESS_SWITCH is not set
-CONFIG_ARCH_TEXT_BASE=0x83f00000
+CONFIG_ARCH_TEXT_BASE=0x0
CONFIG_BAREBOX_MAX_IMAGE_SIZE=0xffffffff
CONFIG_MACH_VEXPRESS=y
CONFIG_AEABI=y
@@ -93,20 +91,31 @@ CONFIG_NVVAR=y
# memory layout
#
CONFIG_HAVE_PBL_IMAGE=y
+CONFIG_HAVE_PBL_MULTI_IMAGES=y
CONFIG_HAVE_IMAGE_COMPRESSION=y
-# CONFIG_PBL_IMAGE is not set
+CONFIG_PBL_IMAGE=y
+CONFIG_PBL_MULTI_IMAGES=y
+CONFIG_PBL_RELOCATABLE=y
+CONFIG_IMAGE_COMPRESSION=y
+# CONFIG_IMAGE_COMPRESSION_LZ4 is not set
+CONFIG_IMAGE_COMPRESSION_LZO=y
+# CONFIG_IMAGE_COMPRESSION_GZIP is not set
+# CONFIG_IMAGE_COMPRESSION_XZKERN is not set
+# CONFIG_IMAGE_COMPRESSION_NONE is not set
CONFIG_MMU=y
CONFIG_MMU_EARLY=y
CONFIG_HAVE_CONFIGURABLE_TEXT_BASE=y
-CONFIG_TEXT_BASE=0x83f00000
+CONFIG_TEXT_BASE=0x0
+CONFIG_BAREBOX_MAX_PBL_SIZE=0xffffffff
CONFIG_BAREBOX_MAX_BARE_INIT_SIZE=0xffffffff
+CONFIG_BAREBOX_MAX_PBLX_SIZE=0xffffffff
CONFIG_STACK_SIZE=0x8000
-CONFIG_MALLOC_SIZE=0x4000000
+CONFIG_MALLOC_SIZE=0x0
# CONFIG_EXPERIMENTAL is not set
# CONFIG_MALLOC_DLMALLOC is not set
CONFIG_MALLOC_TLSF=y
CONFIG_KALLSYMS=y
-# CONFIG_RELOCATABLE is not set
+CONFIG_RELOCATABLE=y
# CONFIG_PANIC_HANG is not set
CONFIG_PROMPT="vexpress: "
CONFIG_BAUDRATE=115200
@@ -141,9 +150,10 @@ CONFIG_IMD=y
CONFIG_CONSOLE_FULL=y
# CONFIG_CONSOLE_SIMPLE is not set
# CONFIG_CONSOLE_NONE is not set
-CONFIG_CONSOLE_ACTIVATE_FIRST=y
-# CONFIG_CONSOLE_ACTIVATE_ALL is not set
+# CONFIG_CONSOLE_ACTIVATE_FIRST is not set
+CONFIG_CONSOLE_ACTIVATE_ALL=y
# CONFIG_CONSOLE_ACTIVATE_NONE is not set
+CONFIG_PBL_CONSOLE=y
# CONFIG_CONSOLE_RATP is not set
CONFIG_PARTITION=y
CONFIG_PARTITION_DISK=y
@@ -454,6 +464,7 @@ CONFIG_MCI_MMCI=y
CONFIG_HAVE_CLK=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_OF_PROVIDER=y
CONFIG_AMBA_SP804=y
CONFIG_CLOCKSOURCE_DUMMY_RATE=1000
diff --git a/configs/platform-v7a/config/images/vexpress-nor.config b/configs/platform-v7a/config/images/vexpress-nor.config
index 38c4464..7711851 100644
--- a/configs/platform-v7a/config/images/vexpress-nor.config
+++ b/configs/platform-v7a/config/images/vexpress-nor.config
@@ -3,7 +3,7 @@ image @IMAGE@ {
partition-table = false
}
partition barebox {
- image = barebox.bin-vexpress
+ image = barebox-vexpress-ca9.img
offset = 0
in-partition-table = false
}
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0001-ARM-vexpress-always-build-relocatable-image.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0001-ARM-vexpress-always-build-relocatable-image.patch
new file mode 100644
index 0000000..de791cd
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0001-ARM-vexpress-always-build-relocatable-image.patch
@@ -0,0 +1,106 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 11:59:15 +0200
+Subject: [PATCH] ARM: vexpress: always build relocatable image
+
+This allows to make more space available for the malloc area and
+allows us to drop the special CA9 defconfig, which had a different
+text base.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ arch/arm/configs/vexpress_ca9_defconfig | 52 ---------------------------------
+ arch/arm/configs/vexpress_defconfig | 1 +
+ arch/arm/mach-vexpress/Kconfig | 3 +-
+ 3 files changed, 3 insertions(+), 53 deletions(-)
+ delete mode 100644 arch/arm/configs/vexpress_ca9_defconfig
+
+diff --git a/arch/arm/configs/vexpress_ca9_defconfig b/arch/arm/configs/vexpress_ca9_defconfig
+deleted file mode 100644
+index a1c42512d205..000000000000
+--- a/arch/arm/configs/vexpress_ca9_defconfig
++++ /dev/null
+@@ -1,52 +0,0 @@
+-CONFIG_ARCH_VEXPRESS=y
+-CONFIG_AEABI=y
+-CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+-CONFIG_TEXT_BASE=0x63f00000
+-CONFIG_MALLOC_TLSF=y
+-CONFIG_PROMPT="vexpress: "
+-CONFIG_GLOB=y
+-CONFIG_HUSH_FANCY_PROMPT=y
+-CONFIG_CMDLINE_EDITING=y
+-CONFIG_AUTO_COMPLETE=y
+-CONFIG_MENU=y
+-CONFIG_BOOTM_SHOW_TYPE=y
+-CONFIG_BOOTM_VERBOSE=y
+-CONFIG_BOOTM_INITRD=y
+-CONFIG_PARTITION=y
+-CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y
+-CONFIG_LONGHELP=y
+-CONFIG_CMD_MEMINFO=y
+-# CONFIG_CMD_BOOTU is not set
+-CONFIG_CMD_GO=y
+-CONFIG_CMD_LOADB=y
+-CONFIG_CMD_RESET=y
+-CONFIG_CMD_UIMAGE=y
+-CONFIG_CMD_PARTITION=y
+-CONFIG_CMD_EXPORT=y
+-CONFIG_CMD_PRINTENV=y
+-CONFIG_CMD_SAVEENV=y
+-CONFIG_CMD_UNCOMPRESS=y
+-CONFIG_CMD_SLEEP=y
+-CONFIG_CMD_DHCP=y
+-CONFIG_CMD_PING=y
+-CONFIG_CMD_TFTP=y
+-CONFIG_CMD_ECHO_E=y
+-CONFIG_CMD_EDIT=y
+-CONFIG_CMD_LOGIN=y
+-CONFIG_CMD_MENU=y
+-CONFIG_CMD_MENU_MANAGEMENT=y
+-CONFIG_CMD_PASSWD=y
+-CONFIG_CMD_READLINE=y
+-CONFIG_CMD_TIMEOUT=y
+-CONFIG_CMD_CLK=y
+-CONFIG_CMD_OFTREE=y
+-CONFIG_NET=y
+-CONFIG_NET_NFS=y
+-CONFIG_NET_NETCONSOLE=y
+-CONFIG_NET_RESOLV=y
+-CONFIG_SERIAL_AMBA_PL011=y
+-CONFIG_DRIVER_NET_SMC91111=y
+-# CONFIG_SPI is not set
+-CONFIG_FS_TFTP=y
+-CONFIG_DIGEST_SHA1_GENERIC=y
+-CONFIG_DIGEST_SHA256_GENERIC=y
+diff --git a/arch/arm/configs/vexpress_defconfig b/arch/arm/configs/vexpress_defconfig
+index 94fe1eaa72b1..e31da4a8c668 100644
+--- a/arch/arm/configs/vexpress_defconfig
++++ b/arch/arm/configs/vexpress_defconfig
+@@ -1,6 +1,7 @@
+ CONFIG_ARCH_VEXPRESS=y
+ CONFIG_AEABI=y
+ CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
++CONFIG_MALLOC_SIZE=0x0
+ CONFIG_MALLOC_TLSF=y
+ CONFIG_PROMPT="vexpress: "
+ CONFIG_GLOB=y
+diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
+index bf1dd5a79150..1d5e293602f6 100644
+--- a/arch/arm/mach-vexpress/Kconfig
++++ b/arch/arm/mach-vexpress/Kconfig
+@@ -2,13 +2,14 @@ if ARCH_VEXPRESS
+
+ config ARCH_TEXT_BASE
+ hex
+- default 0x83f00000
++ default 0x0
+
+ choice
+ prompt "ARM Board type"
+
+ config MACH_VEXPRESS
+ bool "ARM Vexpress"
++ select RELOCATABLE
+
+ endchoice
+
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
deleted file mode 100644
index a5fdc9c..0000000
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-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);
- }
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0002-of-populate-clock-providers-before-other-devices.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0002-of-populate-clock-providers-before-other-devices.patch
new file mode 100644
index 0000000..042f82c
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0002-of-populate-clock-providers-before-other-devices.patch
@@ -0,0 +1,27 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 17:52:18 +0200
+Subject: [PATCH] of: populate clock providers before other devices
+
+Clocks are a basic resource, which may be needed early by other
+devices or even the bus driver (as is the case with the ARM AMBA
+bus). Register them before populating other devices.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ drivers/of/base.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/of/base.c b/drivers/of/base.c
+index ea330d131012..1649148dc0c6 100644
+--- a/drivers/of/base.c
++++ b/drivers/of/base.c
+@@ -1915,8 +1915,8 @@ int of_probe(void)
+ if (memory)
+ of_add_memory(memory, false);
+
+- of_platform_populate(root_node, of_default_bus_match_table, NULL);
+ of_clk_init(root_node, NULL);
++ of_platform_populate(root_node, of_default_bus_match_table, NULL);
+
+ return 0;
+ }
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0002-vexpress-device-tree-support.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0002-vexpress-device-tree-support.patch
deleted file mode 100644
index fc7ad48..0000000
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0002-vexpress-device-tree-support.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Sat, 10 Sep 2016 17:51:36 +0200
-Subject: [PATCH] vexpress: device tree support
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- arch/arm/boards/vexpress/init.c | 16 ++++++++++------
- arch/arm/dts/vexpress-v2p-ca9.dts | 27 +++++++++++++++++++++++++++
- 2 files changed, 37 insertions(+), 6 deletions(-)
- create mode 100644 arch/arm/dts/vexpress-v2p-ca9.dts
-
-diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c
-index f89dff939231..68ebbfab2633 100644
---- a/arch/arm/boards/vexpress/init.c
-+++ b/arch/arm/boards/vexpress/init.c
-@@ -71,10 +71,12 @@ static void vexpress_a9_legacy_mem_init(void)
-
- static void vexpress_a9_legacy_devices_init(void)
- {
-- add_cfi_flash_device(0, 0x40000000, SZ_64M, 0);
-- add_cfi_flash_device(1, 0x44000000, SZ_64M, 0);
-- add_generic_device("smc911x", DEVICE_ID_DYNAMIC, NULL, 0x4e000000,
-- 64 * 1024, IORESOURCE_MEM, NULL);
-+ if (!IS_ENABLED(CONFIG_OFDEVICE)) {
-+ add_cfi_flash_device(0, 0x40000000, SZ_64M, 0);
-+ add_cfi_flash_device(1, 0x44000000, SZ_64M, 0);
-+ add_generic_device("smc911x", DEVICE_ID_DYNAMIC, NULL, 0x4e000000,
-+ 64 * 1024, IORESOURCE_MEM, NULL);
-+ }
- vexpress_a9_legacy_register_mmc(&mmci_plat);
- armlinux_set_architecture(MACH_TYPE_VEXPRESS);
- }
-@@ -107,8 +109,10 @@ static int vexpress_devices_init(void)
- writel(1, v2m_sysreg_base + V2M_SYS_FLASH);
- v2m_init->devices_init();
-
-- devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self");
-- devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0");
-+ if (!IS_ENABLED(CONFIG_OFDEVICE)) {
-+ devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self");
-+ devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0");
-+ }
-
- if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC))
- defaultenv_append_directory(defaultenv_vexpress);
-diff --git a/arch/arm/dts/vexpress-v2p-ca9.dts b/arch/arm/dts/vexpress-v2p-ca9.dts
-new file mode 100644
-index 000000000000..541840ae22dc
---- /dev/null
-+++ b/arch/arm/dts/vexpress-v2p-ca9.dts
-@@ -0,0 +1,27 @@
-+#include <arm/vexpress-v2p-ca9.dts>
-+
-+/ {
-+ barebox_environment {
-+ compatible = "barebox,environment";
-+ device-path = &barebox_env;
-+ };
-+
-+ smb@4000000 {
-+ motherboard {
-+ flash@0,00000000 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+
-+ partition@0 {
-+ label = "barebox";
-+ reg = <0x0 0x80000>;
-+ };
-+
-+ barebox_env: partition@80000 {
-+ label = "barebox-environment";
-+ reg = <0x80000 0x80000>;
-+ };
-+ };
-+ };
-+ };
-+};
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0003-clk-versatile-add-basic-clocks.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0003-clk-versatile-add-basic-clocks.patch
new file mode 100644
index 0000000..c992c53
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0003-clk-versatile-add-basic-clocks.patch
@@ -0,0 +1,225 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 18:47:47 +0200
+Subject: [PATCH] clk: versatile: add basic clocks
+
+This adds the necessary basic clocks used on the ARM versatile
+platforms.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ drivers/clk/Makefile | 1 +
+ drivers/clk/vexpress/Makefile | 1 +
+ drivers/clk/vexpress/clk-sp810.c | 137 ++++++++++++++++++++++++++++++++
+ drivers/clk/vexpress/clk-vexpress-osc.c | 42 ++++++++++
+ 4 files changed, 181 insertions(+)
+ create mode 100644 drivers/clk/vexpress/Makefile
+ create mode 100644 drivers/clk/vexpress/clk-sp810.c
+ create mode 100644 drivers/clk/vexpress/clk-vexpress-osc.c
+
+diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
+index b5abe1cdf5db..a36a8db03bdb 100644
+--- a/drivers/clk/Makefile
++++ b/drivers/clk/Makefile
+@@ -12,3 +12,4 @@ obj-$(CONFIG_CLK_SOCFPGA) += socfpga/
+ obj-$(CONFIG_MACH_MIPS_ATH79) += clk-ar933x.o
+ obj-$(CONFIG_ARCH_IMX) += imx/
+ obj-$(CONFIG_COMMON_CLK_AT91) += at91/
++obj-$(CONFIG_MACH_VEXPRESS) += vexpress/
+diff --git a/drivers/clk/vexpress/Makefile b/drivers/clk/vexpress/Makefile
+new file mode 100644
+index 000000000000..c6869bac8365
+--- /dev/null
++++ b/drivers/clk/vexpress/Makefile
+@@ -0,0 +1 @@
++obj-y += clk-vexpress-osc.o clk-sp810.o
+diff --git a/drivers/clk/vexpress/clk-sp810.c b/drivers/clk/vexpress/clk-sp810.c
+new file mode 100644
+index 000000000000..dc57b74e0848
+--- /dev/null
++++ b/drivers/clk/vexpress/clk-sp810.c
+@@ -0,0 +1,137 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * Copyright (C) 2013 ARM Limited
++ */
++
++//#include <linux/amba/sp810.h>
++#include <common.h>
++#include <io.h>
++#include <malloc.h>
++#include <of_address.h>
++#include <linux/clk.h>
++#include <linux/err.h>
++
++/* sysctl registers offset */
++#define SCCTRL 0x000
++#define SCCTRL_TIMERENnSEL_SHIFT(n) (15 + ((n) * 2))
++
++struct clk_sp810;
++
++struct clk_sp810_timerclken {
++ struct clk hw;
++ struct clk_sp810 *sp810;
++ int channel;
++};
++
++static inline struct clk_sp810_timerclken *
++to_clk_sp810_timerclken(struct clk *clk)
++{
++ return container_of(clk, struct clk_sp810_timerclken, hw);
++}
++
++struct clk_sp810 {
++ struct device_node *node;
++ void __iomem *base;
++ struct clk_sp810_timerclken timerclken[4];
++};
++
++static int clk_sp810_timerclken_get_parent(struct clk *hw)
++{
++ struct clk_sp810_timerclken *timerclken = to_clk_sp810_timerclken(hw);
++ u32 val = readl(timerclken->sp810->base + SCCTRL);
++
++ return !!(val & (1 << SCCTRL_TIMERENnSEL_SHIFT(timerclken->channel)));
++}
++
++static int clk_sp810_timerclken_set_parent(struct clk *hw, u8 index)
++{
++ struct clk_sp810_timerclken *timerclken = to_clk_sp810_timerclken(hw);
++ struct clk_sp810 *sp810 = timerclken->sp810;
++ u32 val, shift = SCCTRL_TIMERENnSEL_SHIFT(timerclken->channel);
++
++ if (WARN_ON(index > 1))
++ return -EINVAL;
++
++ val = readl(sp810->base + SCCTRL);
++ val &= ~(1 << shift);
++ val |= index << shift;
++ writel(val, sp810->base + SCCTRL);
++
++ return 0;
++}
++
++static const struct clk_ops clk_sp810_timerclken_ops = {
++ .get_parent = clk_sp810_timerclken_get_parent,
++ .set_parent = clk_sp810_timerclken_set_parent,
++};
++
++static struct clk *clk_sp810_timerclken_of_get(struct of_phandle_args *clkspec,
++ void *data)
++{
++ struct clk_sp810 *sp810 = data;
++
++ if (WARN_ON(clkspec->args_count != 1 ||
++ clkspec->args[0] >= ARRAY_SIZE(sp810->timerclken)))
++ return NULL;
++
++ return &sp810->timerclken[clkspec->args[0]].hw;
++}
++
++static void clk_sp810_of_setup(struct device_node *node)
++{
++ struct clk_sp810 *sp810 = xzalloc(sizeof(*sp810));
++ const char *parent_names[2];
++ int num = ARRAY_SIZE(parent_names);
++ char name[12];
++ static int instance;
++ int i;
++ bool deprecated;
++
++ if (!sp810)
++ return;
++
++ if (of_clk_parent_fill(node, parent_names, num) != num) {
++ pr_warn("Failed to obtain parent clocks for SP810!\n");
++ kfree(sp810);
++ return;
++ }
++
++ sp810->node = node;
++ sp810->base = of_iomap(node, 0);
++
++ deprecated = !of_find_property(node, "assigned-clock-parents", NULL);
++
++ for (i = 0; i < ARRAY_SIZE(sp810->timerclken); i++) {
++ snprintf(name, sizeof(name), "sp810_%d_%d", instance, i);
++
++ sp810->timerclken[i].sp810 = sp810;
++ sp810->timerclken[i].channel = i;
++ sp810->timerclken[i].hw.name = strdup(name);
++ sp810->timerclken[i].hw.parent_names = parent_names;
++ sp810->timerclken[i].hw.num_parents = num;
++ sp810->timerclken[i].hw.ops = &clk_sp810_timerclken_ops;
++
++ /*
++ * If DT isn't setting the parent, force it to be
++ * the 1 MHz clock without going through the framework.
++ * We do this before clk_register() so that it can determine
++ * the parent and setup the tree properly.
++ */
++ if (deprecated)
++ clk_sp810_timerclken_set_parent(&sp810->timerclken[i].hw, 1);
++
++ clk_register(&sp810->timerclken[i].hw);
++ }
++
++ of_clk_add_provider(node, clk_sp810_timerclken_of_get, sp810);
++ instance++;
++}
++CLK_OF_DECLARE(sp810, "arm,sp810", clk_sp810_of_setup);
+diff --git a/drivers/clk/vexpress/clk-vexpress-osc.c b/drivers/clk/vexpress/clk-vexpress-osc.c
+new file mode 100644
+index 000000000000..c0d6e6066ecd
+--- /dev/null
++++ b/drivers/clk/vexpress/clk-vexpress-osc.c
+@@ -0,0 +1,42 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ */
++
++#include <common.h>
++#include <malloc.h>
++#include <linux/clk.h>
++#include <linux/err.h>
++
++/*
++ * This represents the vexpress-osc as a fixed clock, which isn't really
++ * accurate, as this clock allows rate changes in real implementations. As those
++ * would need access to the config bus, a whole lot more infrastructure would be
++ * needed. We skip this complication for now, as we don't have a use-case, yet.
++ */
++static int vexpress_osc_setup(struct device_node *node)
++{
++ struct clk *clk;
++ u32 range[2];
++ const char *name;
++
++ if (of_property_read_u32_array(node, "freq-range", range,
++ ARRAY_SIZE(range)))
++ return -EINVAL;
++
++ if (of_property_read_string(node, "clock-output-names", &name))
++ return -EINVAL;
++
++ clk = clk_fixed(name, range[0]);
++ if (IS_ERR(clk))
++ return PTR_ERR(clk);
++
++ return of_clk_add_provider(node, of_clk_src_simple_get, clk);
++}
++CLK_OF_DECLARE(vexpress_osc, "arm,vexpress-osc", vexpress_osc_setup);
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0004-clocksource-sp804-silently-ignore-secondary-instaces.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0004-clocksource-sp804-silently-ignore-secondary-instaces.patch
new file mode 100644
index 0000000..e61865e
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0004-clocksource-sp804-silently-ignore-secondary-instaces.patch
@@ -0,0 +1,28 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 18:54:54 +0200
+Subject: [PATCH] clocksource: sp804: silently ignore secondary instaces
+
+When probing from an upstream DT, we don't always have influence on
+how many timer instances are enabled. Just use the first one and
+silently skip the other instances.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ drivers/clocksource/amba-sp804.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/clocksource/amba-sp804.c b/drivers/clocksource/amba-sp804.c
+index c5ad9947cd96..66e3988b4cf8 100644
+--- a/drivers/clocksource/amba-sp804.c
++++ b/drivers/clocksource/amba-sp804.c
+@@ -35,8 +35,8 @@ static int sp804_probe(struct amba_device *dev, const struct amba_id *id)
+ int ret;
+
+ if (sp804_base) {
+- dev_err(&dev->dev, "single instance driver\n");
+- return -EBUSY;
++ dev_dbg(&dev->dev, "skipping secondary instance\n");
++ return 0;
+ }
+
+ sp804_clk = clk_get(&dev->dev, NULL);
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0005-commands-of_dump-don-t-use-flatten-unflatten-to-copy.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0005-commands-of_dump-don-t-use-flatten-unflatten-to-copy.patch
deleted file mode 100644
index 8dc2da3..0000000
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0005-commands-of_dump-don-t-use-flatten-unflatten-to-copy.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Tue, 13 Sep 2016 21:18:15 +0200
-Subject: [PATCH] commands: of_dump: don't use flatten/unflatten to copy the
- device tree
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- commands/of_dump.c | 13 +------------
- 1 file changed, 1 insertion(+), 12 deletions(-)
-
-diff --git a/commands/of_dump.c b/commands/of_dump.c
-index 7bec0b925eee..ac5014e1fff8 100644
---- a/commands/of_dump.c
-+++ b/commands/of_dump.c
-@@ -97,18 +97,7 @@ static int do_of_dump(int argc, char *argv[])
-
- if (fix) {
- /* create a copy of internal devicetree */
-- void *fdt;
-- fdt = of_flatten_dtb(root);
-- root = of_unflatten_dtb(fdt);
--
-- free(fdt);
--
-- if (IS_ERR(root)) {
-- ret = PTR_ERR(root);
-- goto out;
-- }
--
-- of_free = root;
-+ of_free = root = of_copy_node(NULL, root);
- }
- }
-
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0005-mci-mmci-add-DT-support.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0005-mci-mmci-add-DT-support.patch
new file mode 100644
index 0000000..2564644
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0005-mci-mmci-add-DT-support.patch
@@ -0,0 +1,82 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Mon, 4 Sep 2017 11:43:38 +0200
+Subject: [PATCH] mci: mmci: add DT support
+
+Just adds the minimal implementation to fill platform_data from
+the DT properties with Linux binding.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ drivers/mci/mmci.c | 39 ++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 36 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/mci/mmci.c b/drivers/mci/mmci.c
+index 7489ee03a13c..f45557d4f7be 100644
+--- a/drivers/mci/mmci.c
++++ b/drivers/mci/mmci.c
+@@ -532,9 +532,37 @@ static void mci_set_ios(struct mci_host *mci, struct mci_ios *ios)
+ udelay(CLK_CHANGE_DELAY);
+ }
+
++static int mmci_of_parse(struct device_node *np,
++ struct mmci_platform_data *plat)
++{
++ if (!IS_ENABLED(CONFIG_OFDEVICE))
++ return 0;
++
++ if (of_get_property(np, "st,sig-dir-dat0", NULL))
++ plat->sigdir |= MCI_ST_DATA0DIREN;
++ if (of_get_property(np, "st,sig-dir-dat2", NULL))
++ plat->sigdir |= MCI_ST_DATA2DIREN;
++ if (of_get_property(np, "st,sig-dir-dat31", NULL))
++ plat->sigdir |= MCI_ST_DATA31DIREN;
++ if (of_get_property(np, "st,sig-dir-dat74", NULL))
++ plat->sigdir |= MCI_ST_DATA74DIREN;
++ if (of_get_property(np, "st,sig-dir-cmd", NULL))
++ plat->sigdir |= MCI_ST_CMDDIREN;
++ if (of_get_property(np, "st,sig-pin-fbclk", NULL))
++ plat->sigdir |= MCI_ST_FBCLKEN;
++
++ if (of_get_property(np, "mmc-cap-mmc-highspeed", NULL))
++ plat->capabilities |= MMC_CAP_MMC_HIGHSPEED;
++ if (of_get_property(np, "mmc-cap-sd-highspeed", NULL))
++ plat->capabilities |= MMC_CAP_SD_HIGHSPEED;
++
++ return 0;
++}
++
+ static int mmci_probe(struct amba_device *dev, const struct amba_id *id)
+ {
+ struct device_d *hw_dev = &dev->dev;
++ struct device_node *np = hw_dev->device_node;
+ struct mmci_platform_data *plat = hw_dev->platform_data;
+ struct variant_data *variant = id->data;
+ u32 sdi_u32;
+@@ -542,11 +570,16 @@ static int mmci_probe(struct amba_device *dev, const struct amba_id *id)
+ struct clk *clk;
+ int ret;
+
+- if (!plat) {
+- dev_err(hw_dev, "missing platform data\n");
++ if (!plat && !np) {
++ dev_err(hw_dev, "missing platform data or DT node\n");
+ return -EINVAL;
+ }
+
++ if (!plat)
++ plat = xzalloc(sizeof(*plat));
++
++ mmci_of_parse(np, plat);
++
+ host = xzalloc(sizeof(*host));
+
+ host->base = amba_get_mem_region(dev);
+@@ -625,7 +658,7 @@ static int mmci_probe(struct amba_device *dev, const struct amba_id *id)
+ host->mci.max_req_size = (1 << variant->datalength_bits) - 1;
+
+ host->mci.host_caps = plat->capabilities;
+- host->mci.voltages = plat->ocr_mask;
++ host->mci.voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | plat->ocr_mask;
+
+ mci_register(&host->mci);
+
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0006-ARM-vexpress-switch-to-DT-probe-and-multi-image-buil.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0006-ARM-vexpress-switch-to-DT-probe-and-multi-image-buil.patch
new file mode 100644
index 0000000..dc21ddf
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0006-ARM-vexpress-switch-to-DT-probe-and-multi-image-buil.patch
@@ -0,0 +1,577 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 14:07:05 +0200
+Subject: [PATCH] ARM: vexpress: switch to DT probe and multi-image build
+
+This switches the VExpress support to use an internal DT, instead
+of probing the peripherals from a board file. It also switches to
+a multi-iamge build with both CA9 and CA15 variants of the VExpress
+board being supported.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ arch/arm/boards/vexpress/Makefile | 2 -
+ .../arm/boards/vexpress/defaultenv-vexpress/config | 38 -------
+ arch/arm/boards/vexpress/init.c | 115 +--------------------
+ arch/arm/boards/vexpress/lowlevel.c | 20 +++-
+ arch/arm/dts/Makefile | 2 +
+ arch/arm/dts/vexpress-v2p-ca15.dts | 27 +++++
+ arch/arm/dts/vexpress-v2p-ca9.dts | 27 +++++
+ arch/arm/mach-vexpress/Kconfig | 4 +
+ arch/arm/mach-vexpress/Makefile | 1 -
+ arch/arm/mach-vexpress/devices.c | 83 ---------------
+ arch/arm/mach-vexpress/include/mach/devices.h | 9 --
+ arch/arm/mach-vexpress/v2m.c | 38 -------
+ images/Makefile | 1 +
+ images/Makefile.vexpress | 11 ++
+ 14 files changed, 93 insertions(+), 285 deletions(-)
+ delete mode 100644 arch/arm/boards/vexpress/defaultenv-vexpress/config
+ create mode 100644 arch/arm/dts/vexpress-v2p-ca15.dts
+ create mode 100644 arch/arm/dts/vexpress-v2p-ca9.dts
+ delete mode 100644 arch/arm/mach-vexpress/devices.c
+ create mode 100644 images/Makefile.vexpress
+
+diff --git a/arch/arm/boards/vexpress/Makefile b/arch/arm/boards/vexpress/Makefile
+index c89d7bf182d0..2da0494d49b3 100644
+--- a/arch/arm/boards/vexpress/Makefile
++++ b/arch/arm/boards/vexpress/Makefile
+@@ -1,4 +1,2 @@
+ obj-y += init.o
+-
+ lwl-y += lowlevel.o
+-bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-vexpress
+diff --git a/arch/arm/boards/vexpress/defaultenv-vexpress/config b/arch/arm/boards/vexpress/defaultenv-vexpress/config
+deleted file mode 100644
+index 6c0abda40c12..000000000000
+--- a/arch/arm/boards/vexpress/defaultenv-vexpress/config
++++ /dev/null
+@@ -1,38 +0,0 @@
+-#!/bin/sh
+-
+-# use 'dhcp' to do dhcp in barebox and in kernel
+-# use 'none' if you want to skip kernel ip autoconfiguration
+-ip=dhcp
+-global.dhcp.vendor_id=barebox-${global.hostname}
+-
+-# or set your networking parameters here
+-#eth0.ipaddr=a.b.c.d
+-#eth0.netmask=a.b.c.d
+-#eth0.gateway=a.b.c.d
+-#eth0.serverip=a.b.c.d
+-
+-# can be either 'nfs', 'tftp' or 'nor'
+-kernel_loc=tftp
+-# can be either 'net', 'nor' or 'initrd'
+-rootfs_loc=initrd
+-
+-# can be either 'jffs2' or 'ubifs'
+-rootfs_type=ubifs
+-rootfsimage=root.$rootfs_type
+-
+-kernelimage=zImage
+-#kernelimage=uImage
+-#kernelimage=Image
+-#kernelimage=Image.lzo
+-
+-nfsroot="$eth0.serverip:/opt/work/busybox/arm9/rootfs_arm"
+-
+-nor_parts="256k(barebox)ro,64k(bareboxenv),1536k(kernel),-(root)"
+-rootfs_mtdblock_nor=3
+-
+-autoboot_timeout=3
+-
+-bootargs="console=ttyAMA0,115200n8 CONSOLE=/dev/ttyAMA0"
+-
+-# set a fancy prompt (if support is compiled in)
+-PS1="\e[1;31m[barebox@\h]:\w\e[0m\n# "
+diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c
+index f89dff939231..1bbc8c347638 100644
+--- a/arch/arm/boards/vexpress/init.c
++++ b/arch/arm/boards/vexpress/init.c
+@@ -11,129 +11,23 @@
+ #include <generated/mach-types.h>
+ #include <mach/devices.h>
+ #include <environment.h>
+-#include <partition.h>
+ #include <linux/sizes.h>
+ #include <io.h>
+ #include <envfs.h>
+ #include <globalvar.h>
+ #include <linux/amba/sp804.h>
+-#include <mci.h>
+-
+-struct vexpress_init {
+- void (*core_init)(void);
+- void (*mem_init)(void);
+- void (*console_init)(void);
+- void (*devices_init)(void);
+-};
+-
+-struct mmci_platform_data mmci_plat = {
+- .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
+- .clkdiv_init = SDI_CLKCR_CLKDIV_INIT,
+-};
+-
+-struct vexpress_init *v2m_init;
+-
+-static void vexpress_ax_mem_init(void)
+-{
+- vexpress_add_ddram(SZ_512M);
+-}
+
+ #define V2M_SYS_FLASH 0x03c
+
+-static void vexpress_ax_devices_init(void)
+-{
+- add_cfi_flash_device(0, 0x08000000, SZ_64M, 0);
+- add_cfi_flash_device(1, 0x0c000000, SZ_64M, 0);
+- vexpress_register_mmc(&mmci_plat);
+- add_generic_device("smc911x", DEVICE_ID_DYNAMIC, NULL, 0x1a000000,
+- 64 * 1024, IORESOURCE_MEM, NULL);
+-}
+-
+-static void vexpress_ax_console_init(void)
+-{
+- vexpress_register_uart(0);
+- vexpress_register_uart(1);
+- vexpress_register_uart(2);
+- vexpress_register_uart(3);
+-}
+-
+-struct vexpress_init vexpress_init_ax = {
+- .core_init = vexpress_init,
+- .mem_init = vexpress_ax_mem_init,
+- .console_init = vexpress_ax_console_init,
+- .devices_init = vexpress_ax_devices_init,
+-};
+-
+-static void vexpress_a9_legacy_mem_init(void)
+-{
+- vexpress_a9_legacy_add_ddram(SZ_512M, SZ_512M);
+-}
+-
+-static void vexpress_a9_legacy_devices_init(void)
+-{
+- add_cfi_flash_device(0, 0x40000000, SZ_64M, 0);
+- add_cfi_flash_device(1, 0x44000000, SZ_64M, 0);
+- add_generic_device("smc911x", DEVICE_ID_DYNAMIC, NULL, 0x4e000000,
+- 64 * 1024, IORESOURCE_MEM, NULL);
+- vexpress_a9_legacy_register_mmc(&mmci_plat);
+- armlinux_set_architecture(MACH_TYPE_VEXPRESS);
+-}
+-
+-static void vexpress_a9_legacy_console_init(void)
+-{
+- vexpress_a9_legacy_register_uart(0);
+- vexpress_a9_legacy_register_uart(1);
+- vexpress_a9_legacy_register_uart(2);
+- vexpress_a9_legacy_register_uart(3);
+-}
+-
+-struct vexpress_init vexpress_init_a9_legacy = {
+- .core_init = vexpress_a9_legacy_init,
+- .mem_init = vexpress_a9_legacy_mem_init,
+- .console_init = vexpress_a9_legacy_console_init,
+- .devices_init = vexpress_a9_legacy_devices_init,
+-};
+-
+-static int vexpress_mem_init(void)
+-{
+- v2m_init->mem_init();
+-
+- return 0;
+-}
+-mem_initcall(vexpress_mem_init);
+-
+-static int vexpress_devices_init(void)
+-{
+- writel(1, v2m_sysreg_base + V2M_SYS_FLASH);
+- v2m_init->devices_init();
+-
+- devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self");
+- devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0");
+-
+- if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC))
+- defaultenv_append_directory(defaultenv_vexpress);
+-
+- return 0;
+-}
+-device_initcall(vexpress_devices_init);
+-
+-static int vexpress_console_init(void)
+-{
+- v2m_init->console_init();
+-
+- return 0;
+-}
+-console_initcall(vexpress_console_init);
+-
+ static int vexpress_core_init(void)
+ {
+ char *hostname = "vexpress-unknown";
+
+ if (amba_is_arm_sp804(IOMEM(0x10011000))) {
+- v2m_init = &vexpress_init_a9_legacy;
++ vexpress_a9_legacy_init();
+ hostname = "vexpress-a9-legacy";
+ } else {
+- v2m_init = &vexpress_init_ax;
++ vexpress_init();
+ if (cpu_is_cortex_a5())
+ hostname = "vexpress-a5";
+ else if (cpu_is_cortex_a7())
+@@ -144,10 +38,9 @@ static int vexpress_core_init(void)
+ hostname = "vexpress-a15";
+ }
+
+- barebox_set_model("ARM Vexpress");
+- barebox_set_hostname(hostname);
++ writel(1, v2m_sysreg_base + V2M_SYS_FLASH);
+
+- v2m_init->core_init();
++ barebox_set_hostname(hostname);
+
+ return 0;
+ }
+diff --git a/arch/arm/boards/vexpress/lowlevel.c b/arch/arm/boards/vexpress/lowlevel.c
+index 204d29d8f098..0a226b295c2a 100644
+--- a/arch/arm/boards/vexpress/lowlevel.c
++++ b/arch/arm/boards/vexpress/lowlevel.c
+@@ -11,12 +11,26 @@
+ #include <asm/system_info.h>
+ #include <linux/amba/sp804.h>
+
+-void __naked barebox_arm_reset_vector(void)
++static inline void start_vexpress_common(void *internal_dt)
+ {
++ void *fdt = internal_dt - get_runtime_offset();
++
+ arm_cpu_lowlevel_init();
+
+ if (amba_is_arm_sp804(IOMEM(0x10011000)))
+- barebox_arm_entry(0x60000000, SZ_512M, NULL);
++ barebox_arm_entry(0x60000000, SZ_512M, fdt);
+ else
+- barebox_arm_entry(0x80000000, SZ_512M, NULL);
++ barebox_arm_entry(0x80000000, SZ_512M, fdt);
++}
++
++extern char __dtb_vexpress_v2p_ca9_start[];
++ENTRY_FUNCTION(start_vexpress_ca9, r0, r1, r2)
++{
++ start_vexpress_common(__dtb_vexpress_v2p_ca9_start);
++}
++
++extern char __dtb_vexpress_v2p_ca15_start[];
++ENTRY_FUNCTION(start_vexpress_ca15, r0, r1, r2)
++{
++ start_vexpress_common(__dtb_vexpress_v2p_ca15_start);
+ }
+diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
+index d8abe452b40b..c5e48092d344 100644
+--- a/arch/arm/dts/Makefile
++++ b/arch/arm/dts/Makefile
+@@ -87,6 +87,8 @@ pbl-dtb-$(CONFIG_MACH_TURRIS_OMNIA) += armada-385-turris-omnia-bb.dtb.o
+ pbl-dtb-$(CONFIG_MACH_UDOO) += imx6q-udoo.dtb.o
+ pbl-dtb-$(CONFIG_MACH_USI_TOPKICK) += kirkwood-topkick-bb.dtb.o
+ pbl-dtb-$(CONFIG_MACH_VARISCITE_MX6) += imx6q-var-custom.dtb.o
++pbl-dtb-$(CONFIG_MACH_VEXPRESS) += vexpress-v2p-ca9.dtb.o
++pbl-dtb-$(CONFIG_MACH_VEXPRESS) += vexpress-v2p-ca15.dtb.o
+ pbl-dtb-$(CONFIG_MACH_VSCOM_BALTOS) += am335x-baltos-minimal.dtb.o
+ pbl-dtb-$(CONFIG_MACH_WARP7) += imx7s-warp.dtb.o
+ pbl-dtb-$(CONFIG_MACH_VF610_TWR) += vf610-twr.dtb.o
+diff --git a/arch/arm/dts/vexpress-v2p-ca15.dts b/arch/arm/dts/vexpress-v2p-ca15.dts
+new file mode 100644
+index 000000000000..211eaccb6238
+--- /dev/null
++++ b/arch/arm/dts/vexpress-v2p-ca15.dts
+@@ -0,0 +1,27 @@
++#include <arm/vexpress-v2p-ca15_a7.dts>
++
++/ {
++ barebox_environment {
++ compatible = "barebox,environment";
++ device-path = &barebox_env;
++ };
++
++ smb@8000000 {
++ motherboard {
++ flash@0,00000000 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ partition@0 {
++ label = "barebox";
++ reg = <0x0 0x80000>;
++ };
++
++ barebox_env: partition@80000 {
++ label = "barebox-environment";
++ reg = <0x80000 0x80000>;
++ };
++ };
++ };
++ };
++};
+diff --git a/arch/arm/dts/vexpress-v2p-ca9.dts b/arch/arm/dts/vexpress-v2p-ca9.dts
+new file mode 100644
+index 000000000000..541840ae22dc
+--- /dev/null
++++ b/arch/arm/dts/vexpress-v2p-ca9.dts
+@@ -0,0 +1,27 @@
++#include <arm/vexpress-v2p-ca9.dts>
++
++/ {
++ barebox_environment {
++ compatible = "barebox,environment";
++ device-path = &barebox_env;
++ };
++
++ smb@4000000 {
++ motherboard {
++ flash@0,00000000 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ partition@0 {
++ label = "barebox";
++ reg = <0x0 0x80000>;
++ };
++
++ barebox_env: partition@80000 {
++ label = "barebox-environment";
++ reg = <0x80000 0x80000>;
++ };
++ };
++ };
++ };
++};
+diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
+index 1d5e293602f6..aaa535f073a5 100644
+--- a/arch/arm/mach-vexpress/Kconfig
++++ b/arch/arm/mach-vexpress/Kconfig
+@@ -10,6 +10,10 @@ choice
+ config MACH_VEXPRESS
+ bool "ARM Vexpress"
+ select RELOCATABLE
++ select HAVE_PBL_MULTI_IMAGES
++ select OFTREE
++ select OFDEVICE
++ select COMMON_CLK_OF_PROVIDER
+
+ endchoice
+
+diff --git a/arch/arm/mach-vexpress/Makefile b/arch/arm/mach-vexpress/Makefile
+index 74b4a0feb2e2..9a06e648a6f1 100644
+--- a/arch/arm/mach-vexpress/Makefile
++++ b/arch/arm/mach-vexpress/Makefile
+@@ -1,3 +1,2 @@
+ obj-y += v2m.o
+-obj-y += devices.o
+ obj-y += reset.o
+diff --git a/arch/arm/mach-vexpress/devices.c b/arch/arm/mach-vexpress/devices.c
+deleted file mode 100644
+index 5b530119245d..000000000000
+--- a/arch/arm/mach-vexpress/devices.c
++++ /dev/null
+@@ -1,83 +0,0 @@
+-/*
+- * Copyright (C) 2013 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+- *
+- * GPLv2 only
+- */
+-
+-#include <common.h>
+-
+-#include <linux/amba/bus.h>
+-
+-#include <asm/memory.h>
+-
+-#include <mach/devices.h>
+-
+-void vexpress_a9_legacy_add_ddram(u32 ddr0_size, u32 ddr1_size)
+-{
+- arm_add_mem_device("ram0", 0x60000000, ddr0_size);
+-
+- if (ddr1_size)
+- arm_add_mem_device("ram1", 0x80000000, ddr1_size);
+-}
+-
+-void vexpress_a9_legacy_register_uart(unsigned id)
+-{
+- resource_size_t start;
+-
+- switch (id) {
+- case 0:
+- start = 0x10009000;
+- break;
+- case 1:
+- start = 0x1000a000;
+- break;
+- case 2:
+- start = 0x1000b000;
+- break;
+- case 3:
+- start = 0x1000c000;
+- break;
+- default:
+- return;
+- }
+- amba_apb_device_add(NULL, "uart-pl011", id, start, 4096, NULL, 0);
+-}
+-
+-void vexpress_a9_legacy_register_mmc(struct mmci_platform_data *plat)
+-{
+- amba_apb_device_add(NULL, "mmci-pl18x", DEVICE_ID_SINGLE, 0x10005000,
+- 4096, plat, 0);
+-}
+-
+-void vexpress_add_ddram(u32 size)
+-{
+- arm_add_mem_device("ram1", 0x80000000, size);
+-}
+-
+-void vexpress_register_uart(unsigned id)
+-{
+- resource_size_t start;
+-
+- switch (id) {
+- case 0:
+- start = 0x1c090000;
+- break;
+- case 1:
+- start = 0x1c0a0000;
+- break;
+- case 2:
+- start = 0x1c0b0000;
+- break;
+- case 3:
+- start = 0x1c0c0000;
+- break;
+- default:
+- return;
+- }
+- amba_apb_device_add(NULL, "uart-pl011", id, start, 4096, NULL, 0);
+-}
+-
+-void vexpress_register_mmc(struct mmci_platform_data *plat)
+-{
+- amba_apb_device_add(NULL, "mmci-pl18x", DEVICE_ID_SINGLE, 0x1c050000, 4096, plat, 0);
+-}
+diff --git a/arch/arm/mach-vexpress/include/mach/devices.h b/arch/arm/mach-vexpress/include/mach/devices.h
+index 96d14005017e..bef8c8b94fb9 100644
+--- a/arch/arm/mach-vexpress/include/mach/devices.h
++++ b/arch/arm/mach-vexpress/include/mach/devices.h
+@@ -9,18 +9,9 @@
+
+ #include <linux/amba/mmci.h>
+
+-void vexpress_a9_legacy_add_ddram(u32 ddr0_size, u32 ddr1_size);
+-void vexpress_add_ddram(u32 size);
+-
+-void vexpress_a9_legacy_register_uart(unsigned id);
+-void vexpress_register_uart(unsigned id);
+-
+ void vexpress_a9_legacy_init(void);
+ void vexpress_init(void);
+
+-void vexpress_a9_legacy_register_mmc(struct mmci_platform_data *plat);
+-void vexpress_register_mmc(struct mmci_platform_data *plat);
+-
+ extern void *v2m_wdt_base;
+ extern void *v2m_sysreg_base;
+
+diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
+index 025bbb17fc6e..35352628482c 100644
+--- a/arch/arm/mach-vexpress/v2m.c
++++ b/arch/arm/mach-vexpress/v2m.c
+@@ -19,31 +19,6 @@
+
+ void __iomem *v2m_sysreg_base;
+
+-static const char *v2m_osc2_periphs[] = {
+- "mb:mmci", "mmci-pl18x", /* PL180 MMCI */
+- "mb:uart0", "uart-pl0110", /* PL011 UART0 */
+- "mb:uart1", "uart-pl0111", /* PL011 UART1 */
+- "mb:uart2", "uart-pl0112", /* PL011 UART2 */
+- "mb:uart3", "uart-pl0113", /* PL011 UART3 */
+-};
+-
+-static void v2m_clk_init(void)
+-{
+- struct clk *clk;
+- int i;
+-
+- clk = clk_fixed("dummy_apb_pclk", 0);
+- clk_register_clkdev(clk, "apb_pclk", NULL);
+-
+- clk = clk_fixed("mb:sp804_clk", 1000000);
+- clk_register_clkdev(clk, NULL, "sp804");
+-
+- clk = clk_fixed("mb:osc2", 24000000);
+- for (i = 0; i < ARRAY_SIZE(v2m_osc2_periphs); i++)
+- clk_register_clkdev(clk, NULL, v2m_osc2_periphs[i]);
+-
+-}
+-
+ static void v2m_sysctl_init(void __iomem *base)
+ {
+ u32 scctrl;
+@@ -58,21 +33,11 @@ static void v2m_sysctl_init(void __iomem *base)
+ writel(scctrl, base + SCCTRL);
+ }
+
+-static void __init v2m_sp804_init(void __iomem *base)
+-{
+- writel(0, base + TIMER_1_BASE + TIMER_CTRL);
+-
+- amba_apb_device_add(NULL, "sp804", DEVICE_ID_SINGLE, (resource_size_t)base, 4096, NULL, 0);
+-}
+-
+ void vexpress_a9_legacy_init(void)
+ {
+ v2m_wdt_base = IOMEM(0x1000f000);
+ v2m_sysreg_base = IOMEM(0x10001000);
+ v2m_sysctl_init(IOMEM(0x10001000));
+- v2m_clk_init();
+-
+- v2m_sp804_init(IOMEM(0x10011000));
+ }
+
+ void vexpress_init(void)
+@@ -80,7 +45,4 @@ void vexpress_init(void)
+ v2m_wdt_base = IOMEM(0x1c0f0000);
+ v2m_sysreg_base = IOMEM(0x1c020000);
+ v2m_sysctl_init(IOMEM(0x1c020000));
+- v2m_clk_init();
+-
+- v2m_sp804_init(IOMEM(0x1c110000));
+ }
+diff --git a/images/Makefile b/images/Makefile
+index 705c8ad03eda..5c4d99ac5add 100644
+--- a/images/Makefile
++++ b/images/Makefile
+@@ -111,6 +111,7 @@ include $(srctree)/images/Makefile.omap3
+ include $(srctree)/images/Makefile.rockchip
+ include $(srctree)/images/Makefile.socfpga
+ include $(srctree)/images/Makefile.tegra
++include $(srctree)/images/Makefile.vexpress
+ include $(srctree)/images/Makefile.at91
+
+ targets += $(image-y) pbl.lds barebox.x barebox.z
+diff --git a/images/Makefile.vexpress b/images/Makefile.vexpress
+new file mode 100644
+index 000000000000..0f12dc12a534
+--- /dev/null
++++ b/images/Makefile.vexpress
+@@ -0,0 +1,11 @@
++#
++# barebox image generation Makefile for VExpress images
++#
++
++pblx-$(CONFIG_MACH_VEXPRESS) += start_vexpress_ca9
++FILE_barebox-vexpress-ca9.img = start_vexpress_ca9.pblx
++image-$(CONFIG_MACH_VEXPRESS) += barebox-vexpress-ca9.img
++
++pblx-$(CONFIG_MACH_VEXPRESS) += start_vexpress_ca15
++FILE_barebox-vexpress-ca15.img = start_vexpress_ca15.pblx
++image-$(CONFIG_MACH_VEXPRESS) += barebox-vexpress-ca15.img
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0007-ARM-vexpress-regenerate-config.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0007-ARM-vexpress-regenerate-config.patch
new file mode 100644
index 0000000..a370a27
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0007-ARM-vexpress-regenerate-config.patch
@@ -0,0 +1,63 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Fri, 1 Sep 2017 19:08:04 +0200
+Subject: [PATCH] ARM: vexpress: regenerate config
+
+Enable some more features, so the default configuration gets more
+in line with other platforms.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ arch/arm/configs/vexpress_defconfig | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/configs/vexpress_defconfig b/arch/arm/configs/vexpress_defconfig
+index e31da4a8c668..f6a57de75cd9 100644
+--- a/arch/arm/configs/vexpress_defconfig
++++ b/arch/arm/configs/vexpress_defconfig
+@@ -4,7 +4,6 @@ CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
+ CONFIG_MALLOC_SIZE=0x0
+ CONFIG_MALLOC_TLSF=y
+ CONFIG_PROMPT="vexpress: "
+-CONFIG_GLOB=y
+ CONFIG_HUSH_FANCY_PROMPT=y
+ CONFIG_CMDLINE_EDITING=y
+ CONFIG_AUTO_COMPLETE=y
+@@ -12,9 +11,10 @@ CONFIG_MENU=y
+ CONFIG_BOOTM_SHOW_TYPE=y
+ CONFIG_BOOTM_VERBOSE=y
+ CONFIG_BOOTM_INITRD=y
+-CONFIG_PARTITION=y
+-CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y
++CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
++CONFIG_CMD_DMESG=y
+ CONFIG_LONGHELP=y
++CONFIG_CMD_IOMEM=y
+ CONFIG_CMD_MEMINFO=y
+ # CONFIG_CMD_BOOTU is not set
+ CONFIG_CMD_GO=y
+@@ -38,15 +38,25 @@ CONFIG_CMD_MENU_MANAGEMENT=y
+ CONFIG_CMD_PASSWD=y
+ CONFIG_CMD_READLINE=y
+ CONFIG_CMD_TIMEOUT=y
++CONFIG_CMD_CRC=y
++CONFIG_CMD_CRC_CMP=y
+ CONFIG_CMD_CLK=y
++CONFIG_CMD_DETECT=y
+ CONFIG_CMD_OFTREE=y
+ CONFIG_NET=y
+ CONFIG_NET_NFS=y
+ CONFIG_NET_NETCONSOLE=y
+ CONFIG_NET_RESOLV=y
++CONFIG_OF_BAREBOX_DRIVERS=y
+ CONFIG_SERIAL_AMBA_PL011=y
+ CONFIG_DRIVER_NET_SMC91111=y
+ # CONFIG_SPI is not set
++CONFIG_MTD=y
++CONFIG_MTD_CONCAT=y
++CONFIG_DRIVER_CFI=y
++CONFIG_MCI=y
++CONFIG_MCI_MMCI=y
++# CONFIG_PINCTRL is not set
+ CONFIG_FS_TFTP=y
+ CONFIG_DIGEST_SHA1_GENERIC=y
+ CONFIG_DIGEST_SHA256_GENERIC=y
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0008-docs-add-qemu-vexpress.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0008-docs-add-qemu-vexpress.patch
new file mode 100644
index 0000000..989dbb6
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0008-docs-add-qemu-vexpress.patch
@@ -0,0 +1,38 @@
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Mon, 4 Sep 2017 12:22:06 +0200
+Subject: [PATCH] docs: add qemu vexpress
+
+Add a basic command line for QEMU vexpress.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+---
+ Documentation/boards/arm-qemu-vexpress.rst | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+ create mode 100644 Documentation/boards/arm-qemu-vexpress.rst
+
+diff --git a/Documentation/boards/arm-qemu-vexpress.rst b/Documentation/boards/arm-qemu-vexpress.rst
+new file mode 100644
+index 000000000000..dcbac8e62557
+--- /dev/null
++++ b/Documentation/boards/arm-qemu-vexpress.rst
+@@ -0,0 +1,20 @@
++QEMU vexpress
++=======
++
++ARM Qemu vexpress
++-----------------
++
++Running barebox on QEMU vexpress machine
++^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
++
++Usage::
++
++ $ qemu-system-arm -m 1024M \
++ -machine vexpress-a9 -cpu cortex-a9 \
++ -nographic -no-reboot \
++ -kernel images/barebox-vexpress-ca9.img
++
++ $ qemu-system-arm -m 1024M \
++ -machine vexpress-a15 -cpu cortex-a15 \
++ -nographic -no-reboot \
++ -kernel images/barebox-vexpress-ca15.img
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[];
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0003-vexpress-add-bootstate-node-to-the-device-tree.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0010-vexpress-add-bootstate-node-to-the-device-tree.patch
index 27cfa0b..27cfa0b 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0003-vexpress-add-bootstate-node-to-the-device-tree.patch
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0010-vexpress-add-bootstate-node-to-the-device-tree.patch
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0004-of-base-add-funtion-to-copy-a-device-tree-node.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch
index af6cc6c..9ea3cb4 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0004-of-base-add-funtion-to-copy-a-device-tree-node.patch
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch
@@ -9,7 +9,7 @@ Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
2 files changed, 18 insertions(+)
diff --git a/drivers/of/base.c b/drivers/of/base.c
-index ea330d131012..b6e90f2adb09 100644
+index 1649148dc0c6..4734f4332050 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1965,6 +1965,22 @@ out:
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0006-common-oftree-add-fixup-handler-for-virtio-mmio-devi.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
index 8b64d2f..ff407c9 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0006-common-oftree-add-fixup-handler-for-virtio-mmio-devi.patch
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
@@ -1,6 +1,6 @@
From: Michael Olbrich <m.olbrich@pengutronix.de>
Date: Tue, 13 Sep 2016 21:20:10 +0200
-Subject: [PATCH] common: oftree: add fixup handler for 'virtio,mmio' devices
+Subject: [PATCH] ARM: vexpress: add fixup handler for 'virtio,mmio' devices
Qemu adds 'virtio,mmio' nodes to the device tree. Before passing it to the
bootloader or the Linux kernel. This fixup handler copies these nodes to
@@ -12,22 +12,14 @@ v2:
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
---
- arch/arm/boards/vexpress/init.c | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
+ arch/arm/boards/vexpress/init.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
diff --git a/arch/arm/boards/vexpress/init.c b/arch/arm/boards/vexpress/init.c
-index 68ebbfab2633..8655b7e17c97 100644
+index 1bbc8c347638..946385393f44 100644
--- a/arch/arm/boards/vexpress/init.c
+++ b/arch/arm/boards/vexpress/init.c
-@@ -18,6 +18,7 @@
- #include <globalvar.h>
- #include <linux/amba/sp804.h>
- #include <mci.h>
-+#include <of.h>
-
- struct vexpress_init {
- void (*core_init)(void);
-@@ -156,3 +157,32 @@ static int vexpress_core_init(void)
+@@ -45,3 +45,32 @@ static int vexpress_core_init(void)
return 0;
}
postcore_initcall(vexpress_core_init);
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0201-ARM-imx-add-support-for-Udoo-Neo-full.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0201-ARM-imx-add-support-for-Udoo-Neo-full.patch
index 59a5c34..dfabd02 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0201-ARM-imx-add-support-for-Udoo-Neo-full.patch
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0201-ARM-imx-add-support-for-Udoo-Neo-full.patch
@@ -254,7 +254,7 @@ index 000000000000..e78c2685fd78
+ imx6sx_barebox_entry(fdt);
+}
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
-index d8abe452b40b..71ab6b701568 100644
+index c5e48092d344..f5b37891c400 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -85,6 +85,7 @@ pbl-dtb-$(CONFIG_MACH_TX6X) += imx6dl-tx6u.dtb.o
@@ -264,7 +264,7 @@ index d8abe452b40b..71ab6b701568 100644
+pbl-dtb-$(CONFIG_MACH_UDOO_NEO) += imx6sx-udoo-neo-full.dtb.o
pbl-dtb-$(CONFIG_MACH_USI_TOPKICK) += kirkwood-topkick-bb.dtb.o
pbl-dtb-$(CONFIG_MACH_VARISCITE_MX6) += imx6q-var-custom.dtb.o
- pbl-dtb-$(CONFIG_MACH_VSCOM_BALTOS) += am335x-baltos-minimal.dtb.o
+ pbl-dtb-$(CONFIG_MACH_VEXPRESS) += vexpress-v2p-ca9.dtb.o
diff --git a/arch/arm/dts/imx6sx-udoo-neo-full.dts b/arch/arm/dts/imx6sx-udoo-neo-full.dts
new file mode 100644
index 000000000000..9203d40207c5
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170822-1.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170912-1.patch
index 6fe829d..fc782e1 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170822-1.patch
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0301-Release-2017.08.0-pengutronix-multi_v7-20170912-1.patch
@@ -1,6 +1,6 @@
From: Robert Schwebel <r.schwebel@pengutronix.de>
-Date: Tue, 22 Aug 2017 18:26:22 +0200
-Subject: [PATCH] Release 2017.08.0/pengutronix/multi_v7/20170822-1
+Date: Tue, 12 Sep 2017 20:20:05 +0200
+Subject: [PATCH] Release 2017.08.0/pengutronix/multi_v7/20170912-1
Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
---
@@ -8,7 +8,7 @@ Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
-index ab44a1383365..eabe0ad5dc59 100644
+index ab44a1383365..ebad7750d2f3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
@@ -16,7 +16,7 @@ index ab44a1383365..eabe0ad5dc59 100644
PATCHLEVEL = 08
SUBLEVEL = 0
-EXTRAVERSION =
-+EXTRAVERSION =-20170822-1
++EXTRAVERSION =-20170912-1
NAME = None
# *DOCUMENTATION*
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/series b/configs/platform-v7a/patches/barebox-2017.08.0/series
index 240cc72..b302dd7 100644
--- a/configs/platform-v7a/patches/barebox-2017.08.0/series
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/series
@@ -1,24 +1,30 @@
# umpf-base: v2017.08.0
# umpf-name: 2017.08.0/pengutronix/multi_v7
-# umpf-version: 2017.08.0/pengutronix/multi_v7/20170822-1
+# umpf-version: 2017.08.0/pengutronix/multi_v7/20170912-1
# umpf-topic: v2017.08.0/topic/vexpress
-# umpf-hashinfo: db4b9b7d1ffde3c6ba557654a09380b54a3fdfe7
-# umpf-topic-range: fbde027fdb1d8725253787dd3416702255e646f7..db4b9b7d1ffde3c6ba557654a09380b54a3fdfe7
-0001-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
-0002-vexpress-device-tree-support.patch
-0003-vexpress-add-bootstate-node-to-the-device-tree.patch
-0004-of-base-add-funtion-to-copy-a-device-tree-node.patch
-0005-commands-of_dump-don-t-use-flatten-unflatten-to-copy.patch
-0006-common-oftree-add-fixup-handler-for-virtio-mmio-devi.patch
+# umpf-hashinfo: 88699e144e8ee41ceafdfeb5dd43ab7584993707
+# umpf-topic-range: fbde027fdb1d8725253787dd3416702255e646f7..11c57f10775f6f2f8f7c985f87c030d49cc0841f
+0001-ARM-vexpress-always-build-relocatable-image.patch
+0002-of-populate-clock-providers-before-other-devices.patch
+0003-clk-versatile-add-basic-clocks.patch
+0004-clocksource-sp804-silently-ignore-secondary-instaces.patch
+0005-mci-mmci-add-DT-support.patch
+0006-ARM-vexpress-switch-to-DT-probe-and-multi-image-buil.patch
+0007-ARM-vexpress-regenerate-config.patch
+0008-docs-add-qemu-vexpress.patch
+0009-vexpress-use-device-tree-provided-by-QEMU-if-availab.patch
+0010-vexpress-add-bootstate-node-to-the-device-tree.patch
+0011-of-base-add-funtion-to-copy-a-device-tree-node.patch
+0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
# umpf-topic: v2017.08.0/customers/pengutronix/beaglebone
# umpf-hashinfo: a35d1683996a55b567b71078bc47fc0d87b9c55a
-# umpf-topic-range: db4b9b7d1ffde3c6ba557654a09380b54a3fdfe7..61098368af6b9a173ce190d89a7bd04bd6880c53
+# umpf-topic-range: 11c57f10775f6f2f8f7c985f87c030d49cc0841f..44cdb676b391ed93208ae3458e0fdca3dca955c9
0101-beaglebone-add-state-entry-for-mmc0-and-mmc1.patch
# umpf-topic: v2017.08.0/customers/pengutronix/udoo-neo
# umpf-hashinfo: 42d6d5080ecc2082cf4df521679b6463844dcec3
-# umpf-topic-range: 61098368af6b9a173ce190d89a7bd04bd6880c53..1b809bf26f52d8a511bacc3ad59d7ec33f369bb4
+# umpf-topic-range: 44cdb676b391ed93208ae3458e0fdca3dca955c9..96dd12b2b7c81de89f4840de32d479f7a104e9f7
0201-ARM-imx-add-support-for-Udoo-Neo-full.patch
-# umpf-release: 2017.08.0/pengutronix/multi_v7/20170822-1
-# umpf-topic-range: 1b809bf26f52d8a511bacc3ad59d7ec33f369bb4..60b688a82177e5819aeaab31769aacd0d5ffd1ea
-0301-Release-2017.08.0-pengutronix-multi_v7-20170822-1.patch
+# umpf-release: 2017.08.0/pengutronix/multi_v7/20170912-1
+# umpf-topic-range: 96dd12b2b7c81de89f4840de32d479f7a104e9f7..49033bd69393ab22402d248544ca4391076dcc3d
+0301-Release-2017.08.0-pengutronix-multi_v7-20170912-1.patch
# umpf-end
diff --git a/configs/platform-v7a/rules/barebox-vexpress.make b/configs/platform-v7a/rules/barebox-vexpress.make
index ffd37f8..b2086e6 100644
--- a/configs/platform-v7a/rules/barebox-vexpress.make
+++ b/configs/platform-v7a/rules/barebox-vexpress.make
@@ -42,7 +42,7 @@ BAREBOX_VEXPRESS_CONF_OPT := $(call barebox-opts, BAREBOX_VEXPRESS)
BAREBOX_VEXPRESS_MAKE_ENV := $(BAREBOX_VEXPRESS_CONF_ENV)
BAREBOX_VEXPRESS_MAKE_OPT := $(BAREBOX_VEXPRESS_CONF_OPT)
-BAREBOX_VEXPRESS_IMAGES := barebox.bin
+BAREBOX_VEXPRESS_IMAGES := images/barebox-vexpress-ca9.img
BAREBOX_VEXPRESS_IMAGES := $(addprefix $(BAREBOX_VEXPRESS_DIR)/,$(BAREBOX_VEXPRESS_IMAGES))
ifdef PTXCONF_BAREBOX_VEXPRESS
@@ -69,7 +69,7 @@ $(STATEDIR)/barebox-vexpress.install:
@$(call targetinfo)
@$(foreach image, $(BAREBOX_VEXPRESS_IMAGES), \
install -m 644 \
- $(image) $(IMAGEDIR)/$(notdir $(image))-vexpress;)
+ $(image) $(IMAGEDIR)/$(notdir $(image));)
@install -D -m644 $(BAREBOX_VEXPRESS_DIR)/defaultenv/barebox_zero_env $(IMAGEDIR)/barebox-zero-env-vexpress
@install -D -m644 $(BAREBOX_VEXPRESS_DIR)/arch/arm/dts/vexpress-v2p-ca9.dtb $(IMAGEDIR)/bb-vexpress-v2p-ca9.dtb
@$(call touch)
@@ -82,7 +82,7 @@ $(STATEDIR)/barebox-vexpress.clean:
@$(call targetinfo)
@$(call clean_pkg, BAREBOX_VEXPRESS)
@$(foreach image, $(BAREBOX_VEXPRESS_IMAGES), \
- rm -fv $(IMAGEDIR)/$(notdir $(image))-vexpress;)
+ rm -fv $(IMAGEDIR)/$(notdir $(image));)
# ----------------------------------------------------------------------------
# oldconfig / menuconfig