diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/regulator/core.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index b059e8334567..b0076ccf896b 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c | |||
| @@ -2800,8 +2800,11 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev, | |||
| 2800 | ret = -EINVAL; | 2800 | ret = -EINVAL; |
| 2801 | } | 2801 | } |
| 2802 | 2802 | ||
| 2803 | if (ret) | ||
| 2804 | goto out; | ||
| 2805 | |||
| 2803 | /* Call set_voltage_time_sel if successfully obtained old_selector */ | 2806 | /* Call set_voltage_time_sel if successfully obtained old_selector */ |
| 2804 | if (ret == 0 && !rdev->constraints->ramp_disable && old_selector >= 0 | 2807 | if (!rdev->constraints->ramp_disable && old_selector >= 0 |
| 2805 | && old_selector != selector) { | 2808 | && old_selector != selector) { |
| 2806 | 2809 | ||
| 2807 | delay = ops->set_voltage_time_sel(rdev, | 2810 | delay = ops->set_voltage_time_sel(rdev, |
| @@ -2821,13 +2824,14 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev, | |||
| 2821 | } | 2824 | } |
| 2822 | } | 2825 | } |
| 2823 | 2826 | ||
| 2824 | if (ret == 0 && best_val >= 0) { | 2827 | if (best_val >= 0) { |
| 2825 | unsigned long data = best_val; | 2828 | unsigned long data = best_val; |
| 2826 | 2829 | ||
| 2827 | _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, | 2830 | _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE, |
| 2828 | (void *)data); | 2831 | (void *)data); |
| 2829 | } | 2832 | } |
| 2830 | 2833 | ||
| 2834 | out: | ||
| 2831 | trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); | 2835 | trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val); |
| 2832 | 2836 | ||
| 2833 | return ret; | 2837 | return ret; |
