From a29726cdd8dc394738a4911de6edcf10cf8520f9 Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Thu, 10 Nov 2022 20:03:47 +0100 Subject: [PATCH 316/389] power: supply: rk818-battery: Don't auto-poweroff the PMIC on low battery Just raise the interrupt. This avoids undervoltage shutdowns when unplugging the USB PSU from USB keyboard. IP5209 stop supplying power to VOUT during transition from pass-through mode until VOUT boost is enabled. (about 30ms on the oscilloscope) Somehow RK818 doesn't like this when EN_VABT_LOW_SHUT_DOWN is enabled and PMIC shuts down. Emergency shutdown is implemented in keyboard power manager driver. Signed-off-by: Ondrej Jirman --- drivers/power/supply/rk818_battery.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c index 9323666491db..e3d04a51e145 100644 --- a/drivers/power/supply/rk818_battery.c +++ b/drivers/power/supply/rk818_battery.c @@ -3021,6 +3021,7 @@ static void rk818_bat_set_shtd_vol(struct rk818_battery *di) { u8 val; +#if 0 /* set vbat lowest 3.0v shutdown */ val = rk818_bat_read(di, RK818_VB_MON_REG); val &= ~(VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK); @@ -3030,6 +3031,13 @@ static void rk818_bat_set_shtd_vol(struct rk818_battery *di) /* disable low irq */ rk818_bat_set_bits(di, RK818_INT_STS_MSK_REG1, VB_LOW_INT_EN, VB_LOW_INT_EN); +#endif + + val = rk818_bat_read(di, RK818_VB_MON_REG); + val &= (~(VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK)); + val |= (RK818_VBAT_LOW_3V4 | EN_VBAT_LOW_IRQ); + rk818_bat_write(di, RK818_VB_MON_REG, val); + rk818_bat_set_bits(di, RK818_INT_STS_MSK_REG1, VB_LOW_INT_EN, 0); } static void rk818_bat_init_fg(struct rk818_battery *di) @@ -3430,12 +3438,7 @@ static int rk818_battery_resume(struct platform_device *dev) rk818_bat_save_data(di); /* set vbat lowest 3.0v shutdown */ - val = rk818_bat_read(di, RK818_VB_MON_REG); - val &= ~(VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK); - val |= (RK818_VBAT_LOW_3V0 | EN_VABT_LOW_SHUT_DOWN); - rk818_bat_write(di, RK818_VB_MON_REG, val); - rk818_bat_set_bits(di, RK818_INT_STS_MSK_REG1, - VB_LOW_INT_EN, VB_LOW_INT_EN); + rk818_bat_set_shtd_vol(di); /* charge/lowpower lock: for battery work to update dsoc and rsoc */ // if ((di->sleep_chrg_online) || -- 2.35.3