nocturne: Fix accel/gyro reference.

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/1059535
Commit-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
This commit is contained in:
Aseda Aboagye
2018-05-15 20:43:05 -07:00
committed by chrome-bot
parent 9be407f10e
commit 1d114ffa3c
2 changed files with 9 additions and 2 deletions

View File

@@ -155,6 +155,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] = {
@@ -168,7 +174,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,
@@ -192,7 +198,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,

View File

@@ -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