Signed-off-by: Sascha Hauer <[email protected]>
---
 commands/of_node.c |   27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/commands/of_node.c b/commands/of_node.c
index a370e26..bf9799c 100644
--- a/commands/of_node.c
+++ b/commands/of_node.c
@@ -39,6 +39,7 @@ static int do_of_node(int argc, char *argv[])
        int create = 0;
        char *path = NULL;
        struct device_node *node = NULL;
+       struct device_node *root;
 
        while ((opt = getopt(argc, argv, "cd")) > 0) {
                switch (opt) {
@@ -57,27 +58,19 @@ static int do_of_node(int argc, char *argv[])
                path = argv[optind];
        }
 
-       if (create) {
-               char *name;
+       root = of_get_root_node();
+       if (!root) {
+               printf("root node not set\n");
+               return -ENOENT;
+       }
 
+       if (create) {
                if (!path)
                        return COMMAND_ERROR_USAGE;
 
-               name = xstrdup(basename(path));
-               path = dirname(path);
-
-               node = of_find_node_by_path(path);
-               if (!node) {
-                       printf("Cannot find nodepath %s\n", path);
-                       free(name);
-                       return -ENOENT;
-               }
-
-               debug("create node \"%s\" \"%s\"\n", path, name);
-
-               of_new_node(node, name);
-
-               free(name);
+               node = of_create_node(root, path);
+               if (!node)
+                       return -EINVAL;
 
                return 0;
        }
-- 
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to