diff options
author | Yuval Peress <peress@google.com> | 2021-10-03 22:47:26 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-05 14:23:42 +0000 |
commit | 366647d37e1a248575d8b74844cafbabf6563374 (patch) | |
tree | 494c43ed41bf2340fac6e73bd9c2fffd8ef3b750 | |
parent | a3de5c56673b3e02a9bf86f5dc07313c2323e008 (diff) | |
download | chrome-ec-366647d37e1a248575d8b74844cafbabf6563374.tar.gz |
zephyr: test: isl923x::discharge_on_ac
Verify all the code paths on the discharge_on_ac API
BRANCH=none
BUG=b:201819565
TEST=zmake configure --test zephyr/test/drivers
Signed-off-by: Yuval Peress <peress@google.com>
Change-Id: Id9b4163ad42a7bcb14bdac425ed9af5d29d1d1d7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3201914
Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
-rw-r--r-- | zephyr/test/drivers/src/isl923x.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/zephyr/test/drivers/src/isl923x.c b/zephyr/test/drivers/src/isl923x.c index e70874f7a3..a2dd872c09 100644 --- a/zephyr/test/drivers/src/isl923x.c +++ b/zephyr/test/drivers/src/isl923x.c @@ -486,6 +486,57 @@ void test_comparator_inversion(void) zassert_true((reg_value & ISL923X_C2_INVERT_CMOUT) == 0, NULL); } +static void test_discharge_on_ac(void) +{ + const struct emul *isl923x_emul = ISL923X_EMUL; + const struct device *i2c_dev = isl923x_emul_get_parent(isl923x_emul); + struct i2c_emul *i2c_emul = isl923x_emul_get_i2c_emul(isl923x_emul); + uint8_t reg_addr = ISL923X_REG_CONTROL1; + uint8_t tx_buf[] = { reg_addr, 0, 0 }; + uint16_t reg_value; + + /* Test failure to read CTRL1 register */ + i2c_common_emul_set_read_fail_reg(i2c_emul, ISL923X_REG_CONTROL1); + zassert_equal(EC_ERROR_INVAL, + isl923x_drv.discharge_on_ac(CHARGER_NUM, true), NULL); + i2c_common_emul_set_read_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + + /* Set CTRL1 register to 0 */ + zassert_ok(i2c_write(i2c_dev, tx_buf, sizeof(tx_buf), i2c_emul->addr), + NULL); + + /* Test failure to write CTRL1 register */ + i2c_common_emul_set_write_fail_reg(i2c_emul, ISL923X_REG_CONTROL1); + zassert_equal(EC_ERROR_INVAL, + isl923x_drv.discharge_on_ac(CHARGER_NUM, true), NULL); + zassert_ok(i2c_write_read(i2c_dev, i2c_emul->addr, ®_addr, + sizeof(reg_addr), ®_value, + sizeof(reg_value)), + NULL); + zassert_equal(0, reg_value, NULL); + i2c_common_emul_set_write_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + + /* Test enabling discharge on AC */ + zassert_ok(isl923x_drv.discharge_on_ac(CHARGER_NUM, true), NULL); + + zassert_ok(i2c_write_read(i2c_dev, i2c_emul->addr, ®_addr, + sizeof(reg_addr), ®_value, + sizeof(reg_value)), + NULL); + zassert_true((reg_value & ISL923X_C1_LEARN_MODE_ENABLE) != 0, NULL); + + /* Test disabling discharge on AC */ + zassert_ok(isl923x_drv.discharge_on_ac(CHARGER_NUM, false), NULL); + + zassert_ok(i2c_write_read(i2c_dev, i2c_emul->addr, ®_addr, + sizeof(reg_addr), ®_value, + sizeof(reg_value)), + NULL); + zassert_true((reg_value & ISL923X_C1_LEARN_MODE_ENABLE) == 0, NULL); +} + void test_suite_isl923x(void) { ztest_test_suite(isl923x, @@ -501,6 +552,7 @@ void test_suite_isl923x(void) ztest_unit_test(test_post_init), ztest_unit_test(test_set_ac_prochot), ztest_unit_test(test_set_dc_prochot), - ztest_unit_test(test_comparator_inversion)); + ztest_unit_test(test_comparator_inversion), + ztest_unit_test(test_discharge_on_ac)); ztest_run_test_suite(isl923x); } |