summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2018-03-09 18:09:38 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-03-12 17:56:34 +0000
commit613ea23681de0df6649655f4e0e100a15eb1bcbb (patch)
treec28833c9a10bbeed401c694f484b5bc505c07805
parent5654f4c847e59c4dc667fecd98b65d2000956875 (diff)
downloadchrome-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.c44
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;
}