diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-05-17 01:06:18 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-18 03:39:57 -0400 |
commit | b13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2 (patch) | |
tree | ca9f027bdddd4fe3a3850aec6eb1f0747262fae8 | |
parent | 8b22285fd710976b2a1c6f625ca64dfbfe25ba2b (diff) |
regulator: ab3100: Use regulator_map_voltage_iterate()
regulator_map_voltage_iterate() is for drivers implementing set_voltage_sel()
and list_voltage() to use it as their map_voltage() operation.
In this case, regulator_map_voltage_iterate() happen to be doing the same thing
as ab3100_get_best_voltage_index() function. So we can use it to replace
ab3100_get_best_voltage_index() function.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | drivers/regulator/ab3100.c | 35 |
1 files changed, 1 insertions, 34 deletions
diff --git a/drivers/regulator/ab3100.c b/drivers/regulator/ab3100.c index e2062ad74e5d..03f4d9c604ec 100644 --- a/drivers/regulator/ab3100.c +++ b/drivers/regulator/ab3100.c | |||
@@ -304,39 +304,6 @@ static int ab3100_get_voltage_regulator(struct regulator_dev *reg) | |||
304 | return abreg->typ_voltages[regval]; | 304 | return abreg->typ_voltages[regval]; |
305 | } | 305 | } |
306 | 306 | ||
307 | static int ab3100_get_best_voltage_index(struct regulator_dev *reg, | ||
308 | int min_uV, int max_uV) | ||
309 | { | ||
310 | struct ab3100_regulator *abreg = reg->reg_data; | ||
311 | int i; | ||
312 | int bestmatch; | ||
313 | int bestindex; | ||
314 | |||
315 | /* | ||
316 | * Locate the minimum voltage fitting the criteria on | ||
317 | * this regulator. The switchable voltages are not | ||
318 | * in strict falling order so we need to check them | ||
319 | * all for the best match. | ||
320 | */ | ||
321 | bestmatch = INT_MAX; | ||
322 | bestindex = -1; | ||
323 | for (i = 0; i < abreg->voltages_len; i++) { | ||
324 | if (abreg->typ_voltages[i] <= max_uV && | ||
325 | abreg->typ_voltages[i] >= min_uV && | ||
326 | abreg->typ_voltages[i] < bestmatch) { | ||
327 | bestmatch = abreg->typ_voltages[i]; | ||
328 | bestindex = i; | ||
329 | } | ||
330 | } | ||
331 | |||
332 | if (bestindex < 0) { | ||
333 | dev_warn(®->dev, "requested %d<=x<=%d uV, out of range!\n", | ||
334 | min_uV, max_uV); | ||
335 | return -EINVAL; | ||
336 | } | ||
337 | return bestindex; | ||
338 | } | ||
339 | |||
340 | static int ab3100_set_voltage_regulator_sel(struct regulator_dev *reg, | 307 | static int ab3100_set_voltage_regulator_sel(struct regulator_dev *reg, |
341 | unsigned selector) | 308 | unsigned selector) |
342 | { | 309 | { |
@@ -383,7 +350,7 @@ static int ab3100_set_suspend_voltage_regulator(struct regulator_dev *reg, | |||
383 | return -EINVAL; | 350 | return -EINVAL; |
384 | 351 | ||
385 | /* LDO E and BUCK have special suspend voltages you can set */ | 352 | /* LDO E and BUCK have special suspend voltages you can set */ |
386 | bestindex = ab3100_get_best_voltage_index(reg, uV, uV); | 353 | bestindex = regulator_map_voltage_iterate(reg, uV, uV); |
387 | 354 | ||
388 | err = abx500_get_register_interruptible(abreg->dev, 0, | 355 | err = abx500_get_register_interruptible(abreg->dev, 0, |
389 | targetreg, ®val); | 356 | targetreg, ®val); |