diff options
author | Aseda Aboagye <aaboagye@google.com> | 2018-03-09 18:09:38 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2018-03-12 17:56:34 +0000 |
commit | 613ea23681de0df6649655f4e0e100a15eb1bcbb (patch) | |
tree | c28833c9a10bbeed401c694f484b5bc505c07805 | |
parent | 5654f4c847e59c4dc667fecd98b65d2000956875 (diff) | |
download | chrome-ec-613ea23681de0df6649655f4e0e100a15eb1bcbb.tar.gz |
meowth: zoombini: Ignore AC when checking cutoff.
When charge manager safe mode is enabled, it prevents us from selecting
CHARGE_PORT_NONE if we have a battery which is disconnected/cutoff. The
cutoff reporting code was essentially making the assumption that if AC
is not present, then we must be running off of battery power. However,
AC presence is debounced and can take some time to be reported to the
system. Therefore, we may wrongly assume that we are running off of
battery power and cut off our AC power source.
This commit simply removes that assumption and still consults the
battery regarding the cutoff/disconnect state.
BUG=b:74125001
BRANCH=stabilize-meowth-10444.B
TEST=flash meowth; cutoff battery, insert AC, verify system comes up.
Verify that CHARGE_PORT_NONE is not selected until battery wakes up.
Change-Id: I79a27bd2d5f09c2ffe65df98402c0ae0182fdba2
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/958101
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Shen-En Shih <petershih@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r-- | board/zoombini/battery.c | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/board/zoombini/battery.c b/board/zoombini/battery.c index f29f9b6009..d508e88d65 100644 --- a/board/zoombini/battery.c +++ b/board/zoombini/battery.c @@ -89,30 +89,26 @@ enum battery_disconnect_state battery_get_disconnect_state(void) if (not_disconnected) return BATTERY_NOT_DISCONNECTED; - if (extpower_is_present()) { - /* Check if battery charging + discharging is disabled. */ - rv = sb_read_mfgacc(PARAM_OPERATION_STATUS, - SB_ALT_MANUFACTURER_ACCESS, data, sizeof(data)); - if (rv) - return BATTERY_DISCONNECT_ERROR; - if (~data[3] & (BATTERY_DISCHARGING_DISABLED | - BATTERY_CHARGING_DISABLED)) { - not_disconnected = 1; - return BATTERY_NOT_DISCONNECTED; - } + /* Check if battery charging + discharging is disabled. */ + rv = sb_read_mfgacc(PARAM_OPERATION_STATUS, + SB_ALT_MANUFACTURER_ACCESS, data, sizeof(data)); + if (rv) + return BATTERY_DISCONNECT_ERROR; + if (~data[3] & (BATTERY_DISCHARGING_DISABLED | + BATTERY_CHARGING_DISABLED)) { + not_disconnected = 1; + return BATTERY_NOT_DISCONNECTED; + } - /* - * Battery is neither charging nor discharging. Verify that - * we didn't enter this state due to a safety fault. - */ - rv = sb_read_mfgacc(PARAM_SAFETY_STATUS, - SB_ALT_MANUFACTURER_ACCESS, data, sizeof(data)); - if (rv || data[2] || data[3] || data[4] || data[5]) - return BATTERY_DISCONNECT_ERROR; + /* + * Battery is neither charging nor discharging. Verify that + * we didn't enter this state due to a safety fault. + */ + rv = sb_read_mfgacc(PARAM_SAFETY_STATUS, + SB_ALT_MANUFACTURER_ACCESS, data, sizeof(data)); + if (rv || data[2] || data[3] || data[4] || data[5]) + return BATTERY_DISCONNECT_ERROR; - /* No safety fault, battery is disconnected */ - return BATTERY_DISCONNECTED; - } - not_disconnected = 1; - return BATTERY_NOT_DISCONNECTED; + /* No safety fault, battery is disconnected */ + return BATTERY_DISCONNECTED; } |