diff options
author | Mark Brown <broonie@kernel.org> | 2016-04-27 11:32:14 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-04-27 11:32:14 -0400 |
commit | cbc13a66fdd89ac5e360af32fec0a1a4fcd4d2f1 (patch) | |
tree | 701908d65a4627d146fd26fb8b5e6515fd0cc32a | |
parent | c438b9d017362b65f6b1a9e54f7f35e7f873dc7c (diff) | |
parent | fef95019016ac10e250d2c67a3c97af5797e3938 (diff) |
Merge branch 'topic/bypass' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator into regulator-supply
-rw-r--r-- | drivers/regulator/core.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 8362a0a5105d..f6d624dfcf9f 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
@@ -3110,6 +3110,20 @@ EXPORT_SYMBOL_GPL(regulator_sync_voltage); | |||
3110 | static int _regulator_get_voltage(struct regulator_dev *rdev) | 3110 | static int _regulator_get_voltage(struct regulator_dev *rdev) |
3111 | { | 3111 | { |
3112 | int sel, ret; | 3112 | int sel, ret; |
3113 | bool bypassed; | ||
3114 | |||
3115 | if (rdev->desc->ops->get_bypass) { | ||
3116 | ret = rdev->desc->ops->get_bypass(rdev, &bypassed); | ||
3117 | if (ret < 0) | ||
3118 | return ret; | ||
3119 | if (bypassed) { | ||
3120 | /* if bypassed the regulator must have a supply */ | ||
3121 | if (!rdev->supply) | ||
3122 | return -EINVAL; | ||
3123 | |||
3124 | return _regulator_get_voltage(rdev->supply->rdev); | ||
3125 | } | ||
3126 | } | ||
3113 | 3127 | ||
3114 | if (rdev->desc->ops->get_voltage_sel) { | 3128 | if (rdev->desc->ops->get_voltage_sel) { |
3115 | sel = rdev->desc->ops->get_voltage_sel(rdev); | 3129 | sel = rdev->desc->ops->get_voltage_sel(rdev); |