Falco: Stop charging after a timeout of 10 hours

BUG=chrome-os-partner:20145
BRANCH=falco
TEST=Hack it. Add (uint64_t)599 * MINUTE to ctx->curr.ts.val
in the timeout comparison. This makes the 10 hour timeout only
take 1 minute. Testing this directly is tricky as a healthy battery
will charge quickly. If you force it to trickle charge it will
give up before 10 hours pass.

Change-Id: I69094a07e58c2d65e322ddc6a1b2ced828da0e26
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/64309
This commit is contained in:
Dave Parker
2013-08-01 20:30:31 -07:00
committed by ChromeBot
parent 33f8086c90
commit 0d3bdc690e
3 changed files with 20 additions and 0 deletions

View File

@@ -157,6 +157,7 @@ enum x86_signal {
#define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */
#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input sensor resistor, mOhm */
#define CONFIG_CHARGER_INPUT_CURRENT 4032 /* mA, about half max */
#define CONFIG_CHARGER_TIMEOUT_HOURS 10 /* Max time to charge battery, hours */
enum adc_channel {
/* EC internal die temperature in degrees K. */

View File

@@ -631,6 +631,16 @@ void charger_task(void)
while (1) {
state_common(ctx);
#ifdef CONFIG_CHARGER_TIMEOUT_HOURS
if (ctx->curr.state == PWR_STATE_CHARGE &&
ctx->power_state_updated_time.val +
CONFIG_CHARGER_TIMEOUT_HOURS * HOUR < ctx->curr.ts.val) {
CPRINTF("[%T Charge timed out after %d hours]\n",
CONFIG_CHARGER_TIMEOUT_HOURS);
charge_force_idle(1);
}
#endif /* CONFIG_CHARGER_TIMEOUT_HOURS */
switch (ctx->prev.state) {
case PWR_STATE_INIT:
case PWR_STATE_REINIT:

View File

@@ -125,6 +125,15 @@
/* Value of the input current sense resistor, in mOhms */
#undef CONFIG_CHARGER_SENSE_RESISTOR_AC
/*
* Maximum time to charge the battery, in hours.
*
* If this timeout is reached, the charger will enter force-idle state.
* If not defined, charger will provide current until the battery asks it to
* stop.
*/
#undef CONFIG_CHARGER_TIMEOUT_HOURS
/*****************************************************************************/
/* Chipset config */