From ea6b0ae3ddc164dd947238befcde29fc44b32cb6 Mon Sep 17 00:00:00 2001 From: zhangqing Date: Wed, 15 Jul 2015 10:35:55 -0700 Subject: [PATCH] rk: pmic: rk818: add interface to set ldo sleep state. add interface to set ldo sleep state, which hope can dynamically modify the ldo sleep state. Signed-off-by: chenjianhong --- drivers/mfd/rk818.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/mfd/rk818.c b/drivers/mfd/rk818.c index 5b69cdeba18c..ff24a2f87f25 100755 --- a/drivers/mfd/rk818.c +++ b/drivers/mfd/rk818.c @@ -278,6 +278,37 @@ static int rk818_ldo_suspend_disable(struct regulator_dev *dev) return rk818_set_bits(rk818, RK818_SLEEP_SET_OFF_REG2, 1 << ldo, 1 << ldo); } + +int rk818_ldo_slp_enable(int ldo_id) +{ + int ldo = ldo_id - 1; + + if (ldo == 8) + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG1, + 1 << 5, 0); /*ldo9*/ + else if (ldo == 9) + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG1, + 1 << 6, 0); /*ldo10 switch*/ + else + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG2, + 1 << ldo, 0); +} + +int rk818_ldo_slp_disable(int ldo_id) +{ + int ldo = ldo_id - 1; + + if (ldo == 8) + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG1, + 1 << 5, 1 << 5); /*ldo9*/ + else if (ldo == 9) + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG1, + 1 << 6, 1 << 6); /*ldo10 switch*/ + else + return rk818_set_bits(g_rk818, RK818_SLEEP_SET_OFF_REG2, + 1 << ldo, 1 << ldo); +} + static int rk818_ldo_set_sleep_voltage(struct regulator_dev *dev, int uV) { -- 2.34.1