diff options
author | Wai-Hong Tam <waihong@google.com> | 2022-08-25 10:29:42 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-08-25 18:55:19 +0000 |
commit | bb38bcf95d9f44178af06d60077e21a3ee0da6dd (patch) | |
tree | cb8e9d17dbb26137cc9df54403647e4277207f7b | |
parent | 03704fc82aa8e5fc039236f9993c1b923d0fb6d1 (diff) | |
download | chrome-ec-bb38bcf95d9f44178af06d60077e21a3ee0da6dd.tar.gz |
zephyr: test: Test writing a register in virtual battery over I2C passthru
Add a test case to write a register to the virtual battery over I2C
passthru. Write the SB_MANUFACTURER_ACCESS register, which is writable
only. It simply caches the value and does nothing in the smart battery
emulator. Read the data back to verify.
BRANCH=None
BUG=b:236131904
TEST=./twister -s zephyr/test/drivers/drivers.default
Change-Id: Idfa986ec52eeda2ecf823dab27b48b7bdca6b121
Signed-off-by: Wai-Hong Tam <waihong@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3857447
Commit-Queue: Yuval Peress <peress@google.com>
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
Reviewed-by: Yuval Peress <peress@google.com>
-rw-r--r-- | zephyr/test/drivers/default/src/virtual_battery.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/zephyr/test/drivers/default/src/virtual_battery.c b/zephyr/test/drivers/default/src/virtual_battery.c index e8c2ca8414..6d74dcc2bb 100644 --- a/zephyr/test/drivers/default/src/virtual_battery.c +++ b/zephyr/test/drivers/default/src/virtual_battery.c @@ -85,6 +85,15 @@ static uint16_t virtual_battery_read16(uint8_t command) return ((int)read_buf[1] << 8) | read_buf[0]; } +static void virtual_battery_write16(uint8_t command, uint16_t data) +{ + uint8_t write_buf[3] = { command }; + + *((uint16_t *)&write_buf[1]) = data; + + virtual_battery_xfer(write_buf, 3, NULL, 0); +} + static int virtual_battery_read_str(uint8_t command, char **read_buf, int read_len) { @@ -212,9 +221,21 @@ ZTEST_USER(virtual_battery, test_read_regs) * SB_DESIGN_VOLTAGE * SB_MANUFACTURER_DATA * SB_MANUFACTURE_INFO - * SB_MANUFACTURER_ACCESS */ } +ZTEST_USER(virtual_battery, test_write_mfgacc) +{ + struct sbat_emul_bat_data *bat; + const struct emul *emul = EMUL_DT_GET(BATTERY_NODE); + uint16_t cmd = PARAM_OPERATION_STATUS; + + bat = sbat_emul_get_bat_data(emul); + + /* Write the command to the SB_MANUFACTURER_ACCESS and check */ + virtual_battery_write16(SB_MANUFACTURER_ACCESS, cmd); + zassert_equal(bat->mf_access, cmd, "%d != %d", bat->mf_access, cmd); +} + ZTEST_SUITE(virtual_battery, drivers_predicate_post_main, NULL, NULL, NULL, NULL); |