From 2869c2d2f77b79cc929660ef28dececafc4dc42c Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Mon, 26 Nov 2012 15:26:41 +0800 Subject: [PATCH] --- yaml --- r: 343137 b: refs/heads/master c: f509fd46c164524d06a33b01a64f9bd2033e4825 h: refs/heads/master i: 343135: 6aaa00e100cac6d81c931f165905d4d71983d285 v: v3 --- [refs] | 2 +- trunk/drivers/regulator/da9055-regulator.c | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index b1b67694572f..620ba4fd73ac 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 369cf602f364a60c72b8258c21eca8793939328f +refs/heads/master: f509fd46c164524d06a33b01a64f9bd2033e4825 diff --git a/trunk/drivers/regulator/da9055-regulator.c b/trunk/drivers/regulator/da9055-regulator.c index 121564bb5415..db59ce7534cd 100644 --- a/trunk/drivers/regulator/da9055-regulator.c +++ b/trunk/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)