On 05/29/2016 01:16 PM, Axel Lin wrote: > 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.
I don't understand what yo wanted to say here. What wrong setting is possible? Why do you mention set_voltage_time_sel() here? Can you elaborate? The only difference I spotted is how you round up the ramp_delay values. Best regards, Krzysztof > Fix the logic in .set_ramp_delay and also remove unused ret_val variable. > > Signed-off-by: Axel Lin <axel....@ingics.com> > --- > drivers/regulator/max8973-regulator.c | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/drivers/regulator/max8973-regulator.c > b/drivers/regulator/max8973-regulator.c > index 08d2f13..3958f50 100644 > --- a/drivers/regulator/max8973-regulator.c > +++ b/drivers/regulator/max8973-regulator.c > @@ -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); >