summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Peress <peress@chromium.org>2019-05-20 21:12:02 -0600
committerchrome-bot <chrome-bot@chromium.org>2019-05-23 02:14:21 -0700
commit2a3f85bb5e6539a802161c8ddd98111e0b048e2b (patch)
treed97ef19468596494853fc5d7d20bce705f5ac306
parentf25a4cf2477a48fccce07047aaa3bb564c46e802 (diff)
downloadchrome-ec-2a3f85bb5e6539a802161c8ddd98111e0b048e2b.tar.gz
driver: lsm6dsm: Move the interrupt GPIO into sensor struct
This changes allows each board to add a custom configuration for the sensors. In this case particularly setting the GPIO enum that is used for the interrupt signal in the lsm6dsm. BUG=b:129159505 BRANCH=arcada TEST=I ran `make buildall` since this change isn't used yet it doesn't affect run-time behavior. Change-Id: I4a2d5e097d5fd8a45af591a24c4e6e917865a093 Signed-off-by: Yuval Peress <peress@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1621747 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r--board/arcada_ish/board.c4
-rw-r--r--board/bloog/board.c4
-rw-r--r--board/fleex/board.c4
-rw-r--r--board/meep/board.c4
-rw-r--r--board/phaser/board.c4
-rw-r--r--board/yorp/board.c4
-rw-r--r--include/motion_sense.h3
7 files changed, 27 insertions, 0 deletions
diff --git a/board/arcada_ish/board.c b/board/arcada_ish/board.c
index 2bba8bd0da..f5e3d3ef0b 100644
--- a/board/arcada_ish/board.c
+++ b/board/arcada_ish/board.c
@@ -60,6 +60,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_lid_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_a_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_ACCEL_GYRO_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR1,
.rot_standard_ref = &lid_rot_ref,
@@ -88,6 +90,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_lid_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_a_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_ACCEL_GYRO_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR1,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/bloog/board.c b/board/bloog/board.c
index 2efeefe073..6bf29ed642 100644
--- a/board/bloog/board.c
+++ b/board/bloog/board.c
@@ -163,6 +163,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = &base_standard_ref,
@@ -193,6 +195,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/fleex/board.c b/board/fleex/board.c
index d76c1e5dd6..386d8ad61b 100644
--- a/board/fleex/board.c
+++ b/board/fleex/board.c
@@ -161,6 +161,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = &base_standard_ref,
@@ -191,6 +193,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/meep/board.c b/board/meep/board.c
index 9420a74f40..8c44bda737 100644
--- a/board/meep/board.c
+++ b/board/meep/board.c
@@ -163,6 +163,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = &base_standard_ref,
@@ -193,6 +195,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/phaser/board.c b/board/phaser/board.c
index 630662a75f..68d5bbd633 100644
--- a/board/phaser/board.c
+++ b/board/phaser/board.c
@@ -148,6 +148,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = &standard_rot_ref,
@@ -178,6 +180,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/board/yorp/board.c b/board/yorp/board.c
index 3a9091aef4..65653ac168 100644
--- a/board/yorp/board.c
+++ b/board/yorp/board.c
@@ -144,6 +144,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_ACCEL),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = &base_standard_ref,
@@ -174,6 +176,8 @@ struct motion_sensor_t motion_sensors[] = {
.mutex = &g_base_mutex,
.drv_data = LSM6DSM_ST_DATA(lsm6dsm_data,
MOTIONSENSE_TYPE_GYRO),
+ .int_signal = GPIO_BASE_SIXAXIS_INT_L,
+ .flags = MOTIONSENSE_FLAG_INT_SIGNAL,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.default_range = 1000 | ROUND_UP_FLAG, /* dps */
diff --git a/include/motion_sense.h b/include/motion_sense.h
index 25e4e2fc7c..ff009949e5 100644
--- a/include/motion_sense.h
+++ b/include/motion_sense.h
@@ -112,6 +112,7 @@ struct motion_data_t {
* the components.
*/
#define MOTIONSENSE_FLAG_IN_SPOOF_MODE BIT(1)
+#define MOTIONSENSE_FLAG_INT_SIGNAL BIT(2)
struct motion_sensor_t {
/* RO fields */
@@ -124,6 +125,8 @@ struct motion_sensor_t {
/* One mutex per physical chip. */
struct mutex *mutex;
void *drv_data;
+ /* Only valid if flags & MOTIONSENSE_FLAG_INT_SIGNAL is true. */
+ enum gpio_signal int_signal;
/* i2c port */
uint8_t port;