rk: pmic: rk818: add interface to set ldo sleep state.
authorzhangqing <zhangqing@rock-chips.com>
Wed, 15 Jul 2015 17:35:55 +0000 (10:35 -0700)
committerzhangqing <zhangqing@rock-chips.com>
Wed, 15 Jul 2015 17:35:55 +0000 (10:35 -0700)
add interface to set ldo sleep state,
which hope can dynamically modify the ldo sleep state.

Signed-off-by: chenjianhong <chenjianhong@rock-chips.com>
drivers/mfd/rk818.c

index 5b69cdeba18c8e28a2e30e83ff064406d18fd746..ff24a2f87f25a7a727afaf67a291f41e99b87bc9 100755 (executable)
@@ -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)
 {