summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorJett Rink <jettrink@chromium.org>2019-01-30 10:19:16 -0700
committerCommit Bot <commit-bot@chromium.org>2019-08-02 17:47:24 +0000
commitf61aac7cd0a62aa57ed8c33bb49c45b6d9ae43c0 (patch)
treed81a4a6b5c19750bae2fb0e34eee92c8d29908b3 /driver
parent53397669f18b6a4729c238aa9a2b479c36966e12 (diff)
downloadchrome-ec-f61aac7cd0a62aa57ed8c33bb49c45b6d9ae43c0.tar.gz
lsm6ds3: Add LDM6DS3 variant to existing LSM6DSM
The lsm6dsX where X is M/L/3 are very similar. The only differences appear to be the who am I register value and fifo size. BRANCH=none BUG=b:122281217 TEST=Arcada with CL stack, can read sensor data via EC console using `accelread 0` command Change-Id: Iaa12d49616c66e574e069b43aba2618722f0dda0 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1446533 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Gwendal Grignou <gwendal@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1719528 Reviewed-by: Edward Hill <ecgh@chromium.org> Tested-by: Edward Hill <ecgh@chromium.org> Commit-Queue: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r--driver/accelgyro_lsm6dsm.c7
-rw-r--r--driver/accelgyro_lsm6dsm.h1
2 files changed, 6 insertions, 2 deletions
diff --git a/driver/accelgyro_lsm6dsm.c b/driver/accelgyro_lsm6dsm.c
index 9e333c95f2..dc9a0ff5aa 100644
--- a/driver/accelgyro_lsm6dsm.c
+++ b/driver/accelgyro_lsm6dsm.c
@@ -4,7 +4,7 @@
*/
/**
- * LSM6DSx (x is L or M) accelerometer and gyro module for Chrome EC
+ * LSM6DSx (x is L/M/3) accelerometer and gyro module for Chrome EC
* 3D digital accelerometer & 3D digital gyroscope
* This driver supports both devices LSM6DSM and LSM6DSL
*/
@@ -600,8 +600,11 @@ static int init(const struct motion_sensor_t *s)
if (ret != EC_SUCCESS)
return EC_ERROR_UNKNOWN;
- if (tmp != LSM6DSM_WHO_AM_I)
+ if (tmp != LSM6DS3_WHO_AM_I && tmp != LSM6DSM_WHO_AM_I) {
+ /* Unrecognized sensor */
+ CPRINTS("Unknown WHO_AM_I value: 0x%x", tmp);
return EC_ERROR_ACCESS_DENIED;
+ }
/*
* This sensor can be powered through an EC reboot, so the state of the
diff --git a/driver/accelgyro_lsm6dsm.h b/driver/accelgyro_lsm6dsm.h
index a9191bdfb4..bfbf1fc26c 100644
--- a/driver/accelgyro_lsm6dsm.h
+++ b/driver/accelgyro_lsm6dsm.h
@@ -69,6 +69,7 @@
/* Who Am I */
#define LSM6DSM_WHO_AM_I_REG 0x0f
#define LSM6DSM_WHO_AM_I 0x6a
+#define LSM6DS3_WHO_AM_I 0x69
#define LSM6DSM_CTRL1_ADDR 0x10
#define LSM6DSM_XL_ODR_MASK 0xf0