Sometimes it can be necessary to rename a node, e.g. to override/create a node which gets renamed upstream. Signed-off-by: Marco Felsch <m.felsch@xxxxxxxxxxxxxx> --- drivers/of/base.c | 18 ++++++++++++++++++ include/of.h | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index b082f0c656..6644d9b96a 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2094,6 +2094,24 @@ void of_delete_node(struct device_node *node) of_set_root_node(NULL); } +void of_rename_node(struct device_node *node, char *name) +{ + struct device_node *parent; + + if (!node) + return; + + parent = node->parent; + if (parent) { + node->name = name; + node->full_name = basprintf("%s/%s", parent->full_name, name); + } else { + /* root node */ + node->name = xstrdup(""); + node->full_name = xstrdup(""); + } +} + int of_device_is_stdout_path(struct device_d *dev) { struct device_node *dn; diff --git a/include/of.h b/include/of.h index 184acb4741..403f399d95 100644 --- a/include/of.h +++ b/include/of.h @@ -158,6 +158,7 @@ extern struct device_node *of_create_node(struct device_node *root, 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 void of_rename_node(struct device_node *node, char *name); extern const char *of_get_machine_compatible(void); extern int of_machine_is_compatible(const char *compat); @@ -605,6 +606,10 @@ static inline void of_delete_node(struct device_node *node) { } +static inline void of_rename_node(struct device_node *node, char *name) +{ +} + static inline int of_machine_is_compatible(const char *compat) { return 0; -- 2.20.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox