aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/ab3100.c
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@gmail.com>2012-05-17 01:06:18 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-05-18 03:39:57 -0400
commitb13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2 (patch)
treeca9f027bdddd4fe3a3850aec6eb1f0747262fae8 /drivers/regulator/ab3100.c
parent8b22285fd710976b2a1c6f625ca64dfbfe25ba2b (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>
Diffstat (limited to 'drivers/regulator/ab3100.c')
-rw-r--r--drivers/regulator/ab3100.c35
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
307static 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(&reg->dev, "requested %d<=x<=%d uV, out of range!\n",
334 min_uV, max_uV);
335 return -EINVAL;
336 }
337 return bestindex;
338}
339
340static int ab3100_set_voltage_regulator_sel(struct regulator_dev *reg, 307static 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, &regval); 356 targetreg, &regval);