summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-05-05 13:32:37 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-05 13:32:37 +0200
commit9bb76883c19f360693d54b12b67a9b0d17dc83a8 (patch)
tree3dd63dbd98e6b77545c661e416bc7feebb3ae515
parentbf1d71d5e192e242c7ce7cdb3d4c70c6a7ae4858 (diff)
parent66d0f93d5ca372b985dc61d01177fdc5f88392b4 (diff)
downloadbarebox-9bb76883c19f360693d54b12b67a9b0d17dc83a8.tar.gz
barebox-9bb76883c19f360693d54b12b67a9b0d17dc83a8.tar.xz
Merge branch 'for-next/of'
-rw-r--r--drivers/of/barebox.c14
-rw-r--r--drivers/of/of_path.c17
-rw-r--r--drivers/of/partition.c2
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);