Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> --- drivers/misc/state.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/drivers/misc/state.c b/drivers/misc/state.c index f3e366480fa2..22551478e651 100644 --- a/drivers/misc/state.c +++ b/drivers/misc/state.c @@ -52,34 +52,21 @@ static int state_probe(struct device_d *dev) /* guess if of_path is a path, not a phandle */ if (of_path[0] == '/' && len > 1) { ret = of_find_path(np, "backend", &path, 0); - if (ret) - goto out_release; } else { - struct device_d *dev; - struct cdev *cdev; partition_node = of_parse_phandle(np, "backend", 0); - if (!partition_node) { - ret = -ENODEV; - goto out_release; - } - - dev = of_find_device_by_node(partition_node); - if (!list_is_singular(&dev->cdevs)) { - ret = -ENODEV; - goto out_release; - } - - cdev = list_first_entry(&dev->cdevs, struct cdev, devices_list); - if (!cdev) { - ret = -ENODEV; - goto out_release; - } - - path = asprintf("/dev/%s", cdev->name); + if (!partition_node) + return -EINVAL; + of_path = partition_node->full_name; + ret = of_find_path_by_node(partition_node, &path, 0); } + if (ret == -ENODEV) + ret = -EPROBE_DEFER; + if (ret) + goto out_release; + ret = of_property_read_string(np, "backend-type", &backend_type); if (ret) { goto out_free; -- 2.6.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox