regulator: add regulator_bulk_force_disable function
This patch allows consumers to forcibly disable multiple regulator clients in a single API call. Signed-off-by: Donggeun Kim <dg77.kim@samsung.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
1bb50b28a9
commit
e1de2f4234
|
@ -2490,6 +2490,43 @@ err:
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(regulator_bulk_disable);
|
||||
|
||||
/**
|
||||
* regulator_bulk_force_disable - force disable multiple regulator consumers
|
||||
*
|
||||
* @num_consumers: Number of consumers
|
||||
* @consumers: Consumer data; clients are stored here.
|
||||
* @return 0 on success, an errno on failure
|
||||
*
|
||||
* This convenience API allows consumers to forcibly disable multiple regulator
|
||||
* clients in a single API call.
|
||||
* NOTE: This should be used for situations when device damage will
|
||||
* likely occur if the regulators are not disabled (e.g. over temp).
|
||||
* Although regulator_force_disable function call for some consumers can
|
||||
* return error numbers, the function is called for all consumers.
|
||||
*/
|
||||
int regulator_bulk_force_disable(int num_consumers,
|
||||
struct regulator_bulk_data *consumers)
|
||||
{
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
for (i = 0; i < num_consumers; i++)
|
||||
consumers[i].ret =
|
||||
regulator_force_disable(consumers[i].consumer);
|
||||
|
||||
for (i = 0; i < num_consumers; i++) {
|
||||
if (consumers[i].ret != 0) {
|
||||
ret = consumers[i].ret;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(regulator_bulk_force_disable);
|
||||
|
||||
/**
|
||||
* regulator_bulk_free - free multiple regulator consumers
|
||||
*
|
||||
|
|
|
@ -149,6 +149,8 @@ int regulator_bulk_enable(int num_consumers,
|
|||
struct regulator_bulk_data *consumers);
|
||||
int regulator_bulk_disable(int num_consumers,
|
||||
struct regulator_bulk_data *consumers);
|
||||
int regulator_bulk_force_disable(int num_consumers,
|
||||
struct regulator_bulk_data *consumers);
|
||||
void regulator_bulk_free(int num_consumers,
|
||||
struct regulator_bulk_data *consumers);
|
||||
|
||||
|
@ -247,6 +249,12 @@ static inline int regulator_bulk_disable(int num_consumers,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int regulator_bulk_force_disable(int num_consumers,
|
||||
struct regulator_bulk_data *consumers)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void regulator_bulk_free(int num_consumers,
|
||||
struct regulator_bulk_data *consumers)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue