OSDN Git Service

regulator: max8973: Fix setting ramp delay
authorAxel Lin <axel.lin@ingics.com>
Sun, 29 May 2016 11:20:03 +0000 (19:20 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 30 May 2016 16:00:56 +0000 (17:00 +0100)
Current code can set ramp delay to a wrong setting that the return value
from .set_voltage_time_sel is not enough for proper delay.
Fix the logic in .set_ramp_delay and also remove unused ret_val variable.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/max8973-regulator.c

index 08d2f13..3958f50 100644 (file)
@@ -271,22 +271,18 @@ static int max8973_set_ramp_delay(struct regulator_dev *rdev,
        struct max8973_chip *max = rdev_get_drvdata(rdev);
        unsigned int control;
        int ret;
-       int ret_val;
 
        /* Set ramp delay */
-       if (ramp_delay < 25000) {
+       if (ramp_delay <= 12000)
                control = MAX8973_RAMP_12mV_PER_US;
-               ret_val = 12000;
-       } else if (ramp_delay < 50000) {
+       else if (ramp_delay <= 25000)
                control = MAX8973_RAMP_25mV_PER_US;
-               ret_val = 25000;
-       } else if (ramp_delay < 200000) {
+       else if (ramp_delay <= 50000)
                control = MAX8973_RAMP_50mV_PER_US;
-               ret_val = 50000;
-       } else {
+       else if (ramp_delay <= 200000)
                control = MAX8973_RAMP_200mV_PER_US;
-               ret_val = 200000;
-       }
+       else
+               return -EINVAL;
 
        ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1,
                        MAX8973_RAMP_MASK, control);