regulator: max8997: Use simple equation to get selector
authorAxel Lin <axel.lin@gmail.com>
Tue, 10 Apr 2012 06:20:03 +0000 (14:20 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 10 Apr 2012 09:14:01 +0000 (10:14 +0100)
It's more efficient to get the best selector by simple equation.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/max8997.c

index 89c93d8..db09244 100644 (file)
@@ -415,7 +415,7 @@ static inline int max8997_get_voltage_proper_val(
                const struct voltage_map_desc *desc,
                int min_vol, int max_vol)
 {
-       int i = 0;
+       int i;
 
        if (desc == NULL)
                return -EINVAL;
@@ -423,9 +423,10 @@ static inline int max8997_get_voltage_proper_val(
        if (max_vol < desc->min || min_vol > desc->max)
                return -EINVAL;
 
-       while (desc->min + desc->step * i < min_vol &&
-                       desc->min + desc->step * i < desc->max)
-               i++;
+       if (min_vol < desc->min)
+               min_vol = desc->min;
+
+       i = DIV_ROUND_UP(min_vol - desc->min, desc->step);
 
        if (desc->min + desc->step * i > max_vol)
                return -EINVAL;