]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
regulator: core: Simplify error flow in _regulator_do_set_voltage()
authorMatthias Kaehlcke <mka@chromium.org>
Wed, 14 Sep 2016 16:52:06 +0000 (09:52 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 16 Sep 2016 16:33:40 +0000 (17:33 +0100)
If the voltage can not be set jump to the end of the function. This
avoids having to check for an error multiple times and eliminates one
level of nesting in a follow-up change.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/core.c

index b059e8334567dc74e6f660d1417cc1a41c898ce9..b0076ccf896bbd54891abd71552a6af9b1487b2d 100644 (file)
@@ -2800,8 +2800,11 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev,
                ret = -EINVAL;
        }
 
+       if (ret)
+               goto out;
+
        /* Call set_voltage_time_sel if successfully obtained old_selector */
-       if (ret == 0 && !rdev->constraints->ramp_disable && old_selector >= 0
+       if (!rdev->constraints->ramp_disable && old_selector >= 0
                && old_selector != selector) {
 
                delay = ops->set_voltage_time_sel(rdev,
@@ -2821,13 +2824,14 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev,
                }
        }
 
-       if (ret == 0 && best_val >= 0) {
+       if (best_val >= 0) {
                unsigned long data = best_val;
 
                _notifier_call_chain(rdev, REGULATOR_EVENT_VOLTAGE_CHANGE,
                                     (void *)data);
        }
 
+out:
        trace_regulator_set_voltage_complete(rdev_get_name(rdev), best_val);
 
        return ret;