diff options
author | Ko_Ko <Ko_Ko@compal.corp-partner.google.com> | 2021-01-20 14:30:04 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-01-22 03:16:56 +0000 |
commit | 326814921dd1f93991cb5b49eba9cc9240f4770a (patch) | |
tree | 7148c3579b1e899949b8a8218f48a335cd4df6d0 /driver | |
parent | 0a5c0b1060f8cd2a77741b064fd8471930c90059 (diff) | |
download | chrome-ec-326814921dd1f93991cb5b49eba9cc9240f4770a.tar.gz |
Madoo: Fix main board charger can't wake from hibernate
In madoo's design, there is a protection IC between USB
connector and TCPC. When EC is hibernate, the CC lines will
be disconnected, which cause the result that TCPC can't
detect AC power and Chromebook won't wake the system.
Enalbing ADC for all modes by setting 0x4C bit 0 to 1 (to be
more precise is that we don't clear bit 0 during hibernation)
can prevent issue mention above.
BUG=b:174971576
BRANCH=dedede
TEST=flash code and make sure ac in can wake system from hibernation
Signed-off-by: Ko_Ko <Ko_Ko@compal.corp-partner.google.com>
Change-Id: I2a83c69e34cbc4bfdff90d760f32817a7924dc26
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2626803
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Diana Z <dzigterman@chromium.org>
Reviewed-by: Ko Ko <ko_ko@compal.corp-partner.google.com>
Tested-by: Ko Ko <ko_ko@compal.corp-partner.google.com>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/charger/isl923x.c | 7 | ||||
-rw-r--r-- | driver/charger/isl923x.h | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c index dbe6354476..e6e3042cb7 100644 --- a/driver/charger/isl923x.c +++ b/driver/charger/isl923x.c @@ -767,7 +767,7 @@ out: } #ifdef CONFIG_CHARGER_RAA489000 -void raa489000_hibernate(int chgnum) +void raa489000_hibernate(int chgnum, bool disable_adc) { int rv, regval; @@ -813,8 +813,9 @@ void raa489000_hibernate(int chgnum) rv = raw_read16(chgnum, ISL9238_REG_CONTROL3, ®val); if (!rv) { - /* ADC is active only when adapter plugged in */ - regval &= ~RAA489000_ENABLE_ADC; + if (disable_adc) + /* ADC is active only when adapter plugged in */ + regval &= ~RAA489000_ENABLE_ADC; rv = raw_write16(chgnum, ISL9238_REG_CONTROL3, regval); } diff --git a/driver/charger/isl923x.h b/driver/charger/isl923x.h index 0ae8327ed4..5da8649c38 100644 --- a/driver/charger/isl923x.h +++ b/driver/charger/isl923x.h @@ -9,6 +9,7 @@ #ifndef __CROS_EC_ISL923X_H #define __CROS_EC_ISL923X_H +#include "stdbool.h" #define ISL923X_ADDR_FLAGS (0x09) /* Registers */ @@ -378,7 +379,7 @@ int isl923x_set_comparator_inversion(int chgnum, int invert); * * @param chgnum index into chg_chips table. */ -void raa489000_hibernate(int chgnum); +void raa489000_hibernate(int chgnum, bool disable_adc); enum ec_error_list isl9238c_hibernate(int chgnum); enum ec_error_list isl9238c_resume(int chgnum); |