aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/da9055-regulator.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator/da9055-regulator.c')
-rw-r--r--drivers/regulator/da9055-regulator.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/regulator/da9055-regulator.c b/drivers/regulator/da9055-regulator.c
index 121564bb5415..db59ce7534cd 100644
--- a/drivers/regulator/da9055-regulator.c
+++ b/drivers/regulator/da9055-regulator.c
@@ -187,21 +187,18 @@ static int da9055_buck_set_current_limit(struct regulator_dev *rdev, int min_uA,
{
struct da9055_regulator *regulator = rdev_get_drvdata(rdev);
struct da9055_regulator_info *info = regulator->info;
- int i, val = 0;
-
- if (min_uA > da9055_current_limits[DA9055_MAX_UA] ||
- max_uA < da9055_current_limits[DA9055_MIN_UA])
- return -EINVAL;
+ int i;
- for (i = 0; i < ARRAY_SIZE(da9055_current_limits); i++) {
- if (min_uA <= da9055_current_limits[i]) {
- val = i;
- break;
- }
+ for (i = ARRAY_SIZE(da9055_current_limits) - 1; i >= 0; i--) {
+ if ((min_uA <= da9055_current_limits[i]) &&
+ (da9055_current_limits[i] <= max_uA))
+ return da9055_reg_update(regulator->da9055,
+ DA9055_REG_BUCK_LIM,
+ info->mode.mask,
+ i << info->mode.shift);
}
- return da9055_reg_update(regulator->da9055, DA9055_REG_BUCK_LIM,
- info->mode.mask, val << info->mode.shift);
+ return -EINVAL;
}
static int da9055_list_voltage(struct regulator_dev *rdev, unsigned selector)