summaryrefslogtreecommitdiff
path: root/driver/accelgyro_bmi160.c
diff options
context:
space:
mode:
authorTomasz Michalec <tm@semihalf.com>2021-07-14 00:44:44 +0200
committerCommit Bot <commit-bot@chromium.org>2021-07-14 21:24:55 +0000
commit0773847d80c8821da2b277c6e007b6948eb350aa (patch)
tree995136cd3f73c4de6cc94f68af70cfda97fa7de7 /driver/accelgyro_bmi160.c
parent1369994e674688cb1d4f045b48b1b4b1836ae01c (diff)
downloadchrome-ec-0773847d80c8821da2b277c6e007b6948eb350aa.tar.gz
driver: bmi160: bmi260: Minor driver fixes
Fix three issues with BMI160 and BMI260 drivers: - get/set acclerometer/gyroscope offset will return error on failed read of offset register - BMI160 calibration function returns error when setting range fail - Invalid temperature is properly recognized by driver BUG=none BRANCH=none TEST=run zmake drivers test Signed-off-by: Tomasz Michalec <tm@semihalf.com> Change-Id: I545c0a931227ef7efc000ec97c1f6297a48e6d1a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3027039 Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'driver/accelgyro_bmi160.c')
-rw-r--r--driver/accelgyro_bmi160.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/driver/accelgyro_bmi160.c b/driver/accelgyro_bmi160.c
index daa47965d8..66dffc0db5 100644
--- a/driver/accelgyro_bmi160.c
+++ b/driver/accelgyro_bmi160.c
@@ -211,13 +211,19 @@ static int set_offset(const struct motion_sensor_t *s,
switch (s->type) {
case MOTIONSENSE_TYPE_ACCEL:
- bmi_set_accel_offset(s, v);
+ ret = bmi_set_accel_offset(s, v);
+ if (ret != EC_SUCCESS)
+ return ret;
+
ret = bmi_write8(s->port, s->i2c_spi_addr_flags,
BMI160_OFFSET_EN_GYR98,
val98 | BMI160_OFFSET_ACC_EN);
break;
case MOTIONSENSE_TYPE_GYRO:
- bmi_set_gyro_offset(s, v, &val98);
+ ret = bmi_set_gyro_offset(s, v, &val98);
+ if (ret != EC_SUCCESS)
+ return ret;
+
ret = bmi_write8(s->port, s->i2c_spi_addr_flags,
BMI160_OFFSET_EN_GYR98,
val98 | BMI160_OFFSET_GYRO_EN);
@@ -246,7 +252,9 @@ static int perform_calib(struct motion_sensor_t *s, int enable)
* Temporary set frequency to 100Hz to get enough data in a short
* period of time.
*/
- set_data_rate(s, 100000, 0);
+ ret = set_data_rate(s, 100000, 0);
+ if (ret != EC_SUCCESS)
+ goto end_perform_calib;
switch (s->type) {
case MOTIONSENSE_TYPE_ACCEL: