summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRong Chang <rongchang@chromium.org>2012-04-25 11:45:16 +0800
committerRong Chang <rongchang@chromium.org>2012-04-25 15:54:26 +0800
commit5774ebbd78ea78f04cc89e57e1d56f45c990af0b (patch)
treee73fcd95ec74d4cdf03d864f468ce1730c9b36a4
parent470916fb0f856945f2a93c7fd160845b5f659be1 (diff)
downloadchrome-ec-5774ebbd78ea78f04cc89e57e1d56f45c990af0b.tar.gz
Handle overtemp condition in discharging state
This change adds battery operating temperature check. Host and EC will be turned off when overtemp. EC can be waked up by predefined external signals like key press or AC_PRESENT gpio. For safty reason, this change does not check battery temperature after EC deep sleep. Signed-off-by: Rong Chang <rongchang@chromium.org> BUG=chrome-os-partner:8451,9108 TEST=none Mock battery_temperature() fucntion to test. Change-Id: I3203515b3df86192f690f9b98901020209ce49b3
-rw-r--r--common/charge_state.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index a47bb2f23d..f8eb9919b3 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -388,15 +388,19 @@ static enum power_state state_charge(struct power_state_context *ctx)
*/
static enum power_state state_discharge(struct power_state_context *ctx)
{
+ struct batt_params *batt = &ctx->curr.batt;
if (ctx->curr.ac)
return PWR_STATE_INIT;
if (ctx->curr.error)
return PWR_STATE_ERROR;
- /* TODO(rong): crosbug.com/p/8451
- * handle overtemp in discharge mode
+ /* Overtemp in discharging state
+ * - poweroff host and ec
*/
+ if (batt->temperature > ctx->battery->temp_discharge_max ||
+ batt->temperature < ctx->battery->temp_discharge_min)
+ poweroff_wait_ac();
return PWR_STATE_UNCHANGE;
}