diff options
author | Axel Lin <axel.lin@gmail.com> | 2012-05-17 13:06:18 +0800 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-18 08:39:57 +0100 |
commit | b13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2 (patch) | |
tree | ca9f027bdddd4fe3a3850aec6eb1f0747262fae8 /drivers/regulator/ab3100.c | |
parent | 8b22285fd710976b2a1c6f625ca64dfbfe25ba2b (diff) | |
download | linux-stable-b13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2.tar.gz linux-stable-b13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2.tar.bz2 linux-stable-b13296d0701b90fa8eae5cb6b79c7a2d7a75d3b2.zip |
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.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) return abreg->typ_voltages[regval]; } -static int ab3100_get_best_voltage_index(struct regulator_dev *reg, - int min_uV, int max_uV) -{ - struct ab3100_regulator *abreg = reg->reg_data; - int i; - int bestmatch; - int bestindex; - - /* - * Locate the minimum voltage fitting the criteria on - * this regulator. The switchable voltages are not - * in strict falling order so we need to check them - * all for the best match. - */ - bestmatch = INT_MAX; - bestindex = -1; - for (i = 0; i < abreg->voltages_len; i++) { - if (abreg->typ_voltages[i] <= max_uV && - abreg->typ_voltages[i] >= min_uV && - abreg->typ_voltages[i] < bestmatch) { - bestmatch = abreg->typ_voltages[i]; - bestindex = i; - } - } - - if (bestindex < 0) { - dev_warn(®->dev, "requested %d<=x<=%d uV, out of range!\n", - min_uV, max_uV); - return -EINVAL; - } - return bestindex; -} - static int ab3100_set_voltage_regulator_sel(struct regulator_dev *reg, unsigned selector) { @@ -383,7 +350,7 @@ static int ab3100_set_suspend_voltage_regulator(struct regulator_dev *reg, return -EINVAL; /* LDO E and BUCK have special suspend voltages you can set */ - bestindex = ab3100_get_best_voltage_index(reg, uV, uV); + bestindex = regulator_map_voltage_iterate(reg, uV, uV); err = abx500_get_register_interruptible(abreg->dev, 0, targetreg, ®val); |