summaryrefslogtreecommitdiffstats
path: root/commands/bootm.c
diff options
context:
space:
mode:
Diffstat (limited to 'commands/bootm.c')
-rw-r--r--commands/bootm.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/commands/bootm.c b/commands/bootm.c
index 65a75e20ba..ea5a35b52a 100644
--- a/commands/bootm.c
+++ b/commands/bootm.c
@@ -138,9 +138,8 @@ static int bootm_open_initrd_uimage(struct image_data *data)
static int bootm_open_oftree(struct image_data *data, const char *oftree, int num)
{
enum filetype ft;
- struct fdt_header *fdt, *fixfdt;
+ struct fdt_header *fdt;
size_t size;
- struct device_node *node;
printf("Loading devicetree from '%s'\n", oftree);
@@ -188,23 +187,14 @@ static int bootm_open_oftree(struct image_data *data, const char *oftree, int nu
file_type_to_string(ft));
}
- node = of_unflatten_dtb(NULL, fdt);
- if (!node) {
+ data->of_root_node = of_unflatten_dtb(NULL, fdt);
+ if (!data->of_root_node) {
pr_err("unable to unflatten devicetree\n");
return -EINVAL;
}
- if (bootm_verbose(data) > 1)
- of_print_nodes(node, 0);
-
- fixfdt = of_get_fixed_tree(node);
- if (!fixfdt)
- return -EINVAL;
-
free(fdt);
- data->oftree = fixfdt;
-
return 0;
}
#endif
@@ -408,10 +398,14 @@ static int do_bootm(int argc, char *argv[])
if (ret)
goto err_out;
} else {
- data.oftree = of_get_fixed_tree(NULL);
- if (bootm_verbose(&data) && data.oftree)
+ data.of_root_node = of_get_root_node();
+ if (bootm_verbose(&data) && data.of_root_node)
printf("using internal devicetree\n");
}
+
+
+ if (bootm_verbose(&data) > 1 && data.of_root_node)
+ of_print_nodes(data.of_root_node, 0);
#endif
if (data.os_address == UIMAGE_SOME_ADDRESS)
data.os_address = UIMAGE_INVALID_ADDRESS;