regulator: rk808: fixed the overshoot when adjust voltage
authorChris Zhong <zyw@rock-chips.com>
Mon, 20 Jul 2015 09:23:53 +0000 (17:23 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 20 Jul 2015 17:40:44 +0000 (18:40 +0100)
commitbad47ad2eef341a79ff355734147efe933618033
tree0ffdaaa947c8f602cdf7d8bfd06200b38113700b
parent0ec5f8bd9920fc1a7d0b0d2d4876ea80665a70fd
regulator: rk808: fixed the overshoot when adjust voltage

There is a overshoot in DCDC1/DCDC2, we have 2 method to workaround:
1st is use dvs pin to switch the voltage between value in BUCKn_ON_VSEL
and BUCKn_DVS_VSEL. If DVS pin is inactive, the voltage of DCDC1/DCDC2
are controlled by BUCKn_ON_VSEL, when we pull dvs1/dvs2 pin to active,
they would be controlled by BUCKn_DVS_VSEL. In this case, the ramp rate
is same as the value programmed in BUCKn_RATE, and the fastest rate is
10mv/us.
2nd method is gradual adjustment, adjust the voltage to a target value
step by step via i2c, each step is set to 100 mA. If you write the
voltage directly using an i2c write the rk808 will always ramp as fast
as it possibly can, about 100mv/us.

Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Reviewed-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/rk808-regulator.c