summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorKo_Ko <Ko_Ko@compal.corp-partner.google.com>2021-01-20 14:30:04 +0800
committerCommit Bot <commit-bot@chromium.org>2021-01-22 03:16:56 +0000
commit326814921dd1f93991cb5b49eba9cc9240f4770a (patch)
tree7148c3579b1e899949b8a8218f48a335cd4df6d0 /driver
parent0a5c0b1060f8cd2a77741b064fd8471930c90059 (diff)
downloadchrome-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.c7
-rw-r--r--driver/charger/isl923x.h3
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, &regval);
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);