|
@@ -28,7 +28,8 @@
|
|
|
#define TPS65910_SUPPLY_STATE_ENABLED 0x1
|
|
|
#define EXT_SLEEP_CONTROL (TPS65910_SLEEP_CONTROL_EXT_INPUT_EN1 | \
|
|
|
TPS65910_SLEEP_CONTROL_EXT_INPUT_EN2 | \
|
|
|
- TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3)
|
|
|
+ TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3 | \
|
|
|
+ TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP)
|
|
|
|
|
|
/* supported VIO voltages in milivolts */
|
|
|
static const u16 VIO_VSEL_table[] = {
|
|
@@ -922,6 +923,8 @@ static int tps65910_set_ext_sleep_config(struct tps65910_reg *pmic,
|
|
|
TPS65910_SLEEP_CONTROL_EXT_INPUT_EN2) != 0);
|
|
|
en_count += ((ext_sleep_config &
|
|
|
TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3) != 0);
|
|
|
+ en_count += ((ext_sleep_config &
|
|
|
+ TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP) != 0);
|
|
|
if (en_count > 1) {
|
|
|
dev_err(mfd->dev,
|
|
|
"External sleep control flag is not proper\n");
|
|
@@ -1018,12 +1021,18 @@ static int tps65910_set_ext_sleep_config(struct tps65910_reg *pmic,
|
|
|
|
|
|
ret = tps65910_clear_bits(mfd,
|
|
|
TPS65910_SLEEP_KEEP_LDO_ON + regoffs, bit_pos);
|
|
|
- if (!ret)
|
|
|
- ret = tps65910_set_bits(mfd,
|
|
|
- TPS65910_SLEEP_SET_LDO_OFF + regoffs, bit_pos);
|
|
|
+ if (!ret) {
|
|
|
+ if (ext_sleep_config & TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP)
|
|
|
+ ret = tps65910_set_bits(mfd,
|
|
|
+ TPS65910_SLEEP_SET_LDO_OFF + regoffs, bit_pos);
|
|
|
+ else
|
|
|
+ ret = tps65910_clear_bits(mfd,
|
|
|
+ TPS65910_SLEEP_SET_LDO_OFF + regoffs, bit_pos);
|
|
|
+ }
|
|
|
if (ret < 0)
|
|
|
dev_err(mfd->dev,
|
|
|
"Error in configuring SLEEP register\n");
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|