diff options
author | Axel Haslam <ahaslam@baylibre.com> | 2016-11-03 12:11:42 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-11-04 12:15:25 -0600 |
commit | 1b5b42216469b05ef4b5916cb40b127dfab1da88 (patch) | |
tree | 088f4074ec93c863025c27126c400f85009ad92a /drivers/regulator | |
parent | 1001354ca34179f3db924eb66672442a173147dc (diff) | |
download | blackbird-obmc-linux-1b5b42216469b05ef4b5916cb40b127dfab1da88.tar.gz blackbird-obmc-linux-1b5b42216469b05ef4b5916cb40b127dfab1da88.zip |
regulator: core: Add new API to poll for error conditions
Regulator consumers can receive event notifications when
errors are reported to the driver, but currently, there is
no way for a regulator consumer to know when the error is over.
To allow a regulator consumer to poll for error conditions
add a new API: regulator_get_error_flags.
Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/core.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 67426c0477d3..08260c215895 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -3359,6 +3359,39 @@ unsigned int regulator_get_mode(struct regulator *regulator) } EXPORT_SYMBOL_GPL(regulator_get_mode); +static int _regulator_get_error_flags(struct regulator_dev *rdev, + unsigned int *flags) +{ + int ret; + + mutex_lock(&rdev->mutex); + + /* sanity check */ + if (!rdev->desc->ops->get_error_flags) { + ret = -EINVAL; + goto out; + } + + ret = rdev->desc->ops->get_error_flags(rdev, flags); +out: + mutex_unlock(&rdev->mutex); + return ret; +} + +/** + * regulator_get_error_flags - get regulator error information + * @regulator: regulator source + * @flags: pointer to store error flags + * + * Get the current regulator error information. + */ +int regulator_get_error_flags(struct regulator *regulator, + unsigned int *flags) +{ + return _regulator_get_error_flags(regulator->rdev, flags); +} +EXPORT_SYMBOL_GPL(regulator_get_error_flags); + /** * regulator_set_load - set regulator load * @regulator: regulator source |