summaryrefslogtreecommitdiffstats
path: root/configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch
diff options
context:
space:
mode:
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch')
-rw-r--r--configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2017.08.0/0011-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
new file mode 100644
index 0000000..9ea3cb4
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2017.08.0/0011-of-base-add-funtion-to-copy-a-device-tree-node.patch
@@ -0,0 +1,50 @@
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Tue, 13 Sep 2016 21:17:12 +0200
+Subject: [PATCH] of: base: add funtion to copy a device tree node
+
+Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
+---
+ drivers/of/base.c | 16 ++++++++++++++++
+ include/of.h | 2 ++
+ 2 files changed, 18 insertions(+)
+
+diff --git a/drivers/of/base.c b/drivers/of/base.c
+index 1649148dc0c6..4734f4332050 100644
+--- a/drivers/of/base.c
++++ b/drivers/of/base.c
+@@ -1965,6 +1965,22 @@ out:
+ return dn;
+ }
+
++struct device_node *of_copy_node(struct device_node *parent, const struct device_node *other)
++{
++ struct device_node *np, *child;
++ struct property *pp;
++
++ np = of_new_node(parent, other->name);
++
++ list_for_each_entry(pp, &other->properties, list)
++ of_new_property(np, pp->name, pp->value, pp->length);
++
++ for_each_child_of_node(other, child)
++ of_copy_node(np, child);
++
++ return np;
++}
++
+ void of_delete_node(struct device_node *node)
+ {
+ struct device_node *n, *nt;
+diff --git a/include/of.h b/include/of.h
+index 0ba73f197f28..c1136708ce6c 100644
+--- a/include/of.h
++++ b/include/of.h
+@@ -144,6 +144,8 @@ extern struct device_node *of_new_node(struct device_node *parent,
+ const char *name);
+ extern struct device_node *of_create_node(struct device_node *root,
+ const char *path);
++extern struct device_node *of_copy_node(struct device_node *parent,
++ const struct device_node *other);
+ extern void of_delete_node(struct device_node *node);
+
+ extern int of_machine_is_compatible(const char *compat);