From 2532fa8e1faf66f5ee0dc52a5deafaba74a96562 Mon Sep 17 00:00:00 2001 From: Robert Schwebel Date: Wed, 6 Sep 2017 10:40:11 +0200 Subject: platform-v7a: barebox: use reworked vexpress patches The vexpress patch series has recently been reworked. Use it. Signed-off-by: Robert Schwebel Reviewed-by: Rouven Czerwinski --- ...s-add-fixup-handler-for-virtio-mmio-devic.patch | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch (limited to 'configs/platform-v7a/patches/barebox-2017.08.0/0012-ARM-vexpress-add-fixup-handler-for-virtio-mmio-devic.patch') 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 +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 +Signed-off-by: Rouven Czerwinski +--- + 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); -- cgit v1.2.3