diff options
author | Dawid Niedzwiecki <dn@semihalf.com> | 2022-07-06 09:27:55 +0200 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-07-08 15:27:04 +0000 |
commit | ee5dcc9ae08f0fafced7f2b54720928cbe273b2b (patch) | |
tree | 863c25a459503da153b928e8227ddda09bdcc462 /zephyr/test/drivers | |
parent | b64c96a2798bf56c69356e8a7b056998e4f6fb38 (diff) | |
download | chrome-ec-ee5dcc9ae08f0fafced7f2b54720928cbe273b2b.tar.gz |
zephyr: tests: fix bmi160 flaky tests
Add before and after test routines to initialize the bmi160 emulator
properly. It includes:
-reenabling sensors
-setting a correct chip ID
-disabling a rotation vector
-clearing the I2C fail register
It should fix every flaky bmi160 test.
BUG=b:233104376
TEST=enable the test shuffling; make sure there is no "bmi160.c" string
in the output
BRANCH=main
Signed-off-by: Dawid Niedzwiecki <dn@semihalf.com>
Change-Id: I6769f91e10b147a0c28730469c85cda8f128931f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3748784
Reviewed-by: Tomasz Michalec <tmichalec@google.com>
Commit-Queue: Yuval Peress <peress@google.com>
Reviewed-by: Yuval Peress <peress@google.com>
Diffstat (limited to 'zephyr/test/drivers')
-rw-r--r-- | zephyr/test/drivers/src/bmi160.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/zephyr/test/drivers/src/bmi160.c b/zephyr/test/drivers/src/bmi160.c index 473858f5ea..39144bd9e6 100644 --- a/zephyr/test/drivers/src/bmi160.c +++ b/zephyr/test/drivers/src/bmi160.c @@ -2080,4 +2080,40 @@ ZTEST_USER(bmi160, test_bmi_init_chip_id) i2c_common_emul_set_write_func(emul, NULL, NULL); } -ZTEST_SUITE(bmi160, drivers_predicate_post_main, NULL, NULL, NULL, NULL); +static void bmi160_before(void *fixture) +{ + ARG_UNUSED(fixture); + struct i2c_emul *emul = bmi_emul_get(BMI_ORD); + struct motion_sensor_t *acc_ms; + struct motion_sensor_t *gyr_ms; + + acc_ms = &motion_sensors[BMI_ACC_SENSOR_ID]; + gyr_ms = &motion_sensors[BMI_GYR_SENSOR_ID]; + + i2c_common_emul_set_read_fail_reg(emul, I2C_COMMON_EMUL_NO_FAIL_REG); + bmi_emul_set_reg(emul, BMI160_CHIP_ID, 0xd1); + + /* Disable rotation */ + gyr_ms->rot_standard_ref = NULL; + acc_ms->rot_standard_ref = NULL; + + zassume_equal(EC_SUCCESS, acc_ms->drv->set_data_rate(acc_ms, 50000, 0), + NULL); + zassume_equal(EC_SUCCESS, gyr_ms->drv->set_data_rate(gyr_ms, 50000, 0), + NULL); +} + +static void bmi160_after(void *state) +{ + ARG_UNUSED(state); + struct motion_sensor_t *acc_ms, *gyr_ms; + + acc_ms = &motion_sensors[BMI_ACC_SENSOR_ID]; + gyr_ms = &motion_sensors[BMI_GYR_SENSOR_ID]; + + acc_ms->drv->set_data_rate(acc_ms, 0, 0); + gyr_ms->drv->set_data_rate(gyr_ms, 0, 0); +} + +ZTEST_SUITE(bmi160, drivers_predicate_post_main, NULL, bmi160_before, + bmi160_after, NULL); |