aboutsummaryrefslogtreecommitdiff
path: root/livetree.c
diff options
context:
space:
mode:
authorPantelis Antoniou <pantelis.antoniou@konsulko.com>2017-06-14 17:53:05 +0300
committerDavid Gibson <david@gibson.dropbear.id.au>2017-09-28 15:44:22 +1000
commit737b2df39cc8c5667e66b006618293d13905cf78 (patch)
treee67e8310535c09cd1c25871ea1a5e33c7374ae1e /livetree.c
parent497432fd2131967f349e69dc5d259072151cc4b4 (diff)
downloaddtc-737b2df39cc8c5667e66b006618293d13905cf78.zip
dtc-737b2df39cc8c5667e66b006618293d13905cf78.tar.gz
dtc-737b2df39cc8c5667e66b006618293d13905cf78.tar.bz2
overlay: Add syntactic sugar version of overlays
For simple overlays that use a single target there exists a simpler syntax version. &foo { }; generates an overlay with a single target at foo. Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'livetree.c')
-rw-r--r--livetree.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/livetree.c b/livetree.c
index c815176..6846ad2 100644
--- a/livetree.c
+++ b/livetree.c
@@ -216,6 +216,28 @@ struct node *merge_nodes(struct node *old_node, struct node *new_node)
return old_node;
}
+void add_orphan_node(struct node *dt, struct node *new_node, char *ref)
+{
+ static unsigned int next_orphan_fragment = 0;
+ struct node *node;
+ struct property *p;
+ struct data d = empty_data;
+ char *name;
+
+ d = data_add_marker(d, REF_PHANDLE, ref);
+ d = data_append_integer(d, 0xffffffff, 32);
+
+ p = build_property("target", d);
+
+ xasprintf(&name, "fragment@%u",
+ next_orphan_fragment++);
+ name_node(new_node, "__overlay__");
+ node = build_node(p, new_node);
+ name_node(node, name);
+
+ add_child(dt, node);
+}
+
struct node *chain_node(struct node *first, struct node *list)
{
assert(first->next_sibling == NULL);