diff options
author | Yuval Peress <peress@google.com> | 2021-09-30 11:08:58 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-02 02:28:00 +0000 |
commit | a7ef9770338570a2ce71af97b80687844b109691 (patch) | |
tree | c9f0ee4324edbfd18404dc43da7c07d192d0e700 | |
parent | b3c535fcd0c7d0df3c2aa6a1fb827b106534146c (diff) | |
download | chrome-ec-a7ef9770338570a2ce71af97b80687844b109691.tar.gz |
zephyr: test: verify isl923x device ID code path
BRANCH=none
BUG=b:201602829
TEST=zmake configure --test zephyr/test/drivers
Signed-off-by: Yuval Peress <peress@google.com>
Change-Id: I08b24d571e0b27fd7fc5f644efdba18c5a639128
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3198237
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
-rw-r--r-- | zephyr/emul/emul_isl923x.c | 17 | ||||
-rw-r--r-- | zephyr/include/emul/emul_isl923x.h | 9 | ||||
-rw-r--r-- | zephyr/test/drivers/src/isl923x.c | 24 |
3 files changed, 49 insertions, 1 deletions
diff --git a/zephyr/emul/emul_isl923x.c b/zephyr/emul/emul_isl923x.c index edec034874..0adbb86c00 100644 --- a/zephyr/emul/emul_isl923x.c +++ b/zephyr/emul/emul_isl923x.c @@ -50,6 +50,8 @@ struct isl923x_emul_data { uint16_t max_volt_reg; /** Emulated manufacturer ID register */ uint16_t manufacturer_id_reg; + /** Emulated device ID register */ + uint16_t device_id_reg; }; struct isl923x_emul_cfg { @@ -72,6 +74,14 @@ void isl923x_emul_set_manufacturer_id(const struct emul *emulator, data->manufacturer_id_reg = manufacturer_id; } +void isl923x_emul_set_device_id(const struct emul *emulator, + uint16_t device_id) +{ + struct isl923x_emul_data *data = emulator->data; + + data->device_id_reg = device_id; +} + static int isl923x_emul_read_byte(struct i2c_emul *emul, int reg, uint8_t *val, int bytes) { @@ -120,6 +130,13 @@ static int isl923x_emul_read_byte(struct i2c_emul *emul, int reg, uint8_t *val, *val = (uint8_t)((data->manufacturer_id_reg >> 8) & 0xff); break; + case ISL923X_REG_DEVICE_ID: + __ASSERT_NO_MSG(bytes == 0 || bytes == 1); + if (bytes == 0) + *val = (uint8_t)(data->device_id_reg & 0xff); + else + *val = (uint8_t)((data->device_id_reg >> 8) & 0xff); + break; default: return -EINVAL; } diff --git a/zephyr/include/emul/emul_isl923x.h b/zephyr/include/emul/emul_isl923x.h index c3706be03c..3de7475207 100644 --- a/zephyr/include/emul/emul_isl923x.h +++ b/zephyr/include/emul/emul_isl923x.h @@ -28,4 +28,13 @@ struct i2c_emul *isl923x_emul_get_i2c_emul(const struct emul *emulator); void isl923x_emul_set_manufacturer_id(const struct emul *emulator, uint16_t manufacturer_id); +/** + * @brief Set the device ID + * + * @param emulator The emulator to modify + * @param device_id The new device ID + */ +void isl923x_emul_set_device_id(const struct emul *emulator, + uint16_t device_id); + #endif /* ZEPHYR_INCLUDE_EMUL_EMUL_ISL923X_H_ */ diff --git a/zephyr/test/drivers/src/isl923x.c b/zephyr/test/drivers/src/isl923x.c index 17c87ea651..d6a9fb0c59 100644 --- a/zephyr/test/drivers/src/isl923x.c +++ b/zephyr/test/drivers/src/isl923x.c @@ -179,12 +179,34 @@ void test_manufacturer_id(void) I2C_COMMON_EMUL_NO_FAIL_REG); } +void test_device_id(void) +{ + const struct emul *isl923x_emul = ISL923X_EMUL; + struct i2c_emul *i2c_emul = isl923x_emul_get_i2c_emul(isl923x_emul); + int id; + + isl923x_emul_set_device_id(isl923x_emul, 0x5678); + zassert_ok(isl923x_drv.device_id(CHARGER_NUM, &id), NULL); + zassert_equal(0x5678, id, NULL); + + /* Test read error */ + i2c_common_emul_set_read_fail_reg(i2c_emul, + ISL923X_REG_DEVICE_ID); + zassert_equal(EC_ERROR_INVAL, + isl923x_drv.device_id(CHARGER_NUM, &id), NULL); + + /* Reset fail register */ + i2c_common_emul_set_read_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); +} + void test_suite_isl923x(void) { ztest_test_suite(isl923x, ztest_unit_test(test_isl923x_set_current), ztest_unit_test(test_isl923x_set_voltage), ztest_unit_test(test_isl923x_set_input_current_limit), - ztest_unit_test(test_manufacturer_id)); + ztest_unit_test(test_manufacturer_id), + ztest_unit_test(test_device_id)); ztest_run_test_suite(isl923x); } |