summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2015-08-07 22:44:57 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-24 19:08:10 +0000
commit5faadc6748d556375c1effd56dac226f2a773ad1 (patch)
treee057409fb1d4016bc76d7644a1c2256cb2048428 /driver
parent179d5d3c833433b07530b136a55085a6d22cbeee (diff)
downloadchrome-ec-5faadc6748d556375c1effd56dac226f2a773ad1.tar.gz
motion_sense: Force flush when sensor disabled.
When sensor is disabled, HAL will not send flush request to EC. However, when sensor is reenabled, only new events are expected. When we have a change in frequency, we have to request the host to query all the current events. Flush the FIFO when events are not needed because all sensors are disabled. BRANCH=smaug TEST=Pass more tests: tests like ..._fastest_batching after _50hz_flush have more change to pass. BUG=chrome-os-partner:39900 Change-Id: I1a8fc3784e3e6be260b23103b28e336e242f14cd Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/291991 Reviewed-by: Sheng-liang Song <ssl@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r--driver/accelgyro_bmi160.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/driver/accelgyro_bmi160.c b/driver/accelgyro_bmi160.c
index 3afa3e6bd7..e2b6daddeb 100644
--- a/driver/accelgyro_bmi160.c
+++ b/driver/accelgyro_bmi160.c
@@ -797,8 +797,16 @@ static int load_fifo(struct motion_sensor_t *s)
if (s->type != MOTIONSENSE_TYPE_ACCEL)
return EC_SUCCESS;
- if (!(data->flags & (BMI160_FIFO_ALL_MASK << BMI160_FIFO_FLAG_OFFSET)))
+ if (!(data->flags &
+ (BMI160_FIFO_ALL_MASK << BMI160_FIFO_FLAG_OFFSET))) {
+ /*
+ * Flush potiential left over:
+ *
+ * When sensor is resumed, we don't want to read old data.
+ */
+ raw_write8(s->addr, BMI160_CMD_REG, BMI160_CMD_FIFO_FLUSH);
return EC_SUCCESS;
+ }
do {
enum fifo_state state = FIFO_HEADER;