summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Peress <peress@chromium.org>2019-11-15 10:14:18 -0700
committerCommit Bot <commit-bot@chromium.org>2020-01-03 00:38:21 +0000
commit4a7e15fd51dac214d22567ffa080a447e5051d63 (patch)
treeca8a3445e6a6df1c11e77d1fc09990e9f7ac5d77
parent32412de5fe36815e828302d6d8279d687a3dddf0 (diff)
downloadchrome-ec-4a7e15fd51dac214d22567ffa080a447e5051d63.tar.gz
driver: lsm6dsm: Implement temperature reading
Implement reading the internal chip temperature BUG=b:138303429,chromium:1023858 TEST=None BRANCH=None Change-Id: Ia077d5d439d5557333aae5325140ab1958da993e Signed-off-by: Yuval Peress <peress@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1922293 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
-rw-r--r--driver/accelgyro_lsm6dsm.c16
-rw-r--r--driver/accelgyro_lsm6dsm.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/driver/accelgyro_lsm6dsm.c b/driver/accelgyro_lsm6dsm.c
index 3d0c717a9b..64a1d22517 100644
--- a/driver/accelgyro_lsm6dsm.c
+++ b/driver/accelgyro_lsm6dsm.c
@@ -836,6 +836,21 @@ err_unlock:
return ret;
}
+static int read_temp(const struct motion_sensor_t *s, int *temp)
+{
+ int ret;
+ uint8_t raw[2];
+
+ ret = st_raw_read_n_noinc(s->port, s->i2c_spi_addr_flags,
+ LSM6DSM_OUT_TEMP_L_ADDR, raw, 2);
+ if (ret != EC_SUCCESS)
+ return ret;
+
+ *temp = C_TO_K(25 + (int)raw[1]);
+
+ return EC_SUCCESS;
+}
+
const struct accelgyro_drv lsm6dsm_drv = {
.init = init,
.read = read,
@@ -844,6 +859,7 @@ const struct accelgyro_drv lsm6dsm_drv = {
.get_resolution = st_get_resolution,
.set_data_rate = lsm6dsm_set_data_rate,
.get_data_rate = st_get_data_rate,
+ .read_temp = read_temp,
.set_offset = st_set_offset,
.get_offset = st_get_offset,
#ifdef CONFIG_ACCEL_INTERRUPTS
diff --git a/driver/accelgyro_lsm6dsm.h b/driver/accelgyro_lsm6dsm.h
index f63f6af4a0..7be2219be0 100644
--- a/driver/accelgyro_lsm6dsm.h
+++ b/driver/accelgyro_lsm6dsm.h
@@ -109,6 +109,8 @@
#define LSM6DSM_STATUS_REG 0x1e
+#define LSM6DSM_OUT_TEMP_L_ADDR 0x20
+
#define LSM6DSM_GYRO_OUT_X_L_ADDR 0x22
#define LSM6DSM_ACCEL_OUT_X_L_ADDR 0x28