This adds a function to delete a property from the currently loaded devicetree. Also export new_property as of_new_property. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/of/base.c | 13 +++++++++++-- include/of.h | 3 +++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 527121d..5910b40 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -600,7 +600,7 @@ static struct device_node *new_device_node(struct device_node *parent) return node; } -static struct property *new_property(struct device_node *node, const char *name, +struct property *of_new_property(struct device_node *node, const char *name, const void *data, int len) { struct property *prop; @@ -617,6 +617,15 @@ static struct property *new_property(struct device_node *node, const char *name, return prop; } +void of_delete_property(struct property *pp) +{ + list_del(&pp->list); + + free(pp->name); + free(pp->value); + free(pp); +} + static struct device_d *add_of_device(struct device_node *node) { struct device_d *dev; @@ -902,7 +911,7 @@ int of_unflatten_dtb(struct fdt_header *fdt) p->value = xzalloc(len); memcpy(p->value, nodep, len); } else { - new_property(node, pathp, nodep, len); + of_new_property(node, pathp, nodep, len); } break; case FDT_NOP: diff --git a/include/of.h b/include/of.h index e1a778d..e53f94c 100644 --- a/include/of.h +++ b/include/of.h @@ -108,6 +108,9 @@ int of_parse_dtb(struct fdt_header *fdt); void of_free(struct device_node *node); int of_unflatten_dtb(struct fdt_header *fdt); void *of_flatten_dtb(void); +struct property *of_new_property(struct device_node *node, const char *name, + const void *data, int len); +void of_delete_property(struct property *pp); int of_property_read_string(struct device_node *np, const char *propname, const char **out_string); -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox