summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2015-07-23 14:54:14 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-07-25 01:22:37 +0000
commit60482a8179900c92591be535d4e68afaa19f9e7e (patch)
treeb4c4f1714beb7cbce48f411f85cf753bb13f3062 /driver
parent14bd917343489c09033f0f9c97e7951d5cb2aeec (diff)
downloadchrome-ec-60482a8179900c92591be535d4e68afaa19f9e7e.tar.gz
driver: bmi160: fix FIFO pollution at boot
FIFO should not collect events of suspended sensors. It could still happen at boot, when sensors are set up suspended. BRANCH=smaug TEST=Check for invalid FIFO events in HAL code. BUG=none Change-Id: Ie363afc3f3263bb10e03a8d0a8ee34b8b92bb6b4 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/288200 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r--driver/accelgyro_bmi160.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/driver/accelgyro_bmi160.c b/driver/accelgyro_bmi160.c
index 80dffdce2f..ce50203e9f 100644
--- a/driver/accelgyro_bmi160.c
+++ b/driver/accelgyro_bmi160.c
@@ -569,10 +569,7 @@ static int config_interrupt(const struct motion_sensor_t *s)
ret = raw_write8(s->i2c_addr, BMI160_FIFO_CONFIG_1,
BMI160_FIFO_TAG_INT1_EN |
BMI160_FIFO_TAG_INT2_EN |
- BMI160_FIFO_HEADER_EN |
- BMI160_FIFO_MAG_EN |
- BMI160_FIFO_ACC_EN |
- BMI160_FIFO_GYR_EN);
+ BMI160_FIFO_HEADER_EN);
#endif
/* Set double tap interrupt and fifo*/
@@ -906,13 +903,13 @@ static int init(const struct motion_sensor_t *s)
bmm150_mag_access_ctrl(s->i2c_addr, 0);
}
#endif
+#ifdef CONFIG_ACCEL_INTERRUPTS
+ if (s->type == MOTIONSENSE_TYPE_ACCEL)
+ ret = config_interrupt(s);
+#endif
set_range(s, s->runtime_config.range, 0);
set_data_rate(s, s->runtime_config.odr, 0);
-#ifdef CONFIG_ACCEL_INTERRUPTS
- ret = config_interrupt(s);
-#endif
- /* Fifo setup is done elsewhere */
CPRINTF("[%T %s: MS Done Init type:0x%X range:%d odr:%d]\n",
s->name, s->type, s->runtime_config.range,
s->runtime_config.odr);