diff options
Diffstat (limited to 'driver/accelgyro_bmi160.c')
-rw-r--r-- | driver/accelgyro_bmi160.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/driver/accelgyro_bmi160.c b/driver/accelgyro_bmi160.c index 2629f59340..9ffa86e363 100644 --- a/driver/accelgyro_bmi160.c +++ b/driver/accelgyro_bmi160.c @@ -852,6 +852,19 @@ static int load_fifo(struct motion_sensor_t *s, uint32_t last_ts) if (s->type != MOTIONSENSE_TYPE_ACCEL) return EC_SUCCESS; + if (!(data->flags & + (BMI160_FIFO_ALL_MASK << BMI160_FIFO_FLAG_OFFSET))) { + /* + * The FIFO was disabled while we were processing it. + * + * Flush potential left over: + * When sensor is resumed, we won't read old data. + */ + raw_write8(s->port, s->addr, BMI160_CMD_REG, + BMI160_CMD_FIFO_FLUSH); + return EC_SUCCESS; + } + raw_read_n(s->port, s->addr, BMI160_FIFO_LENGTH_0, (uint8_t *)&length, sizeof(length)); length &= BMI160_FIFO_LENGTH_MASK; @@ -872,19 +885,6 @@ static int load_fifo(struct motion_sensor_t *s, uint32_t last_ts) CPRINTS("unexpected large FIFO: %d", length); length = MIN(length, sizeof(bmi160_buffer)); - if (!(data->flags & - (BMI160_FIFO_ALL_MASK << BMI160_FIFO_FLAG_OFFSET))) { - /* - * The FIFO was disabled while we were processing it. - * - * Flush potential left over: - * When sensor is resumed, we won't read old data. - */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_FIFO_FLUSH); - return EC_SUCCESS; - } - raw_read_n(s->port, s->addr, BMI160_FIFO_DATA, bmi160_buffer, length); |