diff options
author | Aseda Aboagye <aaboagye@google.com> | 2020-05-01 17:30:39 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-05 02:29:52 +0000 |
commit | 5c131a077453f96510cf88a2400d1e1f74bc6685 (patch) | |
tree | 9dd4a9e77c176a60adcce5df2038f13bb0384210 /driver/charger | |
parent | e50713104e08b09df23399f1f0e8b34bb0d33d4a (diff) | |
download | chrome-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>
Diffstat (limited to 'driver/charger')
-rw-r--r-- | driver/charger/isl923x.c | 29 |
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, ®val); - 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, ®val); + 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(); } |