summaryrefslogtreecommitdiff
path: root/driver/accelgyro_icm42607.c
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2021-12-23 17:20:46 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-24 07:30:28 +0000
commit6989ff9053eba44365859249a1376585462734bc (patch)
tree18413edbc0b412ba014b54faf1ba4bf8029c3da0 /driver/accelgyro_icm42607.c
parentf2bef959f0a733b8c7d30e285d10c480ae9fad11 (diff)
downloadchrome-ec-6989ff9053eba44365859249a1376585462734bc.tar.gz
zephyr: add ICM42607 sensor
Implement the dts binding and driver for ICM42607 sensor. BUG=b:211845298 TEST=`accelread 1` on krabby BRANCH=none Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I469b1d5b1f5063691ffd3155040490ef3f43c34e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3354657 Reviewed-by: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'driver/accelgyro_icm42607.c')
-rw-r--r--driver/accelgyro_icm42607.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/driver/accelgyro_icm42607.c b/driver/accelgyro_icm42607.c
index ae831c5918..2a2c68bc17 100644
--- a/driver/accelgyro_icm42607.c
+++ b/driver/accelgyro_icm42607.c
@@ -26,6 +26,27 @@
#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ## args)
#define CPRINTS(format, args...) cprints(CC_ACCEL, format, ## args)
+#if defined(CONFIG_ZEPHYR) && defined(CONFIG_ACCEL_INTERRUPTS)
+
+/* Get the motion sensor ID of the ICM42607 sensor that generates the interrupt.
+ * The interrupt is converted to the event and transferred to motion sense task
+ * that actually handles the interrupt.
+ *
+ * Here we use an alias (icm42607_int) to get the motion sensor ID. This alias
+ * MUST be defined for this driver to work.
+ * aliases {
+ * icm42607-int = &base_accel;
+ * };
+ */
+#if DT_NODE_EXISTS(DT_ALIAS(icm42607_int))
+#define CONFIG_ACCELGYRO_ICM42607_INT_EVENT \
+ TASK_EVENT_MOTION_SENSOR_INTERRUPT(SENSOR_ID(DT_ALIAS(icm42607_int)))
+#else
+#error Missing aliases/icm42607-int in device tree
+#endif
+
+#endif /* defined(CONFIG_ZEPHYR) && defined(CONFIG_ACCEL_INTERRUPTS) */
+
STATIC_IF(CONFIG_ACCEL_FIFO) volatile uint32_t last_interrupt_timestamp;
static int icm_switch_on_mclk(const struct motion_sensor_t *s)