From 71f38e5cb2bf80ffa209db252f2a47d0f81a2d9a Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Mon, 9 Jul 2012 11:22:31 +0800 Subject: [PATCH] --- yaml --- r: 312638 b: refs/heads/master c: a3cb80f43a9bc9b64aedd14b100e99252767d78c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/regulator/twl-regulator.c | 17 ++++------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 79d07efedd3d..e579057d1418 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5febb3c9d52c65686a8e473a31f15137852f4b5e +refs/heads/master: a3cb80f43a9bc9b64aedd14b100e99252767d78c diff --git a/trunk/drivers/regulator/twl-regulator.c b/trunk/drivers/regulator/twl-regulator.c index 8f0bd56c2118..bb51decfcb8e 100644 --- a/trunk/drivers/regulator/twl-regulator.c +++ b/trunk/drivers/regulator/twl-regulator.c @@ -569,30 +569,21 @@ twl6030ldo_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV, if ((min_uV/1000 < info->min_mV) || (max_uV/1000 > info->max_mV)) return -EDOM; - /* - * Use the below formula to calculate vsel - * mV = 1000mv + 100mv * (vsel - 1) - */ - vsel = (min_uV/1000 - 1000)/100 + 1; + vsel = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step); *selector = vsel; - return twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_VOLTAGE, vsel); + return twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_VOLTAGE, vsel); } static int twl6030ldo_get_voltage(struct regulator_dev *rdev) { struct twlreg_info *info = rdev_get_drvdata(rdev); - int vsel = twlreg_read(info, TWL_MODULE_PM_RECEIVER, - VREG_VOLTAGE); + int vsel = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_VOLTAGE); if (vsel < 0) return vsel; - /* - * Use the below formula to calculate vsel - * mV = 1000mv + 100mv * (vsel - 1) - */ - return (1000 + (100 * (vsel - 1))) * 1000; + return rdev->desc->min_uV + vsel * rdev->desc->uV_step; } static struct regulator_ops twl6030ldo_ops = {