提交 d4033b54 编写于 作者: J Jani Nikula 提交者: Liam Girdwood

regulator: simplify regulator_register() error handling

Simply remove all consumer supplies for the regulator on errors. Remove
unset_consumer_device_supply() which is no longer used.
Signed-off-by: NJani Nikula <ext-jani.1.nikula@nokia.com>
Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: NLiam Girdwood <lrg@slimlogic.co.uk>
上级 47bd53f0
...@@ -981,29 +981,6 @@ static int set_consumer_device_supply(struct regulator_dev *rdev, ...@@ -981,29 +981,6 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
return 0; return 0;
} }
static void unset_consumer_device_supply(struct regulator_dev *rdev,
const char *consumer_dev_name, struct device *consumer_dev)
{
struct regulator_map *node, *n;
if (consumer_dev && !consumer_dev_name)
consumer_dev_name = dev_name(consumer_dev);
list_for_each_entry_safe(node, n, &regulator_map_list, list) {
if (rdev != node->regulator)
continue;
if (consumer_dev_name && node->dev_name &&
strcmp(consumer_dev_name, node->dev_name))
continue;
list_del(&node->list);
kfree(node->dev_name);
kfree(node);
return;
}
}
static void unset_regulator_supplies(struct regulator_dev *rdev) static void unset_regulator_supplies(struct regulator_dev *rdev)
{ {
struct regulator_map *node, *n; struct regulator_map *node, *n;
...@@ -2375,13 +2352,8 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, ...@@ -2375,13 +2352,8 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
init_data->consumer_supplies[i].dev, init_data->consumer_supplies[i].dev,
init_data->consumer_supplies[i].dev_name, init_data->consumer_supplies[i].dev_name,
init_data->consumer_supplies[i].supply); init_data->consumer_supplies[i].supply);
if (ret < 0) { if (ret < 0)
for (--i; i >= 0; i--) goto unset_supplies;
unset_consumer_device_supply(rdev,
init_data->consumer_supplies[i].dev_name,
init_data->consumer_supplies[i].dev);
goto scrub;
}
} }
list_add(&rdev->list, &regulator_list); list_add(&rdev->list, &regulator_list);
...@@ -2389,6 +2361,9 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, ...@@ -2389,6 +2361,9 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
mutex_unlock(&regulator_list_mutex); mutex_unlock(&regulator_list_mutex);
return rdev; return rdev;
unset_supplies:
unset_regulator_supplies(rdev);
scrub: scrub:
device_unregister(&rdev->dev); device_unregister(&rdev->dev);
/* device core frees rdev */ /* device core frees rdev */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册