diff options
author | Rong Chang <rongchang@chromium.org> | 2012-04-25 11:45:16 +0800 |
---|---|---|
committer | Rong Chang <rongchang@chromium.org> | 2012-04-25 15:54:26 +0800 |
commit | 5774ebbd78ea78f04cc89e57e1d56f45c990af0b (patch) | |
tree | e73fcd95ec74d4cdf03d864f468ce1730c9b36a4 /common | |
parent | 470916fb0f856945f2a93c7fd160845b5f659be1 (diff) | |
download | chrome-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
Diffstat (limited to 'common')
-rw-r--r-- | common/charge_state.c | 8 |
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; } |