mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 22:22:08 +02:00
regulator: Minor cleanups
Merge series from Chen-Yu Tsai <wenst@chromium.org>: Here are some cleanups for some bits that I saw while reworking my I2C device tree component prober to use of_regulator_bulk_get_all(). These are not directly related to that series, so I send them separately here.
This commit is contained in:
commit
bff5ca8379
|
|
@ -2183,7 +2183,7 @@ struct regulator *_regulator_get(struct device *dev, const char *id,
|
|||
}
|
||||
|
||||
if (id == NULL) {
|
||||
pr_err("get() with no identifier\n");
|
||||
dev_err(dev, "regulator request with no identifier\n");
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -747,19 +747,19 @@ static int is_supply_name(const char *name)
|
|||
* This helper function allows drivers to get several regulator
|
||||
* consumers in one operation. If any of the regulators cannot be
|
||||
* acquired then any regulators that were allocated will be freed
|
||||
* before returning to the caller.
|
||||
* before returning to the caller, and @consumers will not be
|
||||
* changed.
|
||||
*/
|
||||
int of_regulator_bulk_get_all(struct device *dev, struct device_node *np,
|
||||
struct regulator_bulk_data **consumers)
|
||||
{
|
||||
int num_consumers = 0;
|
||||
struct regulator *tmp;
|
||||
struct regulator_bulk_data *_consumers = NULL;
|
||||
struct property *prop;
|
||||
int i, n = 0, ret;
|
||||
char name[64];
|
||||
|
||||
*consumers = NULL;
|
||||
|
||||
/*
|
||||
* first pass: get numbers of xxx-supply
|
||||
* second pass: fill consumers
|
||||
|
|
@ -769,7 +769,7 @@ int of_regulator_bulk_get_all(struct device *dev, struct device_node *np,
|
|||
i = is_supply_name(prop->name);
|
||||
if (i == 0)
|
||||
continue;
|
||||
if (!*consumers) {
|
||||
if (!_consumers) {
|
||||
num_consumers++;
|
||||
continue;
|
||||
} else {
|
||||
|
|
@ -777,28 +777,31 @@ int of_regulator_bulk_get_all(struct device *dev, struct device_node *np,
|
|||
name[i] = '\0';
|
||||
tmp = regulator_get(dev, name);
|
||||
if (IS_ERR(tmp)) {
|
||||
ret = -EINVAL;
|
||||
ret = PTR_ERR(tmp);
|
||||
goto error;
|
||||
}
|
||||
(*consumers)[n].consumer = tmp;
|
||||
_consumers[n].consumer = tmp;
|
||||
n++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (*consumers)
|
||||
if (_consumers) {
|
||||
*consumers = _consumers;
|
||||
return num_consumers;
|
||||
}
|
||||
if (num_consumers == 0)
|
||||
return 0;
|
||||
*consumers = kmalloc_array(num_consumers,
|
||||
_consumers = kmalloc_array(num_consumers,
|
||||
sizeof(struct regulator_bulk_data),
|
||||
GFP_KERNEL);
|
||||
if (!*consumers)
|
||||
if (!_consumers)
|
||||
return -ENOMEM;
|
||||
goto restart;
|
||||
|
||||
error:
|
||||
while (--n >= 0)
|
||||
regulator_put(consumers[n]->consumer);
|
||||
regulator_put(_consumers[n].consumer);
|
||||
kfree(_consumers);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_regulator_bulk_get_all);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user