summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2018-05-15 20:43:05 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-05-16 04:22:13 +0000
commit237a0e8b2d83455f30bbec784d823c668a4c4341 (patch)
tree449f05ab81b7e3594f58eedf8994b2128094cea6
parent39d125979dbe1d1f558aa511c63e56c9de9739fa (diff)
downloadchrome-ec-stabilize-nocturne.10646.B.tar.gz
nocturne: Fix accel/gyro reference.stabilize-nocturne.10646.B
The BMI160 driver requires that the macro I2C_PORT_ACCEL is defined. This commit simply defines that macro and defines a matrix to rotate the sensor data into the standard frame. BUG=b:79715267 BRANCH=master TEST=Flash nocturne, verify that the BMI160 initializes successfully. Verify that when device is struck from the left edge, positive acceleration is seen on the X axis. When device is struck from the bottom edge, positive acceleration is seen on Y axis. Change-Id: I6407b21fdfe311fa8ac7d83a8050ebfb27b4e0d8 Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/1060713 Reviewed-by: Benson Leung <bleung@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--board/nocturne/board.c10
-rw-r--r--board/nocturne/board.h1
2 files changed, 9 insertions, 2 deletions
diff --git a/board/nocturne/board.c b/board/nocturne/board.c
index 1a96b9b629..67cc908c4e 100644
--- a/board/nocturne/board.c
+++ b/board/nocturne/board.c
@@ -156,6 +156,12 @@ static struct opt3001_drv_data_t g_opt3001_data = {
.offset = 0,
};
+/* Matrix to rotate accel/gyro into standard reference frame. */
+const matrix_3x3_t lid_standard_ref = {
+ { 0, FLOAT_TO_FP(-1), 0},
+ { FLOAT_TO_FP(-1), 0, 0},
+ { 0, 0, FLOAT_TO_FP(1)}
+};
struct motion_sensor_t motion_sensors[] = {
[LID_ACCEL] = {
@@ -169,7 +175,7 @@ struct motion_sensor_t motion_sensors[] = {
.drv_data = &g_bmi160_data,
.port = I2C_PORT_ALS_GYRO,
.addr = BMI160_ADDR0,
- .rot_standard_ref = NULL,
+ .rot_standard_ref = &lid_standard_ref,
.default_range = 4, /* g, enough for laptop. */
.min_frequency = BMI160_ACCEL_MIN_FREQ,
.max_frequency = BMI160_ACCEL_MAX_FREQ,
@@ -193,7 +199,7 @@ struct motion_sensor_t motion_sensors[] = {
.drv_data = &g_bmi160_data,
.port = I2C_PORT_ALS_GYRO,
.addr = BMI160_ADDR0,
- .rot_standard_ref = NULL,
+ .rot_standard_ref = &lid_standard_ref,
.default_range = 1000, /* dps */
.min_frequency = BMI160_GYRO_MIN_FREQ,
.max_frequency = BMI160_GYRO_MAX_FREQ,
diff --git a/board/nocturne/board.h b/board/nocturne/board.h
index 0c9bfd9f1b..5d866f1056 100644
--- a/board/nocturne/board.h
+++ b/board/nocturne/board.h
@@ -146,6 +146,7 @@
#define I2C_PORT_POWER NPCX_I2C_PORT0_0
#define I2C_PORT_BATTERY NPCX_I2C_PORT4_1
#define I2C_PORT_ALS_GYRO NPCX_I2C_PORT5_0
+#define I2C_PORT_ACCEL I2C_PORT_ALS_GYRO
#define I2C_PORT_USB_C0 NPCX_I2C_PORT1_0
#define I2C_PORT_USB_C1 NPCX_I2C_PORT2_0