summaryrefslogtreecommitdiff
path: root/zephyr/test/drivers
diff options
context:
space:
mode:
authorDawid Niedzwiecki <dn@semihalf.com>2022-07-06 09:27:55 +0200
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-07-08 15:27:04 +0000
commitee5dcc9ae08f0fafced7f2b54720928cbe273b2b (patch)
tree863c25a459503da153b928e8227ddda09bdcc462 /zephyr/test/drivers
parentb64c96a2798bf56c69356e8a7b056998e4f6fb38 (diff)
downloadchrome-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.c38
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);