summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Chen <ben.chen2@quanta.corp-partner.google.com>2020-08-13 20:18:38 +0800
committerCommit Bot <commit-bot@chromium.org>2020-08-18 05:08:11 +0000
commit1b9a55b24634c699eb3cec3467e665e77a7205dd (patch)
tree2cc21f0b10393693d945f7b885bcce260f03b000
parentdfdbd37b6bbc296dcceda9cee121e30709833d85 (diff)
downloadchrome-ec-1b9a55b24634c699eb3cec3467e665e77a7205dd.tar.gz
voxel: modify motion sensors config
change motion sensor base accel and gyro config, and rotations matrices of lid accel and base. BUG=b:162940877 BRANCH=none TEST=Using ectool 'motionsense' verified lid angle now goes from 0 to 360 and swtiches to tablet mode after crossing 200 threshold. Change-Id: I2073ed7d64604d4c3a53ee5d9d11ab930840d0dd Signed-off-by: Ben Chen <ben.chen2@quanta.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2352965 Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r--board/voxel/board.c2
-rw-r--r--board/voxel/board.h18
-rw-r--r--board/voxel/gpio.inc2
-rw-r--r--board/voxel/sensors.c37
4 files changed, 29 insertions, 30 deletions
diff --git a/board/voxel/board.c b/board/voxel/board.c
index 52965ac4cb..23c4c6391a 100644
--- a/board/voxel/board.c
+++ b/board/voxel/board.c
@@ -10,7 +10,7 @@
#include "accelgyro.h"
#include "cbi_ec_fw_config.h"
#include "driver/accel_bma2x2.h"
-#include "driver/accelgyro_bmi260.h"
+#include "driver/accelgyro_bmi160.h"
#include "driver/ppc/syv682x.h"
#include "driver/retimer/bb_retimer.h"
#include "driver/sync.h"
diff --git a/board/voxel/board.h b/board/voxel/board.h
index e380ba2846..422e4adcdd 100644
--- a/board/voxel/board.h
+++ b/board/voxel/board.h
@@ -33,21 +33,17 @@
/* Keyboard features */
/* Sensors */
-/* BMA253 accelerometer in base */
-#define CONFIG_ACCEL_BMA255
-
-/* BMI260 accel/gyro in base */
-#define CONFIG_ACCELGYRO_BMI260
-#define CONFIG_ACCELGYRO_BMI260_INT_EVENT \
+/* BMI160 Base accel/gyro */
+#define CONFIG_ACCELGYRO_BMI160
+#define CONFIG_ACCELGYRO_BMI160_INT_EVENT \
TASK_EVENT_MOTION_SENSOR_INTERRUPT(BASE_ACCEL)
-/* Sensors without hardware FIFO are in forced mode */
-#define CONFIG_ACCEL_FORCE_MODE_MASK BIT(LID_ACCEL)
-
+/* BMA253 Lid accel */
+#define CONFIG_ACCEL_BMA255
#define CONFIG_LID_ANGLE
#define CONFIG_LID_ANGLE_UPDATE
-#define CONFIG_LID_ANGLE_SENSOR_BASE BASE_ACCEL
-#define CONFIG_LID_ANGLE_SENSOR_LID LID_ACCEL
+#define CONFIG_LID_ANGLE_SENSOR_BASE BASE_ACCEL
+#define CONFIG_LID_ANGLE_SENSOR_LID LID_ACCEL
/* USB Type C and USB PD defines */
/*
diff --git a/board/voxel/gpio.inc b/board/voxel/gpio.inc
index 63b42c9a7c..0a1c6ae1cf 100644
--- a/board/voxel/gpio.inc
+++ b/board/voxel/gpio.inc
@@ -25,7 +25,7 @@ GPIO_INT(DSW_PWROK, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(PG_EC_ALL_SYS_PWRGD, PIN(F, 4), GPIO_INT_BOTH, power_signal_interrupt)
/* Sensor Interrupts */
-GPIO_INT(EC_IMU_INT_L, PIN(5, 6), GPIO_INT_FALLING | GPIO_SEL_1P8V, bmi260_interrupt)
+GPIO_INT(EC_IMU_INT_L, PIN(5, 6), GPIO_INT_FALLING | GPIO_SEL_1P8V, bmi160_interrupt)
GPIO(EC_ALS_RGB_INT_L, PIN(D, 4), GPIO_INPUT | GPIO_PULL_UP) /* unused */
GPIO_INT(TABLET_MODE_L, PIN(9, 5), GPIO_INT_BOTH, gmr_tablet_switch_isr)
/*
diff --git a/board/voxel/sensors.c b/board/voxel/sensors.c
index 6b8933264c..fab1fac66b 100644
--- a/board/voxel/sensors.c
+++ b/board/voxel/sensors.c
@@ -8,7 +8,7 @@
#include "accelgyro.h"
#include "driver/accel_bma2x2.h"
#include "driver/accelgyro_bmi_common.h"
-#include "driver/accelgyro_bmi260.h"
+#include "driver/accelgyro_bmi160.h"
#include "driver/als_tcs3400.h"
#include "driver/sync.h"
#include "keyboard_scan.h"
@@ -18,6 +18,7 @@
#include "tablet_mode.h"
#include "util.h"
+#define CPRINTS(format, args...) cprints(CC_MOTION_SENSE, format, ## args)
/******************************************************************************/
/* Sensors */
static struct mutex g_lid_accel_mutex;
@@ -26,19 +27,19 @@ static struct mutex g_base_mutex;
/* BMA253 private data */
static struct accelgyro_saved_data_t g_bma253_data;
-/* BMI260 private data */
-static struct bmi_drv_data_t g_bmi260_data;
+/* BMI160 private data */
+static struct bmi_drv_data_t g_bmi160_data;
/* Rotation matrix for the lid accelerometer */
static const mat33_fp_t lid_standard_ref = {
- { FLOAT_TO_FP(1), 0, 0},
+ { FLOAT_TO_FP(-1), 0, 0},
{ 0, FLOAT_TO_FP(-1), 0},
- { 0, 0, FLOAT_TO_FP(-1)}
+ { 0, 0, FLOAT_TO_FP(1)}
};
const mat33_fp_t base_standard_ref = {
- { 0, FLOAT_TO_FP(1), 0},
{ FLOAT_TO_FP(-1), 0, 0},
+ { 0, FLOAT_TO_FP(-1), 0},
{ 0, 0, FLOAT_TO_FP(1)}
};
@@ -72,14 +73,14 @@ struct motion_sensor_t motion_sensors[] = {
[BASE_ACCEL] = {
.name = "Base Accel",
.active_mask = SENSOR_ACTIVE_S0_S3,
- .chip = MOTIONSENSE_CHIP_BMI260,
+ .chip = MOTIONSENSE_CHIP_BMI160,
.type = MOTIONSENSE_TYPE_ACCEL,
.location = MOTIONSENSE_LOC_BASE,
- .drv = &bmi260_drv,
+ .drv = &bmi160_drv,
.mutex = &g_base_mutex,
- .drv_data = &g_bmi260_data,
+ .drv_data = &g_bmi160_data,
.port = I2C_PORT_SENSOR,
- .i2c_spi_addr_flags = BMI260_ADDR0_FLAGS,
+ .i2c_spi_addr_flags = BMI160_ADDR0_FLAGS,
.rot_standard_ref = &base_standard_ref,
.min_frequency = BMI_ACCEL_MIN_FREQ,
.max_frequency = BMI_ACCEL_MAX_FREQ,
@@ -101,14 +102,14 @@ struct motion_sensor_t motion_sensors[] = {
[BASE_GYRO] = {
.name = "Base Gyro",
.active_mask = SENSOR_ACTIVE_S0_S3,
- .chip = MOTIONSENSE_CHIP_BMI260,
+ .chip = MOTIONSENSE_CHIP_BMI160,
.type = MOTIONSENSE_TYPE_GYRO,
.location = MOTIONSENSE_LOC_BASE,
- .drv = &bmi260_drv,
+ .drv = &bmi160_drv,
.mutex = &g_base_mutex,
- .drv_data = &g_bmi260_data,
+ .drv_data = &g_bmi160_data,
.port = I2C_PORT_SENSOR,
- .i2c_spi_addr_flags = BMI260_ADDR0_FLAGS,
+ .i2c_spi_addr_flags = BMI160_ADDR0_FLAGS,
.default_range = 1000, /* dps */
.rot_standard_ref = &base_standard_ref,
.min_frequency = BMI_GYRO_MIN_FREQ,
@@ -117,14 +118,16 @@ struct motion_sensor_t motion_sensors[] = {
};
unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors);
-static void baseboard_sensors_init(void)
+static void board_sensors_init(void)
{
/* Note - BMA253 interrupt unused by EC */
- /* Enable interrupt for the BMI260 accel/gyro sensor */
+ /* Enable interrupt for the BMI160 accel/gyro sensor */
gpio_enable_interrupt(GPIO_EC_IMU_INT_L);
+
+ CPRINTS("Motion Sensor Count = %d", motion_sensor_count);
}
-DECLARE_HOOK(HOOK_INIT, baseboard_sensors_init, HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_INIT, board_sensors_init, HOOK_PRIO_DEFAULT);
#ifndef TEST_BUILD
void lid_angle_peripheral_enable(int enable)