diff options
author | Bhanu Prakash Maiya <bhanumaiya@google.com> | 2021-07-16 01:09:19 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-16 21:36:35 +0000 |
commit | c730865123b135b563de314211285313675f03cd (patch) | |
tree | 47cb191f238138ce90b411833451c192d0c697b2 | |
parent | 2dd6cd2961af044c1407e32f917c1cdaca45c15b (diff) | |
download | chrome-ec-c730865123b135b563de314211285313675f03cd.tar.gz |
driver: bmi3xx: Fix set data rate when odr is 0
BRANCH=none
BUG=b:178398789
TEST=Accel implementation tested on Guybrush
EC commands:
> accelinfo
> accelrate 0
Signed-off-by: Bhanu Prakash Maiya <bhanumaiya@chromium.org>
Signed-off-by: Latchiamaran Senram <latchiamaran.senram@bosch.corp-partner.google.com>
Change-Id: I9b3a30eb84304ab0109b23f86686c33d9b3bdfe6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3033969
Tested-by: Bhanu Prakash Maiya <bhanumaiya@google.com>
Auto-Submit: Bhanu Prakash Maiya <bhanumaiya@google.com>
Commit-Queue: Bhanu Prakash Maiya <bhanumaiya@google.com>
Commit-Queue: Diana Z <dzigterman@chromium.org>
Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r-- | driver/accelgyro_bmi3xx.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/driver/accelgyro_bmi3xx.c b/driver/accelgyro_bmi3xx.c index 9a525943b2..3a2b29eae6 100644 --- a/driver/accelgyro_bmi3xx.c +++ b/driver/accelgyro_bmi3xx.c @@ -900,14 +900,15 @@ static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) { int ret; - int normalized_rate; + int normalized_rate = 0; uint8_t reg_data[4]; - uint8_t reg_val; + uint8_t reg_val = 0; struct accelgyro_saved_data_t *saved_data = BMI_GET_SAVED_DATA(s); - RETURN_ERROR(bmi_get_normalized_rate(s, rate, rnd, &normalized_rate, - ®_val)); + if (rate > 0) + RETURN_ERROR(bmi_get_normalized_rate(s, rate, rnd, + &normalized_rate, ®_val)); /* * Lock accel resource to prevent another task from attempting @@ -944,10 +945,6 @@ static int set_data_rate(const struct motion_sensor_t *s, BMI3_POWER_MODE, BMI3_ACC_MODE_NORMAL); } - - /* Set accelerometer ODR */ - reg_data[2] = BMI3_SET_BIT_POS0(reg_data[2], - BMI3_SENS_ODR, reg_val); } else if (s->type == MOTIONSENSE_TYPE_GYRO) { if (rate == 0) { /* FIFO stop collecting events */ @@ -968,10 +965,11 @@ static int set_data_rate(const struct motion_sensor_t *s, BMI3_POWER_MODE, BMI3_GYR_MODE_NORMAL); } - reg_data[2] = BMI3_SET_BIT_POS0(reg_data[2], BMI3_SENS_ODR, - reg_val); } + /* Set accelerometer ODR */ + reg_data[2] = BMI3_SET_BIT_POS0(reg_data[2], BMI3_SENS_ODR, reg_val); + /* Set the accel/gyro configurations. */ ret = bmi3_write_n(s, BMI3_REG_ACC_CONF + s->type, ®_data[2], 2); |