diff options
author | Axel Lin <axel.lin@ingics.com> | 2016-05-29 07:20:03 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-05-30 12:00:56 -0400 |
commit | d0abd6f5f5eac758f4bcf4001f6cc377320ebc84 (patch) | |
tree | 9afcc4230513211415ad3c985cd43c1881fd10a1 | |
parent | 1a695a905c18548062509178b98bc91e67510864 (diff) |
regulator: max8973: Fix setting ramp delay
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>
-rw-r--r-- | drivers/regulator/max8973-regulator.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/regulator/max8973-regulator.c b/drivers/regulator/max8973-regulator.c index 08d2f13eca00..3958f50c5975 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, | |||
271 | struct max8973_chip *max = rdev_get_drvdata(rdev); | 271 | struct max8973_chip *max = rdev_get_drvdata(rdev); |
272 | unsigned int control; | 272 | unsigned int control; |
273 | int ret; | 273 | int ret; |
274 | int ret_val; | ||
275 | 274 | ||
276 | /* Set ramp delay */ | 275 | /* Set ramp delay */ |
277 | if (ramp_delay < 25000) { | 276 | if (ramp_delay <= 12000) |
278 | control = MAX8973_RAMP_12mV_PER_US; | 277 | control = MAX8973_RAMP_12mV_PER_US; |
279 | ret_val = 12000; | 278 | else if (ramp_delay <= 25000) |
280 | } else if (ramp_delay < 50000) { | ||
281 | control = MAX8973_RAMP_25mV_PER_US; | 279 | control = MAX8973_RAMP_25mV_PER_US; |
282 | ret_val = 25000; | 280 | else if (ramp_delay <= 50000) |
283 | } else if (ramp_delay < 200000) { | ||
284 | control = MAX8973_RAMP_50mV_PER_US; | 281 | control = MAX8973_RAMP_50mV_PER_US; |
285 | ret_val = 50000; | 282 | else if (ramp_delay <= 200000) |
286 | } else { | ||
287 | control = MAX8973_RAMP_200mV_PER_US; | 283 | control = MAX8973_RAMP_200mV_PER_US; |
288 | ret_val = 200000; | 284 | else |
289 | } | 285 | return -EINVAL; |
290 | 286 | ||
291 | ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1, | 287 | ret = regmap_update_bits(max->regmap, MAX8973_CONTROL1, |
292 | MAX8973_RAMP_MASK, control); | 288 | MAX8973_RAMP_MASK, control); |