summaryrefslogtreecommitdiff
path: root/test/sbs_charging_v2.c
diff options
context:
space:
mode:
authorTang Qijun <qijun.tang@ecs.corp-partner.google.com>2021-09-09 01:22:28 -0400
committerCommit Bot <commit-bot@chromium.org>2021-10-07 15:55:01 +0000
commit14891fcf8ac0ac2e1c72f5d22321c6b077ab2e53 (patch)
tree3a9987bf6d407e70f8918e47dfe99bc50b02266f /test/sbs_charging_v2.c
parent234e646fd807dc60f9af78c80db3edf8d5f93cee (diff)
downloadchrome-ec-14891fcf8ac0ac2e1c72f5d22321c6b077ab2e53.tar.gz
chgstv2: Implement battery protection for low voltage
Deep charge inspection is a battery protection mechanism: If battery voltage is lower than 6V, deep charge for more than 30 minutes The battery voltage is still lower than 6V, the system will stop charging BRANCH=trogdor BUG=b:198226241 TEST=run-sbs_charging_v2 Signed-off-by: Tang Qijun <qijun.tang@ecs.corp-partner.google.com> Change-Id: I89adf7809992b9e71b232ad1129af1407acf05a2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3151037 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'test/sbs_charging_v2.c')
-rw-r--r--test/sbs_charging_v2.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/sbs_charging_v2.c b/test/sbs_charging_v2.c
index bdca592d6c..2f9ddee57c 100644
--- a/test/sbs_charging_v2.c
+++ b/test/sbs_charging_v2.c
@@ -365,6 +365,35 @@ static int test_low_battery(void)
return EC_SUCCESS;
}
+static int test_deep_charge_battery(void)
+{
+ enum charge_state_v2 state_v2;
+ const struct battery_info *bat_info = battery_get_info();
+
+ test_setup(1);
+
+ /* battery pack voltage bellow voltage_min */
+ sb_write(SB_VOLTAGE, (bat_info->voltage_min - 200));
+ wait_charging_state();
+ state_v2 = charge_get_state_v2();
+ TEST_ASSERT(state_v2 == ST_PRECHARGE);
+
+ /*
+ * Battery voltage keep bellow voltage_min,
+ * precharge over time CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT
+ */
+ usleep(CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT);
+ state_v2 = charge_get_state_v2();
+ TEST_ASSERT(state_v2 == ST_IDLE);
+
+ /* recovery from a low voltage. */
+ sb_write(SB_VOLTAGE, (bat_info->voltage_normal));
+ wait_charging_state();
+ state_v2 = charge_get_state_v2();
+ TEST_ASSERT(state_v2 == ST_CHARGE);
+
+ return EC_SUCCESS;
+}
static int test_high_temp_battery(void)
{
test_setup(1);
@@ -935,6 +964,7 @@ void run_test(int argc, char **argv)
RUN_TEST(test_low_battery_hostevents);
RUN_TEST(test_battery_sustainer);
RUN_TEST(test_battery_sustainer_discharge_idle);
+ RUN_TEST(test_deep_charge_battery);
test_print_result();
}