regulator: twl: Fix the formula to calculate vsel and voltage for twl6030ldo
authorAxel Lin <axel.lin@gmail.com>
Mon, 9 Jul 2012 03:22:31 +0000 (11:22 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sun, 15 Jul 2012 21:06:05 +0000 (22:06 +0100)
commita3cb80f43a9bc9b64aedd14b100e99252767d78c
treee0e12208892082893cb80772c63bbab24a82a83b
parent5febb3c9d52c65686a8e473a31f15137852f4b5e
regulator: twl: Fix the formula to calculate vsel and voltage for twl6030ldo

In twl6030ldo_set_voltage, current code use below formula to calculate vsel:
        vsel = (min_uV/1000 - 1000)/100 + 1;
This is worng because when min_uV is 1000000 uV, vsel is 1.
It should be 0 in this case.
Fix it by change the equation to: (This equation is common for linear mapping)
        vsel = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step);

In twl6030ldo_get_voltage, current code use below formula to calculate voltage:
        mV = 1000mv + 100mv * (vsel - 1)
This is worng because when vsel is 0, mV is 900mV. Note the min_uV is 1000mV.
Fix it by change the equation to: (This equation is common for linear mapping)
        return rdev->desc->min_uV + vsel * rdev->desc->uV_step;

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