From 0b6da3c5d846cd163b47536bd789b0bdc94a5040 Mon Sep 17 00:00:00 2001 From: Caveh Jalali Date: Tue, 8 May 2018 18:52:33 -0700 Subject: charge_state_v2: keep track of AC_PRESENT flag the EC should not clear the AC_PRESENT flag in the ACPI flags when we know that we're on a charger. ACPI rules on the AP side do special things when they see AC_PRESENT off, like forcing the EC to limit the charge current to 512mA. BUG=b:78509594 BRANCH=none TEST=chargestate current no longer stuck at 512mA Change-Id: I54ddea6d2661a9d6b1593431a5912a8a60db572d Signed-off-by: Caveh Jalali Reviewed-on: https://chromium-review.googlesource.com/1050917 Commit-Ready: Caveh Jalali Tested-by: Caveh Jalali Reviewed-by: Duncan Laurie Reviewed-by: Jett Rink --- common/charge_state_v2.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'common') diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 958257ea71..f5da9b8873 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -696,6 +696,7 @@ static int update_static_battery_info(void) { char *batt_str; int batt_serial; + uint8_t batt_flags = 0; /* * The return values have type enum ec_error_list, but EC_SUCCESS is * zero. We'll just look for any failures so we can try them all again. @@ -743,7 +744,9 @@ static int update_static_battery_info(void) *(int *)host_get_memmap(EC_MEMMAP_BATT_RATE) = 0; *(int *)host_get_memmap(EC_MEMMAP_BATT_CAP) = 0; *(int *)host_get_memmap(EC_MEMMAP_BATT_LFCC) = 0; - *host_get_memmap(EC_MEMMAP_BATT_FLAG) = 0; + if (extpower_is_present()) + batt_flags |= EC_BATT_FLAG_AC_PRESENT; + *host_get_memmap(EC_MEMMAP_BATT_FLAG) = batt_flags; if (rv) problem(PR_STATIC_UPDATE, rv); -- cgit v1.2.1