summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/of_node.c2
-rw-r--r--commands/oftree.c4
-rw-r--r--drivers/of/base.c65
-rw-r--r--drivers/of/fdt.c2
-rw-r--r--include/of.h4
5 files changed, 38 insertions, 39 deletions
diff --git a/commands/of_node.c b/commands/of_node.c
index e60ef66d38..b1894b184d 100644
--- a/commands/of_node.c
+++ b/commands/of_node.c
@@ -87,7 +87,7 @@ static int do_of_node(int argc, char *argv[])
return -ENOENT;
}
- of_free(node);
+ of_delete_node(node);
}
return 0;
diff --git a/commands/oftree.c b/commands/oftree.c
index 914951735b..00e54dcd7e 100644
--- a/commands/oftree.c
+++ b/commands/oftree.c
@@ -86,7 +86,7 @@ static int do_oftree(int argc, char *argv[])
struct device_node *root = of_get_root_node();
if (root)
- of_free(root);
+ of_delete_node(root);
return 0;
}
@@ -162,7 +162,7 @@ static int do_oftree(int argc, char *argv[])
goto out;
}
of_print_nodes(root, 0);
- of_free(root);
+ of_delete_node(root);
} else {
struct device_node *n = of_find_node_by_path(node);
if (!n) {
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 1cf7a5f37e..e9f1f79324 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1549,39 +1549,6 @@ int of_add_memory(struct device_node *node, bool dump)
return 0;
}
-void of_free(struct device_node *node)
-{
- struct device_node *n, *nt;
- struct property *p, *pt;
- struct device_d *dev;
-
- if (!node)
- return;
-
- list_for_each_entry_safe(p, pt, &node->properties, list)
- of_delete_property(p);
-
- list_for_each_entry_safe(n, nt, &node->children, parent_list) {
- of_free(n);
- }
-
- if (node->parent) {
- list_del(&node->parent_list);
- list_del(&node->list);
- }
-
- dev = of_find_device_by_node(node);
- if (dev)
- dev->device_node = NULL;
-
- free(node->name);
- free(node->full_name);
- free(node);
-
- if (node == root_node)
- of_set_root_node(NULL);
-}
-
static void __of_parse_phandles(struct device_node *node)
{
struct device_node *n;
@@ -1679,6 +1646,38 @@ out:
return dn;
}
+void of_delete_node(struct device_node *node)
+{
+ struct device_node *n, *nt;
+ struct property *p, *pt;
+ struct device_d *dev;
+
+ if (!node)
+ return;
+
+ list_for_each_entry_safe(p, pt, &node->properties, list)
+ of_delete_property(p);
+
+ list_for_each_entry_safe(n, nt, &node->children, parent_list)
+ of_delete_node(n);
+
+ if (node->parent) {
+ list_del(&node->parent_list);
+ list_del(&node->list);
+ }
+
+ dev = of_find_device_by_node(node);
+ if (dev)
+ dev->device_node = NULL;
+
+ free(node->name);
+ free(node->full_name);
+ free(node);
+
+ if (node == root_node)
+ of_set_root_node(NULL);
+}
+
int of_device_is_stdout_path(struct device_d *dev)
{
struct device_node *dn;
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index afaa4e0f51..76d6bb1594 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -211,7 +211,7 @@ struct device_node *of_unflatten_dtb(struct device_node *root, void *infdt)
}
}
err:
- of_free(root);
+ of_delete_node(root);
return ERR_PTR(ret);
}
diff --git a/include/of.h b/include/of.h
index f01d8544d4..ebe8e3966b 100644
--- a/include/of.h
+++ b/include/of.h
@@ -139,7 +139,7 @@ extern struct device_node *of_new_node(struct device_node *parent,
const char *name);
extern struct device_node *of_create_node(struct device_node *root,
const char *path);
-extern void of_free(struct device_node *node);
+extern void of_delete_node(struct device_node *node);
extern int of_machine_is_compatible(const char *compat);
extern int of_device_is_compatible(const struct device_node *device,
@@ -508,7 +508,7 @@ static inline struct device_node *of_create_node(struct device_node *root,
return NULL;
}
-static inline void of_free(struct device_node *node)
+static inline void of_delete_node(struct device_node *node)
{
}