summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2017-09-06 10:40:11 +0200
committerRobert Schwebel <r.schwebel@pengutronix.de>2017-10-11 15:16:43 +0200
commit2532fa8e1faf66f5ee0dc52a5deafaba74a96562 (patch)
treef25780f1ab26efcf5a379a3608bfafe34bc0ea9c /configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
parent71edf02b1f3e89582e268420e66c401040a197ca (diff)
downloadDistroKit-2532fa8e1faf66f5ee0dc52a5deafaba74a96562.tar.gz
DistroKit-2532fa8e1faf66f5ee0dc52a5deafaba74a96562.tar.xz
platform-v7a: barebox: use reworked vexpress patches
The vexpress patch series has recently been reworked. Use it. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> Reviewed-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch')
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch b/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
new file mode 100644
index 0000000..ff407c9
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch
@@ -0,0 +1,54 @@
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Tue, 13 Sep 2016 21:20:10 +0200
+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
+the new device tree.
+
+v2:
+- move from general to platform specific init
+
+Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
+Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
+---
+ 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 1bbc8c347638..946385393f44 100644
+--- a/arch/arm/boards/vexpress/init.c
++++ b/arch/arm/boards/vexpress/init.c
+@@ -45,3 +45,32 @@ static int vexpress_core_init(void)
+ return 0;
+ }
+ postcore_initcall(vexpress_core_init);
++
++static int of_fixup_virtio_mmio(struct device_node *root, void *unused)
++{
++ struct device_node *barebox_root, *np, *parent;
++
++ barebox_root = of_get_root_node();
++ if (root == barebox_root)
++ return 0;
++
++ for_each_compatible_node_from(np, barebox_root, NULL, "virtio,mmio") {
++ if (of_get_parent(np) == barebox_root)
++ parent = root;
++ else
++ parent = of_find_node_by_path_from(root,
++ of_get_parent(np)->full_name);
++ if (!parent)
++ return -EINVAL;
++
++ of_copy_node(parent, np);
++ }
++
++ return 0;
++}
++
++static int of_register_virtio_mmio_fixup(void)
++{
++ return of_register_fixup(of_fixup_virtio_mmio, NULL);
++}
++late_initcall(of_register_virtio_mmio_fixup);