diff options
author | Mark Brown <broonie@kernel.org> | 2016-05-13 09:22:55 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-05-13 09:22:55 -0400 |
commit | 75941a1ba32d36fe6230a6388f10c493b3f6232b (patch) | |
tree | 0c6ae59e3476eeda6109d460c7293f7c1e98932c | |
parent | 93878cd540500884b2ea428f620c8e1426fc4d6d (diff) | |
parent | fef95019016ac10e250d2c67a3c97af5797e3938 (diff) |
Merge remote-tracking branch 'regulator/topic/bypass' into regulator-next
-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 6af38691ec48..0cbfd3feccef 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
@@ -3116,6 +3116,20 @@ EXPORT_SYMBOL_GPL(regulator_sync_voltage); | |||
3116 | static int _regulator_get_voltage(struct regulator_dev *rdev) | 3116 | static int _regulator_get_voltage(struct regulator_dev *rdev) |
3117 | { | 3117 | { |
3118 | int sel, ret; | 3118 | int sel, ret; |
3119 | bool bypassed; | ||
3120 | |||
3121 | if (rdev->desc->ops->get_bypass) { | ||
3122 | ret = rdev->desc->ops->get_bypass(rdev, &bypassed); | ||
3123 | if (ret < 0) | ||
3124 | return ret; | ||
3125 | if (bypassed) { | ||
3126 | /* if bypassed the regulator must have a supply */ | ||
3127 | if (!rdev->supply) | ||
3128 | return -EINVAL; | ||
3129 | |||
3130 | return _regulator_get_voltage(rdev->supply->rdev); | ||
3131 | } | ||
3132 | } | ||
3119 | 3133 | ||
3120 | if (rdev->desc->ops->get_voltage_sel) { | 3134 | if (rdev->desc->ops->get_voltage_sel) { |
3121 | sel = rdev->desc->ops->get_voltage_sel(rdev); | 3135 | sel = rdev->desc->ops->get_voltage_sel(rdev); |