diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-05-05 13:32:37 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-05-05 13:32:37 +0200 |
commit | 9bb76883c19f360693d54b12b67a9b0d17dc83a8 (patch) | |
tree | 3dd63dbd98e6b77545c661e416bc7feebb3ae515 | |
parent | bf1d71d5e192e242c7ce7cdb3d4c70c6a7ae4858 (diff) | |
parent | 66d0f93d5ca372b985dc61d01177fdc5f88392b4 (diff) | |
download | barebox-9bb76883c19f360693d54b12b67a9b0d17dc83a8.tar.gz barebox-9bb76883c19f360693d54b12b67a9b0d17dc83a8.tar.xz |
Merge branch 'for-next/of'
-rw-r--r-- | drivers/of/barebox.c | 14 | ||||
-rw-r--r-- | drivers/of/of_path.c | 17 | ||||
-rw-r--r-- | drivers/of/partition.c | 2 |
3 files changed, 19 insertions, 14 deletions
diff --git a/drivers/of/barebox.c b/drivers/of/barebox.c index 8c05924be3..224674240e 100644 --- a/drivers/of/barebox.c +++ b/drivers/of/barebox.c @@ -35,20 +35,6 @@ struct of_partition { static LIST_HEAD(of_partition_list); -struct device_d *of_find_device_by_node_path(const char *path) -{ - struct device_d *dev; - - for_each_device(dev) { - if (!dev->device_node) - continue; - if (!strcmp(path, dev->device_node->full_name)) - return dev; - } - - return NULL; -} - static int environment_probe(struct device_d *dev) { char *path; diff --git a/drivers/of/of_path.c b/drivers/of/of_path.c index ab8618e23d..6a2d634dcf 100644 --- a/drivers/of/of_path.c +++ b/drivers/of/of_path.c @@ -31,6 +31,20 @@ struct of_path_type { int (*parse)(struct of_path *op, const char *str); }; +struct device_d *of_find_device_by_node_path(const char *path) +{ + struct device_d *dev; + + for_each_device(dev) { + if (!dev->device_node) + continue; + if (!strcmp(path, dev->device_node->full_name)) + return dev; + } + + return NULL; +} + /** * of_path_type_partname - find a partition based on physical device and * partition name @@ -134,6 +148,9 @@ int of_find_path(struct device_node *node, const char *propname, char **outpath) device_detect(op.dev); + if (list_is_singular(&op.dev->cdevs)) + op.cdev = list_first_entry(&op.dev->cdevs, struct cdev, devices_list); + i = 1; while (1) { diff --git a/drivers/of/partition.c b/drivers/of/partition.c index 074be090e6..e2ddec564e 100644 --- a/drivers/of/partition.c +++ b/drivers/of/partition.c @@ -60,6 +60,8 @@ struct cdev *of_parse_partition(struct cdev *cdev, struct device_node *node) filename = asprintf("%s.%s", cdev->name, partname); new = devfs_add_partition(cdev->name, offset, size, flags, filename); + if (new && new->dev) + new->dev->device_node = node; free(filename); |