Move common charge_state time constants to a common header

We had duplicate values in both v1 and v2 headers. Let's consolidate them in
one place, and prefix the constants with "CHARGE_", so people don't use them
randomly.

BUG=chrome-os-partner:20881
BRANCH=ToT
TEST=make buildall -j

No functionality changes, refactor/rename only.

Change-Id: I0ee599a2e3bf0835c2c0a7e57872ad9015701a4b
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/193876
This commit is contained in:
Bill Richardson
2014-04-09 14:02:55 -07:00
parent 39194d5fc5
commit 5019551e1d
4 changed files with 42 additions and 44 deletions

View File

@@ -28,8 +28,7 @@
/* Voltage debounce time */
#define DEBOUNCE_TIME (10 * SECOND)
/* Timeout after AP battery shutdown warning before we kill the AP */
#define LOW_BATTERY_SHUTDOWN_TIMEOUT_US (30 * SECOND)
#define LOW_BATTERY_SHUTDOWN_TIMEOUT_US (LOW_BATTERY_SHUTDOWN_TIMEOUT * SECOND)
#ifndef BATTERY_AP_OFF_LEVEL
#define BATTERY_AP_OFF_LEVEL 0
@@ -270,7 +269,7 @@ static int state_common(struct charge_state_context *ctx)
*/
charge_request(ctx->battery->voltage_max,
ctx->battery->precharge_current);
for (d = 0; d < 30; d++) {
for (d = 0; d < PRECHARGE_TIMEOUT; d++) {
sleep(1);
battery_get_params(batt);
if (batt->flags & BATT_FLAG_RESPONSIVE) {
@@ -703,7 +702,7 @@ void charger_task(void)
{
struct charge_state_context *ctx = &task_ctx;
timestamp_t ts;
int sleep_usec = POLL_PERIOD_SHORT, diff_usec, sleep_next;
int sleep_usec = CHARGE_POLL_PERIOD_SHORT, diff_usec, sleep_next;
enum charge_state new_state;
uint8_t batt_flags;
@@ -792,7 +791,7 @@ void charger_task(void)
* to charging on the next call and we don't want to
* blink the LED green.
*/
sleep_usec = POLL_PERIOD_SHORT;
sleep_usec = CHARGE_POLL_PERIOD_SHORT;
break;
case PWR_STATE_CHARGE_NEAR_FULL:
/*
@@ -808,15 +807,16 @@ void charger_task(void)
*ctx->memmap_batt_flags = batt_flags;
/* Charge done */
sleep_usec = (new_state == PWR_STATE_IDLE ?
POLL_PERIOD_LONG : POLL_PERIOD_CHARGE);
sleep_usec = (new_state == PWR_STATE_IDLE
? CHARGE_POLL_PERIOD_LONG
: CHARGE_POLL_PERIOD_CHARGE);
break;
case PWR_STATE_DISCHARGE:
batt_flags = *ctx->memmap_batt_flags;
batt_flags &= ~EC_BATT_FLAG_CHARGING;
batt_flags |= EC_BATT_FLAG_DISCHARGING;
*ctx->memmap_batt_flags = batt_flags;
sleep_usec = POLL_PERIOD_LONG;
sleep_usec = CHARGE_POLL_PERIOD_LONG;
break;
case PWR_STATE_CHARGE:
batt_flags = *ctx->memmap_batt_flags;
@@ -825,18 +825,18 @@ void charger_task(void)
*ctx->memmap_batt_flags = batt_flags;
/* Charging */
sleep_usec = POLL_PERIOD_CHARGE;
sleep_usec = CHARGE_POLL_PERIOD_CHARGE;
break;
case PWR_STATE_ERROR:
/* Error */
sleep_usec = POLL_PERIOD_CHARGE;
sleep_usec = CHARGE_POLL_PERIOD_CHARGE;
break;
case PWR_STATE_UNCHANGE:
/* Don't change sleep duration */
break;
default:
/* Other state; poll quickly and hope it goes away */
sleep_usec = POLL_PERIOD_SHORT;
sleep_usec = CHARGE_POLL_PERIOD_SHORT;
}
#ifdef CONFIG_EXTPOWER_FALCO
@@ -859,11 +859,11 @@ void charger_task(void)
* need to poll frequently. charge_hook() will wake us
* up if anything important changes.
*/
sleep_next = POLL_PERIOD_VERY_LONG - diff_usec;
} else if (sleep_next < MIN_SLEEP_USEC) {
sleep_next = MIN_SLEEP_USEC;
} else if (sleep_next > MAX_SLEEP_USEC) {
sleep_next = MAX_SLEEP_USEC;
sleep_next = CHARGE_POLL_PERIOD_VERY_LONG - diff_usec;
} else if (sleep_next < CHARGE_MIN_SLEEP_USEC) {
sleep_next = CHARGE_MIN_SLEEP_USEC;
} else if (sleep_next > CHARGE_MAX_SLEEP_USEC) {
sleep_next = CHARGE_MAX_SLEEP_USEC;
}
task_wait_event(sleep_next);

View File

@@ -26,18 +26,8 @@
#define CPUTS(outstr) cputs(CC_CHARGER, outstr)
#define CPRINTF(format, args...) cprintf(CC_CHARGER, format, ## args)
/* Delay after AP battery shutdown warning before we kill the AP */
#define LOW_BATTERY_SHUTDOWN_TIMEOUT_US (30 * SECOND)
/* Time to spend trying to wake a non-responsive battery */
#define PRECHARGE_TIMEOUT_US (30 * SECOND)
/* Power state task polling periods in usec */
#define POLL_PERIOD_VERY_LONG MINUTE
#define POLL_PERIOD_LONG (MSEC * 500)
#define POLL_PERIOD_CHARGE (MSEC * 250)
#define POLL_PERIOD_SHORT (MSEC * 100)
#define MIN_SLEEP_USEC (MSEC * 50)
#define MAX_SLEEP_USEC MINUTE
#define LOW_BATTERY_SHUTDOWN_TIMEOUT_US (LOW_BATTERY_SHUTDOWN_TIMEOUT * SECOND)
#define PRECHARGE_TIMEOUT_US (PRECHARGE_TIMEOUT * SECOND)
/*
* State for charger_task(). Here so we can reset it on a HOOK_INIT, and
@@ -596,7 +586,7 @@ wait_for_it:
/* How long to sleep? */
if (problems_exist)
/* If there are errors, don't wait very long. */
sleep_usec = POLL_PERIOD_SHORT;
sleep_usec = CHARGE_POLL_PERIOD_SHORT;
else if (sleep_usec <= 0) {
/* default values depend on the state */
if (curr.state == ST_IDLE ||
@@ -604,22 +594,23 @@ wait_for_it:
/* If AP is off, we can sleep a long time */
if (chipset_in_state(CHIPSET_STATE_ANY_OFF |
CHIPSET_STATE_SUSPEND))
sleep_usec = POLL_PERIOD_VERY_LONG;
sleep_usec =
CHARGE_POLL_PERIOD_VERY_LONG;
else
/* Discharging, not too urgent */
sleep_usec = POLL_PERIOD_LONG;
sleep_usec = CHARGE_POLL_PERIOD_LONG;
} else {
/* Charging, so pay closer attention */
sleep_usec = POLL_PERIOD_CHARGE;
sleep_usec = CHARGE_POLL_PERIOD_CHARGE;
}
}
/* Adjust for time spent in this loop */
sleep_usec -= (int)(get_time().val - curr.ts.val);
if (sleep_usec < MIN_SLEEP_USEC)
sleep_usec = MIN_SLEEP_USEC;
else if (sleep_usec > MAX_SLEEP_USEC)
sleep_usec = MAX_SLEEP_USEC;
if (sleep_usec < CHARGE_MIN_SLEEP_USEC)
sleep_usec = CHARGE_MIN_SLEEP_USEC;
else if (sleep_usec > CHARGE_MAX_SLEEP_USEC)
sleep_usec = CHARGE_MAX_SLEEP_USEC;
task_wait_event(sleep_usec);
}

View File

@@ -6,8 +6,23 @@
#define __CROS_EC_CHARGE_STATE_H
#include "common.h"
#include "timer.h"
/* Stuff that's common to all charger implementations can go here. */
/* Seconds after AP battery shutdown warning before we kill the AP */
#define LOW_BATTERY_SHUTDOWN_TIMEOUT 30
/* Seconds to spend trying to wake a non-responsive battery */
#define PRECHARGE_TIMEOUT 30
/* Power state task polling periods in usec */
#define CHARGE_POLL_PERIOD_VERY_LONG MINUTE
#define CHARGE_POLL_PERIOD_LONG (MSEC * 500)
#define CHARGE_POLL_PERIOD_CHARGE (MSEC * 250)
#define CHARGE_POLL_PERIOD_SHORT (MSEC * 100)
#define CHARGE_MIN_SLEEP_USEC (MSEC * 50)
#define CHARGE_MAX_SLEEP_USEC SECOND
/* Power states */
enum charge_state {
/* Meta-state; unchanged from previous time through task loop */

View File

@@ -12,14 +12,6 @@
/* Update period to prevent charger watchdog timeout */
#define CHARGER_UPDATE_PERIOD (SECOND * 10)
/* Power state task polling periods in usec */
#define POLL_PERIOD_VERY_LONG MINUTE
#define POLL_PERIOD_LONG (MSEC * 500)
#define POLL_PERIOD_CHARGE (MSEC * 250)
#define POLL_PERIOD_SHORT (MSEC * 100)
#define MIN_SLEEP_USEC (MSEC * 50)
#define MAX_SLEEP_USEC SECOND
/* Power state error flags */
#define F_CHARGER_INIT (1 << 0) /* Charger initialization */
#define F_CHARGER_VOLTAGE (1 << 1) /* Charger maximum output voltage */