summaryrefslogtreecommitdiff
path: root/board/ryu
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2015-11-09 15:52:50 -0800
committerchrome-bot <chrome-bot@chromium.org>2015-11-13 01:00:39 -0800
commit66a72f0b6e379edc3a2a52fa2e9b0f66c557a447 (patch)
treecea7dc81e2b5b747b40af326ec0f2631976cf8f4 /board/ryu
parent0922cc81ce22204264a2b96cec4bf2195939e516 (diff)
downloadchrome-ec-66a72f0b6e379edc3a2a52fa2e9b0f66c557a447.tar.gz
motion: minium interval between motion task now a variable
On Ryu EVT2, where sensors share a 100kb i2c bus with other device, when the sensors set to their maximal frequency and sampling interval set to 5ms, the power management task would wait forever for the i2c lock. Increase the minimal amount of time the task can wait from 3ms to 8ms in that case. This is not an issue for Ryu PVT where the sensors are on a separate SPI bus. However, on EVT, when setting the accelerometer/gyro over 125Hz, EC won't be able to deliver the data in non-batched mode. BRANCH=smaug BUG=b:25510300 TEST=Without this change, an evt2 board would crash when plugging/unplugging the charger while the sensors are set with: echo 200000 > iio:device0/frequency # Accel echo 5 > iio:device0/sampling_frequency echo 200000 > iio:device1/frequency # Gyro echo 25000 > iio:device2/frequency # Mag Change-Id: Idb30da9ab8da61284388db73365c37be3a250dec Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/311755 Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'board/ryu')
-rw-r--r--board/ryu/board.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/board/ryu/board.c b/board/ryu/board.c
index 44cc2db069..a6712aa21b 100644
--- a/board/ryu/board.c
+++ b/board/ryu/board.c
@@ -197,6 +197,12 @@ static void board_init(void)
CPRINTS("Board using SPI sensors");
} else { /* I2C sensors on rev v6/7/8 */
CPRINTS("Board using I2C sensors");
+ /*
+ * On EVT2, when the sensors are on the same bus as other
+ * sensors, motion task would not leave enough time for
+ * processing as soon as its frequency is around ~200Hz.
+ */
+ motion_min_interval = 8 * MSEC;
}
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);