summaryrefslogtreecommitdiffstats
path: root/commands/of_dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'commands/of_dump.c')
-rw-r--r--commands/of_dump.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/commands/of_dump.c b/commands/of_dump.c
index 513a4b88a0..b15f54ae04 100644
--- a/commands/of_dump.c
+++ b/commands/of_dump.c
@@ -31,6 +31,16 @@
#include <getopt.h>
#include <linux/err.h>
+static void of_print_nodenames(struct device_node *node)
+{
+ struct device_node *n;
+
+ printf("%s\n", node->full_name);
+
+ list_for_each_entry(n, &node->children, parent_list)
+ of_print_nodenames(n);
+}
+
static int do_of_dump(int argc, char *argv[])
{
int opt;
@@ -40,8 +50,9 @@ static int do_of_dump(int argc, char *argv[])
char *dtbfile = NULL;
size_t size;
const char *nodename;
+ int names_only = 0;
- while ((opt = getopt(argc, argv, "Ff:")) > 0) {
+ while ((opt = getopt(argc, argv, "Ff:n")) > 0) {
switch (opt) {
case 'f':
dtbfile = optarg;
@@ -49,6 +60,9 @@ static int do_of_dump(int argc, char *argv[])
case 'F':
fix = 1;
break;
+ case 'n':
+ names_only = 1;
+ break;
default:
return COMMAND_ERROR_USAGE;
}
@@ -111,7 +125,10 @@ static int do_of_dump(int argc, char *argv[])
goto out;
}
- of_print_nodes(node, 0);
+ if (names_only)
+ of_print_nodenames(node);
+ else
+ of_print_nodes(node, 0);
out:
if (of_free)