diff options
author | Tang Qijun <qijun.tang@ecs.corp-partner.google.com> | 2021-09-09 01:22:28 -0400 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-07 15:55:01 +0000 |
commit | 14891fcf8ac0ac2e1c72f5d22321c6b077ab2e53 (patch) | |
tree | 3a9987bf6d407e70f8918e47dfe99bc50b02266f /test/sbs_charging_v2.c | |
parent | 234e646fd807dc60f9af78c80db3edf8d5f93cee (diff) | |
download | chrome-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.c | 30 |
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(); } |