diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2012-12-04 15:01:01 +0100 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-12-06 15:13:34 +0900 |
commit | d1e7de3007c6e34c5e6d5e1b707b5aba4a1cd57f (patch) | |
tree | 120c74589f1b69477d1568c07057bdc0ded426e1 /drivers/regulator/core.c | |
parent | 9489e9dcae718d5fde988e4a684a0f55b5f94d17 (diff) |
regulators: add regulator_can_change_voltage() function
Introduce a regulator_can_change_voltage() function for the subsytems or
drivers which might check if applying voltage change is possible and use
special workaround code when the driver is used with fixed regulators or
regulators with disabled ability to change the voltage.
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/core.c')
-rw-r--r-- | drivers/regulator/core.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e872c8be080e..59e08633372a 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1867,6 +1867,28 @@ int regulator_is_enabled(struct regulator *regulator) EXPORT_SYMBOL_GPL(regulator_is_enabled); /** + * regulator_can_change_voltage - check if regulator can change voltage + * @regulator: regulator source + * + * Returns positive if the regulator driver backing the source/client + * can change its voltage, false otherwise. Usefull for detecting fixed + * or dummy regulators and disabling voltage change logic in the client + * driver. + */ +int regulator_can_change_voltage(struct regulator *regulator) +{ + struct regulator_dev *rdev = regulator->rdev; + + if (rdev->constraints && + rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE && + rdev->desc->n_voltages > 1) + return 1; + + return 0; +} +EXPORT_SYMBOL_GPL(regulator_can_change_voltage); + +/** * regulator_count_voltages - count regulator_list_voltage() selectors * @regulator: regulator source * |