diff options
author | Karthikeyan Ramasubramanian <kramasub@chromium.org> | 2018-10-01 14:21:51 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-19 15:07:40 -0700 |
commit | 58f4737ae117f0bd5e2a3a7ea35ef26791bdd146 (patch) | |
tree | b96c8302a4c966c202fbc569f9ceb94472f718d4 /driver/accelgyro_lsm6dsm.h | |
parent | 88a0c56c873cd32fb69923fc5b5eba31c529c433 (diff) | |
download | chrome-ec-58f4737ae117f0bd5e2a3a7ea35ef26791bdd146.tar.gz |
driver/sensorhub_lsm6dsm: Add sensor hub support in LSM6DSM module
Add support for sensor hub in LSM6DSM accelerometer module so that
external sensors module like magnetometer can be supported.
BRANCH=none
BUG=b:115587004
TEST=Collect magnetometer readings using ectool motionsense
Change-Id: Id0fd4eea56b7106a89d55925ae488af6b0300119
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1257503
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'driver/accelgyro_lsm6dsm.h')
-rw-r--r-- | driver/accelgyro_lsm6dsm.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/driver/accelgyro_lsm6dsm.h b/driver/accelgyro_lsm6dsm.h index a85b460c33..afb669c077 100644 --- a/driver/accelgyro_lsm6dsm.h +++ b/driver/accelgyro_lsm6dsm.h @@ -19,6 +19,11 @@ #define LSM6DSM_ADDR0 LSM6DSM_I2C_ADDR(0x6a) #define LSM6DSM_ADDR1 LSM6DSM_I2C_ADDR(0x6b) +/* Access to embedded sensor hub register bank */ +#define LSM6DSM_FUNC_CFG_ACC_ADDR 0x01 +#define LSM6DSM_FUNC_CFG_EN 0x80 +#define LSM6DSM_FUNC_CFG_EN_B 0x20 + /* Who Am I */ #define LSM6DSM_WHO_AM_I_REG 0x0f #define LSM6DSM_WHO_AM_I 0x6a @@ -32,6 +37,8 @@ #define LSM6DSM_ACCEL_OUT_X_L_ADDR 0x28 #define LSM6DSM_CTRL1_ADDR 0x10 +#define LSM6DSM_XL_ODR_MASK 0xf0 + #define LSM6DSM_CTRL2_ADDR 0x11 #define LSM6DSM_CTRL3_ADDR 0x12 #define LSM6DSM_SW_RESET 0x01 @@ -46,6 +53,14 @@ #define LSM6DSM_CTRL6_ADDR 0x15 #define LSM6DSM_CTRL7_ADDR 0x16 +#define LSM6DSM_CTRL10_ADDR 0x19 +#define LSM6DSM_EMBED_FUNC_EN 0x4 + +#define LSM6DSM_MASTER_CFG_ADDR 0x1a +#define LSM6DSM_I2C_MASTER_ON 0x1 +#define LSM6DSM_I2C_PASS_THRU_MODE 0x4 +#define LSM6DSM_EXT_TRIGGER_EN 0x10 + #define LSM6DSM_STATUS_REG 0x1e /* Output data rate registers and masks */ @@ -102,6 +117,27 @@ * Value is limited to 416 Hz */ + +/* Register values for Sensor Hub Slave 0 */ +#define LSM6DSM_SLV0_ADD_ADDR 0x02 +#define LSM6DSM_SLV0_ADDR_SHFT 1 +#define LSM6DSM_SLV0_ADDR_MASK 0xfe +#define LSM6DSM_SLV0_RD_BIT 0x01 + +#define LSM6DSM_SLV0_SUBADD_ADDR 0x03 + +#define LSM6DSM_SLV0_CONFIG_ADDR 0x04 +#define LSM6DSM_SLV0_SLV_RATE_SHFT 6 +#define LSM6DSM_SLV0_SLV_RATE_MASK 0xc0 +#define LSM6DSM_SLV0_AUX_SENS_SHFT 4 +#define LSM6DSM_SLV0_AUX_SENS_MASK 0x30 +#define LSM6DSM_SLV0_NUM_OPS_MASK 0x07 + +#define LSM6DSM_SLV1_CONFIG_ADDR 0x07 +#define LSM6DSM_SLV0_WR_ONCE_MASK 0x20 + +#define LSM6DSM_SENSORHUB1_REG 0x2e + /* Registers value for sensor Hub */ #define LSM6DSM_FUNC_SRC1 0x53 #define LSM6DSM_SENSORHUB_END_OP 0x01 @@ -111,6 +147,7 @@ enum dev_fifo { FIFO_DEV_INVALID = -1, FIFO_DEV_GYRO = 0, FIFO_DEV_ACCEL, + FIFO_DEV_MAG, FIFO_DEV_NUM, }; |