summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy Lin <jimmy.lin@quantatw.com>2014-06-26 13:33:39 +0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-07-10 16:18:04 +0000
commitf3845025c3234be951ab733b398d46acc4a1d44f (patch)
treebb5949f1662c1d9c0231ac4ea519544360d50cfc
parent2b4b55f6f2d27f7009c4faf4eb5f2e153e6ffe6e (diff)
downloadchrome-ec-f3845025c3234be951ab733b398d46acc4a1d44f.tar.gz
Turn battery level thresholds into CONFIG options
Allow boards to set the almost_full, low, critical, and shutdown battery levels as CONFIG options. BUG=None BRANCH=tot,gnawty TEST=manual Add: CONFIG_BATTERY_LEVEL_NEAR_FULL CONFIG_BATTERY_LEVEL_LOW CONFIG_BATTERY_LEVEL_CRITICAL CONFIG_BATTERY_LEVEL_SHUTDOWN values in a board.h and verify notifications are sent to the host at the modified value. Change-Id: Ia4df2fb3f23602e5b84ec0d9d62ebbd3e218c7a6 Signed-off-by: Jimmy Lin <jimmy.Lin@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/207101 Reviewed-by: Dave Parker <dparker@chromium.org> Commit-Queue: Dave Parker <dparker@chromium.org> Tested-by: Dave Parker <dparker@chromium.org>
-rw-r--r--common/charge_state.c23
-rw-r--r--include/battery.h16
-rw-r--r--include/config.h9
3 files changed, 33 insertions, 15 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index db16dbbf11..5fb089ddc1 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -320,7 +320,7 @@ static int state_common(struct charge_state_context *ctx)
/* Prevent deep discharging */
if (!curr->ac) {
- if ((batt->state_of_charge < BATTERY_LEVEL_SHUTDOWN &&
+ if ((batt->state_of_charge < CONFIG_BATTERY_LEVEL_SHUTDOWN &&
!(curr->error & F_BATTERY_STATE_OF_CHARGE)) ||
(batt->voltage <= ctx->battery->voltage_min &&
!(curr->error & F_BATTERY_VOLTAGE)))
@@ -336,15 +336,15 @@ static int state_common(struct charge_state_context *ctx)
*ctx->memmap_batt_flags |= EC_BATT_FLAG_BATT_PRESENT;
/* Battery charge level low */
- if (batt->state_of_charge <= BATTERY_LEVEL_LOW &&
- prev->batt.state_of_charge > BATTERY_LEVEL_LOW)
+ if (batt->state_of_charge <= CONFIG_BATTERY_LEVEL_LOW &&
+ prev->batt.state_of_charge > CONFIG_BATTERY_LEVEL_LOW)
host_set_single_event(EC_HOST_EVENT_BATTERY_LOW);
/* Battery charge level critical */
- if (batt->state_of_charge <= BATTERY_LEVEL_CRITICAL) {
+ if (batt->state_of_charge <= CONFIG_BATTERY_LEVEL_CRITICAL) {
*ctx->memmap_batt_flags |= EC_BATT_FLAG_LEVEL_CRITICAL;
/* Send battery critical host event */
- if (prev->batt.state_of_charge > BATTERY_LEVEL_CRITICAL)
+ if (prev->batt.state_of_charge > CONFIG_BATTERY_LEVEL_CRITICAL)
host_set_single_event(EC_HOST_EVENT_BATTERY_CRITICAL);
} else {
*ctx->memmap_batt_flags &= ~EC_BATT_FLAG_LEVEL_CRITICAL;
@@ -452,10 +452,11 @@ static enum charge_state state_idle(struct charge_state_context *ctx)
update_charger_time(ctx, get_time());
- if (ctx->curr.batt.state_of_charge < BATTERY_LEVEL_NEAR_FULL)
- return PWR_STATE_CHARGE;
+ if (ctx->curr.batt.state_of_charge <
+ CONFIG_BATTERY_LEVEL_NEAR_FULL)
+ return PWR_STATE_CHARGE;
else
- return PWR_STATE_CHARGE_NEAR_FULL;
+ return PWR_STATE_CHARGE_NEAR_FULL;
}
return PWR_STATE_UNCHANGE;
@@ -685,7 +686,7 @@ int charge_temp_sensor_get_val(int idx, int *temp_ptr)
int charge_want_shutdown(void)
{
return (charge_get_state() == PWR_STATE_DISCHARGE) &&
- charge_get_percent() < BATTERY_LEVEL_SHUTDOWN;
+ charge_get_percent() < CONFIG_BATTERY_LEVEL_SHUTDOWN;
}
static int charge_force_idle(int enable)
@@ -748,7 +749,7 @@ void charger_task(void)
new_state = state_charge(ctx);
if (new_state == PWR_STATE_UNCHANGE &&
(ctx->curr.batt.state_of_charge >=
- BATTERY_LEVEL_NEAR_FULL)) {
+ CONFIG_BATTERY_LEVEL_NEAR_FULL)) {
/* Almost done charging */
new_state = PWR_STATE_CHARGE_NEAR_FULL;
}
@@ -758,7 +759,7 @@ void charger_task(void)
new_state = state_charge(ctx);
if (new_state == PWR_STATE_UNCHANGE &&
(ctx->curr.batt.state_of_charge <
- BATTERY_LEVEL_NEAR_FULL)) {
+ CONFIG_BATTERY_LEVEL_NEAR_FULL)) {
/* Battery below almost-full threshold. */
new_state = PWR_STATE_CHARGE;
}
diff --git a/include/battery.h b/include/battery.h
index d9ebbc5dc6..540a143653 100644
--- a/include/battery.h
+++ b/include/battery.h
@@ -14,24 +14,32 @@
#define BATTERY_LEVEL_FULL 100
/* Tell host we're charged when battery level >= this percentage */
-#define BATTERY_LEVEL_NEAR_FULL 97
+#ifndef CONFIG_BATTERY_LEVEL_NEAR_FULL
+#define CONFIG_BATTERY_LEVEL_NEAR_FULL 97
+#endif
/*
* Send battery-low host event when discharging and battery level <= this level
*/
-#define BATTERY_LEVEL_LOW 10
+#ifndef CONFIG_BATTERY_LEVEL_LOW
+#define CONFIG_BATTERY_LEVEL_LOW 10
+#endif
/*
* Send battery-critical host event when discharging and battery level <= this
* level.
*/
-#define BATTERY_LEVEL_CRITICAL 5
+#ifndef CONFIG_BATTERY_LEVEL_CRITICAL
+#define CONFIG_BATTERY_LEVEL_CRITICAL 5
+#endif
/*
* Shut down main processor and/or hibernate EC when discharging and battery
* level < this level.
*/
-#define BATTERY_LEVEL_SHUTDOWN 3
+#ifndef CONFIG_BATTERY_LEVEL_SHUTDOWN
+#define CONFIG_BATTERY_LEVEL_SHUTDOWN 3
+#endif
/* Battery parameters */
struct batt_params {
diff --git a/include/config.h b/include/config.h
index d2d5216313..d9da27867a 100644
--- a/include/config.h
+++ b/include/config.h
@@ -98,6 +98,15 @@
*/
#undef CONFIG_BATTERY_CUT_OFF
+/*
+ * Battery percent thresholds to notify the host or shut down the system.
+ * If not specified, default values are set in include/battery.h.
+ */
+#undef CONFIG_BATTERY_LEVEL_CRITICAL
+#undef CONFIG_BATTERY_LEVEL_LOW
+#undef CONFIG_BATTERY_LEVEL_NEAR_FULL
+#undef CONFIG_BATTERY_LEVEL_SHUTDOWN
+
/* Compile mock battery support; used by tests. */
#undef CONFIG_BATTERY_MOCK