diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2018-11-30 17:06:39 -0800 |
---|---|---|
committer | Justin TerAvest <teravest@chromium.org> | 2019-02-08 21:38:48 +0000 |
commit | 30dd007291e625fe42897d2f2f2f5bd3d2569900 (patch) | |
tree | e0f8731d67dd572090eaf5a46255a1d976dae6e0 /board/meep | |
parent | 6776b585f17b1112b80086f8623eeb37d303747f (diff) | |
download | chrome-ec-30dd007291e625fe42897d2f2f2f5bd3d2569900.tar.gz |
driver: lsm6dsm: Integrate LIS2MDL behind LSM6DSM
- Cros set_rate and normalize between LIS2MDL and LSM6DSM
- Remove unused sensor hub function.
- Remove parent field, use macro instead (magnetometer is just after the
gyroscope).
BUG=b:110143516,b:115587004
BRANCH=none
TEST=On meep, check the magnetometer is returning data with shell/python
script.
Check calibration quick in.
Check with AIDA64, compass and sensor app the magnetometer is seen.
Change-Id: I2efef99eda095e33b6a0555b1cbc4ac8fdbfab5d
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/1361992
Reviewed-by: Justin TerAvest <teravest@chromium.org>
Trybot-Ready: Justin TerAvest <teravest@chromium.org>
Tested-by: Justin TerAvest <teravest@chromium.org>
Diffstat (limited to 'board/meep')
-rw-r--r-- | board/meep/board.c | 23 | ||||
-rw-r--r-- | board/meep/board.h | 7 |
2 files changed, 17 insertions, 13 deletions
diff --git a/board/meep/board.c b/board/meep/board.c index 72f7f2d864..00f7bc49b6 100644 --- a/board/meep/board.c +++ b/board/meep/board.c @@ -130,10 +130,8 @@ const mat33_fp_t mag_standard_ref = { }; /* sensor private data */ -static struct kionix_accel_data g_kx022_data; -static struct lsm6dsm_data lsm6dsm_g_data; -static struct lsm6dsm_data lsm6dsm_a_data; -static struct lsm6dsm_data lis2mdl_data; +static struct kionix_accel_data kx022_data; +static struct lsm6dsm_data lsm6dsm_data; /* Drivers */ struct motion_sensor_t motion_sensors[] = { @@ -145,7 +143,7 @@ struct motion_sensor_t motion_sensors[] = { .location = MOTIONSENSE_LOC_LID, .drv = &kionix_accel_drv, .mutex = &g_lid_mutex, - .drv_data = &g_kx022_data, + .drv_data = &kx022_data, .port = I2C_PORT_SENSOR, .addr = KX022_ADDR1, .rot_standard_ref = &lid_standrd_ref, @@ -170,7 +168,8 @@ struct motion_sensor_t motion_sensors[] = { .location = MOTIONSENSE_LOC_BASE, .drv = &lsm6dsm_drv, .mutex = &g_base_mutex, - .drv_data = &lsm6dsm_a_data, + .drv_data = LSM6DSM_ST_DATA(lsm6dsm_data, + MOTIONSENSE_TYPE_ACCEL), .port = I2C_PORT_SENSOR, .addr = LSM6DSM_ADDR0, .rot_standard_ref = &base_standard_ref, @@ -199,7 +198,8 @@ struct motion_sensor_t motion_sensors[] = { .location = MOTIONSENSE_LOC_BASE, .drv = &lsm6dsm_drv, .mutex = &g_base_mutex, - .drv_data = &lsm6dsm_g_data, + .drv_data = LSM6DSM_ST_DATA(lsm6dsm_data, + MOTIONSENSE_TYPE_GYRO), .port = I2C_PORT_SENSOR, .addr = LSM6DSM_ADDR0, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ @@ -211,16 +211,15 @@ struct motion_sensor_t motion_sensors[] = { [BASE_MAG] = { .name = "Base Mag", .active_mask = SENSOR_ACTIVE_S0_S3, - .chip = MOTIONSENSE_CHIP_LSM6DSM, + .chip = MOTIONSENSE_CHIP_LIS2MDL, .type = MOTIONSENSE_TYPE_MAG, .location = MOTIONSENSE_LOC_BASE, .drv = &lis2mdl_drv, .mutex = &g_base_mutex, - .drv_data = &lis2mdl_data, - .parent = &motion_sensors[BASE_ACCEL], + .drv_data = LSM6DSM_ST_DATA(lsm6dsm_data, MOTIONSENSE_TYPE_MAG), .port = I2C_PORT_SENSOR, - .addr = LIS2MDL_ADDR0, - .default_range = LIS2MDL_RANGE, + .addr = LSM6DSM_ADDR0, + .default_range = 1 << 11, /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = LIS2MDL_ODR_MIN_VAL, .max_frequency = LIS2MDL_ODR_MAX_VAL, diff --git a/board/meep/board.h b/board/meep/board.h index e15016ce86..9beb1872e3 100644 --- a/board/meep/board.h +++ b/board/meep/board.h @@ -27,10 +27,15 @@ /* Sensors */ #define CONFIG_ACCEL_KX022 /* Lid accel */ #define CONFIG_ACCELGYRO_LSM6DSM /* Base accel */ +#define CONFIG_MAG_LSM6DSM_LIS2MDL /* Magnetometer behind base accel */ +#define CONFIG_ACCELGYRO_SEC_ADDR LIS2MDL_ADDR0 #define CONFIG_SENSORHUB_LSM6DSM -#define CONFIG_MAG_LIS2MDL +#define CONFIG_MAG_CALIBRATE +#define CONFIG_FPU + /* Sensors without hardware FIFO are in forced mode */ #define CONFIG_ACCEL_FORCE_MODE_MASK (1 << LID_ACCEL) + #define CONFIG_DYNAMIC_MOTION_SENSOR_COUNT #define CONFIG_LID_ANGLE |