summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBhanu Prakash Maiya <bhanumaiya@google.com>2021-07-16 01:09:19 -0700
committerCommit Bot <commit-bot@chromium.org>2021-07-16 21:36:35 +0000
commitc730865123b135b563de314211285313675f03cd (patch)
tree47cb191f238138ce90b411833451c192d0c697b2
parent2dd6cd2961af044c1407e32f917c1cdaca45c15b (diff)
downloadchrome-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.c18
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,
- &reg_val));
+ if (rate > 0)
+ RETURN_ERROR(bmi_get_normalized_rate(s, rate, rnd,
+ &normalized_rate, &reg_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, &reg_data[2], 2);