summaryrefslogtreecommitdiff
path: root/common/charge_state_v2.c
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-02-25 12:56:40 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-03-12 07:16:03 -0700
commita901dd977d800016bb63311cd0d229f45f4fe3fc (patch)
treeb3c7079e6d6bf4f3f70f98d2bfe8d673117216ef /common/charge_state_v2.c
parent6e539b64778deffeba0fde677e4770d46f949ea3 (diff)
downloadchrome-ec-a901dd977d800016bb63311cd0d229f45f4fe3fc.tar.gz
chgstv2: Allow board to set charge level for shutdown
Currently, BATTERY_LEVEL_SHUTDOWN is statically determined. This patch allows it to be set at runtime. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/123727148 BRANCH=nami,strago,coral TEST=Verify Vayne shuts down when soc <= 4 in s0 and s5. Change-Id: I535c451e97ebf6bc735c46d7789d4b56ed82914b Reviewed-on: https://chromium-review.googlesource.com/1512619 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r--common/charge_state_v2.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index b07e82022e..5d5cae50b8 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -71,6 +71,8 @@ static timestamp_t uvp_throttle_start_time;
static int charge_request(int voltage, int current);
+static uint8_t battery_level_shutdown;
+
/*
* State for charger_task(). Here so we can reset it on a HOOK_INIT, and
* because stack space is more limited than .bss
@@ -1275,11 +1277,16 @@ static inline int battery_too_hot(int batt_temp_c)
batt_temp_c < batt_info->discharging_min_c));
}
+__attribute__((weak)) uint8_t board_set_battery_level_shutdown(void)
+{
+ return BATTERY_LEVEL_SHUTDOWN;
+}
+
/* True if we know the charge is too low, or we know the voltage is too low. */
static inline int battery_too_low(void)
{
return ((!(curr.batt.flags & BATT_FLAG_BAD_STATE_OF_CHARGE) &&
- curr.batt.state_of_charge < BATTERY_LEVEL_SHUTDOWN) ||
+ curr.batt.state_of_charge < battery_level_shutdown) ||
(!(curr.batt.flags & BATT_FLAG_BAD_VOLTAGE) &&
curr.batt.voltage <= batt_info->voltage_min));
}
@@ -1548,6 +1555,8 @@ void charger_task(void *u)
curr.desired_input_current = get_desired_input_current(
curr.batt.is_present, info);
+ battery_level_shutdown = board_set_battery_level_shutdown();
+
while (1) {
/* Let's see what's going on... */
@@ -1965,7 +1974,7 @@ int charge_want_shutdown(void)
{
return (curr.state == ST_DISCHARGE) &&
!(curr.batt.flags & BATT_FLAG_BAD_STATE_OF_CHARGE) &&
- (curr.batt.state_of_charge < BATTERY_LEVEL_SHUTDOWN);
+ (curr.batt.state_of_charge < battery_level_shutdown);
}
int charge_prevent_power_on(int power_button_pressed)