diff options
-rw-r--r-- | common/charge_state.c | 23 | ||||
-rw-r--r-- | include/battery.h | 16 | ||||
-rw-r--r-- | include/config.h | 9 |
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 |