diff options
-rw-r--r-- | core/device.c | 14 | ||||
-rw-r--r-- | include/device.h | 1 |
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); |