diff options
author | Steffen Trumtrar <s.trumtrar@pengutronix.de> | 2014-02-26 11:42:32 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-02-27 09:52:43 +0100 |
commit | 8f0ce9db681bef2dbe11ba651fae60665a058b9f (patch) | |
tree | 770f02a85c4a436bec9970afb3d7a6ed7b22f839 | |
parent | 29577082acf7abad81627a76a89c7b9c80114d89 (diff) | |
download | dt-utils-8f0ce9db681bef2dbe11ba651fae60665a058b9f.tar.gz dt-utils-8f0ce9db681bef2dbe11ba651fae60665a058b9f.tar.xz |
libdt: search for devnode if partition not found
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | src/libdt.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libdt.c b/src/libdt.c index cd63653..7fa9479 100644 --- a/src/libdt.c +++ b/src/libdt.c @@ -2084,6 +2084,26 @@ static int of_path_type_partname(struct of_path *op, const char *name) return 0; } + part = device_find_devnode(op->dev); + if (part) { + if (udev_device_get_devnode(part) != NULL) { + op->devpath = strdup(udev_device_get_devnode(part)); + + if (!op->devpath) + return -EINVAL; + + ret = stat(op->devpath, &s); + if (ret) + return -errno; + + ret = of_parse_partition_from_path(op, name); + } else { + pr_debug("%s: '%s' not found\n", __func__, name); + ret = -EINVAL; + } + return ret; + } + ret = asprintf(&op->devpath, "%s/eeprom", udev_device_get_syspath(op->dev)); if (ret < 0) return -ENOMEM; |