summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWai-Hong Tam <waihong@google.com>2022-08-25 10:29:42 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-08-25 18:55:19 +0000
commitbb38bcf95d9f44178af06d60077e21a3ee0da6dd (patch)
treecb8e9d17dbb26137cc9df54403647e4277207f7b
parent03704fc82aa8e5fc039236f9993c1b923d0fb6d1 (diff)
downloadchrome-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.c23
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);