summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Peress <peress@google.com>2021-10-03 22:47:26 -0600
committerCommit Bot <commit-bot@chromium.org>2021-10-05 14:23:42 +0000
commit366647d37e1a248575d8b74844cafbabf6563374 (patch)
tree494c43ed41bf2340fac6e73bd9c2fffd8ef3b750
parenta3de5c56673b3e02a9bf86f5dc07313c2323e008 (diff)
downloadchrome-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.c54
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, &reg_addr,
+ sizeof(reg_addr), &reg_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, &reg_addr,
+ sizeof(reg_addr), &reg_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, &reg_addr,
+ sizeof(reg_addr), &reg_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);
}