diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-01 08:06:59 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-01 08:07:04 +0200 |
commit | 35eb06510b89870dba03022b2d2d681e0578c68c (patch) | |
tree | 889cced72e55deedcda7c1b926082b55c6d42d2a /drivers/of | |
parent | 3f68a7698d882f1e1ce5827fac92736e19f76018 (diff) | |
download | barebox-35eb06510b89870dba03022b2d2d681e0578c68c.tar.gz barebox-35eb06510b89870dba03022b2d2d681e0578c68c.tar.xz |
of_path: Allow pointing directly to the partition
We could only point to partitions in the device tree by using
&norflash, "partname:barebox-environment". Allow to point to the
partition directly without having to parse the partition labels.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/of_path.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/of/of_path.c b/drivers/of/of_path.c index 2dc784851d..992972c9b5 100644 --- a/drivers/of/of_path.c +++ b/drivers/of/of_path.c @@ -117,7 +117,8 @@ out: * @flags: use OF_FIND_PATH_FLAGS_BB to return the .bb device if available * * paths in the devicetree have the form of a multistring property. The first - * string contains the full path to the physical device containing the path. + * string contains the full path to the physical device containing the path or + * a full path to a partition described by the OF partition binding. * The remaining strings have the form "<type>:<options>". Currently supported * for <type> are: * @@ -129,6 +130,7 @@ out: * * device-path = &mmc0, "partname:0"; * device-path = &norflash, "partname:barebox-environment"; + * device-path = &environment_nor; */ int of_find_path(struct device_node *node, const char *propname, char **outpath, unsigned flags) { @@ -147,13 +149,15 @@ int of_find_path(struct device_node *node, const char *propname, char **outpath, return -ENODEV; op.dev = of_find_device_by_node_path(rnode->full_name); - if (!op.dev) - return -ENODEV; + if (!op.dev) { + op.dev = of_find_device_by_node_path(rnode->parent->full_name); + if (!op.dev) + return -ENODEV; + } device_detect(op.dev); - if (list_is_singular(&op.dev->cdevs)) - op.cdev = list_first_entry(&op.dev->cdevs, struct cdev, devices_list); + op.cdev = cdev_by_device_node(rnode); i = 1; |