summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Peress <peress@google.com>2021-09-30 11:08:58 -0600
committerCommit Bot <commit-bot@chromium.org>2021-10-02 02:28:00 +0000
commita7ef9770338570a2ce71af97b80687844b109691 (patch)
treec9f0ee4324edbfd18404dc43da7c07d192d0e700
parentb3c535fcd0c7d0df3c2aa6a1fb827b106534146c (diff)
downloadchrome-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.c17
-rw-r--r--zephyr/include/emul/emul_isl923x.h9
-rw-r--r--zephyr/test/drivers/src/isl923x.c24
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);
}