summaryrefslogtreecommitdiff
path: root/board/meep
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2018-11-30 17:06:39 -0800
committerJustin TerAvest <teravest@chromium.org>2019-02-08 21:38:48 +0000
commit30dd007291e625fe42897d2f2f2f5bd3d2569900 (patch)
treee0f8731d67dd572090eaf5a46255a1d976dae6e0 /board/meep
parent6776b585f17b1112b80086f8623eeb37d303747f (diff)
downloadchrome-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.c23
-rw-r--r--board/meep/board.h7
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