summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/device.c14
-rw-r--r--include/device.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/core/device.c b/core/device.c
index d0731b14..30b31f46 100644
--- a/core/device.c
+++ b/core/device.c
@@ -352,6 +352,20 @@ struct dt_node *dt_find_by_name(struct dt_node *root, const char *name)
return NULL;
}
+
+struct dt_node *dt_new_check(struct dt_node *parent, const char *name)
+{
+ struct dt_node *node = dt_find_by_name(parent, name);
+
+ if (!node) {
+ node = dt_new(parent, name);
+ assert(node);
+ }
+
+ return node;
+}
+
+
struct dt_node *dt_find_by_phandle(struct dt_node *root, u32 phandle)
{
struct dt_node *node;
diff --git a/include/device.h b/include/device.h
index 4198a41c..1ad403f1 100644
--- a/include/device.h
+++ b/include/device.h
@@ -67,6 +67,7 @@ struct dt_node *dt_new_addr(struct dt_node *parent, const char *name,
uint64_t unit_addr);
struct dt_node *dt_new_2addr(struct dt_node *parent, const char *name,
uint64_t unit_addr0, uint64_t unit_addr1);
+struct dt_node *dt_new_check(struct dt_node *parent, const char *name);
/* Copy node to new parent, including properties and subnodes */
struct dt_node *dt_copy(struct dt_node *node, struct dt_node *parent);
OpenPOWER on IntegriCloud