diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2015-04-27 16:03:46 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2015-04-28 14:20:04 +0200 |
commit | 10cc2eb392646da797100739f4627d98e74afcac (patch) | |
tree | 846bdcacc151cc069327041b367c0fe0d80cd683 /src/libdt.c | |
parent | 954e383388f26682325080e8532b5ea8056dae16 (diff) | |
download | dt-utils-10cc2eb392646da797100739f4627d98e74afcac.tar.gz dt-utils-10cc2eb392646da797100739f4627d98e74afcac.tar.xz |
libdt: of_read_devicetree(): try to read fdt from /sys/firmware/fdt first
Which is faster than walking over the filesystem representation of the device
tree in /proc or /sys.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'src/libdt.c')
-rw-r--r-- | src/libdt.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libdt.c b/src/libdt.c index 50f0da8..7319260 100644 --- a/src/libdt.c +++ b/src/libdt.c @@ -1930,8 +1930,15 @@ int scan_proc_dir(struct device_node *node, const char *path) struct device_node *of_read_proc_devicetree(void) { struct device_node *root; + void *fdt; int ret; + fdt = read_file("/sys/firmware/fdt", NULL); + if (fdt) { + root = of_unflatten_dtb(fdt); + return root; + } + root = of_new_node(NULL, NULL); ret = scan_proc_dir(root, "/sys/firmware/devicetree/base"); |