summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2020-05-01 17:30:39 -0700
committerCommit Bot <commit-bot@chromium.org>2020-05-05 02:29:52 +0000
commit5c131a077453f96510cf88a2400d1e1f74bc6685 (patch)
tree9dd4a9e77c176a60adcce5df2038f13bb0384210
parente50713104e08b09df23399f1f0e8b34bb0d33d4a (diff)
downloadchrome-ec-5c131a077453f96510cf88a2400d1e1f74bc6685.tar.gz
raa489000: Keep BFET & LDO on for primary charger
When setting up the charger IC for low power mode in preparation for hibernate, we need to keep the BFET and MCU LDO enabled on the primary charger. This is because it is what powers the wake up logic circuitry. BUG=b:150236134 BRANCH=None TEST=`make -j buildall` TEST=Build and flash waddledoo, make sure that DUT can still wake up from hibernate. Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: Id01c7ba8984d0577878e3b13aad02a0b6c077788 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2176758 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Auto-Submit: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--driver/charger/isl923x.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c
index e50060ec29..bfcfaef590 100644
--- a/driver/charger/isl923x.c
+++ b/driver/charger/isl923x.c
@@ -15,6 +15,7 @@
#include "hooks.h"
#include "i2c.h"
#include "isl923x.h"
+#include "ocpc.h"
#include "system.h"
#include "task.h"
#include "timer.h"
@@ -571,7 +572,12 @@ void raa489000_hibernate(int chgnum)
regval &= ~RAA489000_C1_ENABLE_SUPP_SUPPORT_MODE;
/* Force BGATE off */
- regval |= RAA489000_C1_BGATE_FORCE_OFF;
+ if (IS_ENABLED(CONFIG_OCPC) && (chgnum == PRIMARY_CHARGER)) {
+ /* This is needed in the Z-state */
+ CPRINTS("%s(%d): Skip disable BFET", __func__, chgnum);
+ } else {
+ regval |= RAA489000_C1_BGATE_FORCE_OFF;
+ }
/* Disable AMON/BMON */
regval |= ISL923X_C1_DISABLE_MON;
@@ -604,15 +610,22 @@ void raa489000_hibernate(int chgnum)
if (rv)
CPRINTS("%s(%d):Failed to set Control4!", __func__, chgnum);
- rv = raw_read16(chgnum, RAA489000_REG_CONTROL8, &regval);
- if (!rv) {
- /* Disable MCU LDO in battery state */
- regval |= RAA489000_C8_MCU_LDO_BAT_STATE_DISABLE;
+ if (IS_ENABLED(CONFIG_OCPC) && (chgnum == PRIMARY_CHARGER)) {
+ /* The LDO is needed in the Z-state */
+ CPRINTS("%s(%d): Skip disable MCU LDO", __func__, chgnum);
+ } else {
+ rv = raw_read16(chgnum, RAA489000_REG_CONTROL8, &regval);
+ if (!rv) {
+ /* Disable MCU LDO in battery state */
+ regval |= RAA489000_C8_MCU_LDO_BAT_STATE_DISABLE;
- rv = raw_write16(chgnum, RAA489000_REG_CONTROL8, regval);
+ rv = raw_write16(chgnum, RAA489000_REG_CONTROL8,
+ regval);
+ }
+ if (rv)
+ CPRINTS("%s(%d):Failed to set Control8!", __func__,
+ chgnum);
}
- if (rv)
- CPRINTS("%s(%d):Failed to set Control8!", __func__, chgnum);
cflush();
}