From 5774ebbd78ea78f04cc89e57e1d56f45c990af0b Mon Sep 17 00:00:00 2001 From: Rong Chang Date: Wed, 25 Apr 2012 11:45:16 +0800 Subject: [PATCH] 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 BUG=chrome-os-partner:8451,9108 TEST=none Mock battery_temperature() fucntion to test. Change-Id: I3203515b3df86192f690f9b98901020209ce49b3 --- common/charge_state.c | 8 ++++++-- 1 file 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; }