1# ICM42670-P ICM42670-S Six-Axis Motion Tracking device configuration options 2# 3# Copyright (c) 2024 TDK Invensense 4# Copyright (c) 2022 Esco Medical ApS 5# Copyright (c) 2020 TDK Invensense 6# 7# SPDX-License-Identifier: Apache-2.0 8config TDK_APEX 9 bool 10 11menuconfig ICM42X70 12 bool "ICM42670-P/-S Six-Axis or ICM42370-P Three-Axis Motion Tracking Device" 13 default y 14 depends on DT_HAS_INVENSENSE_ICM42670P_ENABLED \ 15 || DT_HAS_INVENSENSE_ICM42670S_ENABLED \ 16 || DT_HAS_INVENSENSE_ICM42370P_ENABLED 17 depends on ZEPHYR_HAL_TDK_MODULE 18 select SPI if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42670P),spi) \ 19 || $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42670S),spi) \ 20 || $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42370P),spi) 21 select I2C if $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42670P),i2c) \ 22 || $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42670S),i2c) \ 23 || $(dt_compat_on_bus,$(DT_COMPAT_INVENSENSE_ICM42370P),i2c) 24 select TDK_APEX if $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670p),apex,pedometer) \ 25 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670p),apex,tilt) \ 26 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670p),apex,smd) \ 27 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670p),apex,wom) \ 28 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670s),apex,pedometer) \ 29 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670s),apex,tilt) \ 30 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670s),apex,smd) \ 31 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42670s),apex,wom) \ 32 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42370p),apex,pedometer) \ 33 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42370p),apex,tilt) \ 34 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42370p),apex,smd) \ 35 || $(dt_node_str_prop_equals,$(dt_nodelabel_path,icm42370p),apex,wom) 36 select USE_EMD_ICM42670 if DT_HAS_INVENSENSE_ICM42670P_ENABLED || DT_HAS_INVENSENSE_ICM42670S_ENABLED 37 select USE_EMD_ICM42370 if DT_HAS_INVENSENSE_ICM42370P_ENABLED 38 select SENSOR_ASYNC_API 39 help 40 Enable driver for ICM42x70 SPI-based or I2C-based Six-Axis or Three-Axis Motion Tracking device. 41 42if ICM42X70 43 44choice ICM42X70_TRIGGER_MODE 45 prompt "Trigger mode" 46 default ICM42X70_TRIGGER_NONE 47 help 48 Specify the type of triggering to be used by the driver. 49 50config ICM42X70_TRIGGER_NONE 51 bool "No trigger" 52 53config ICM42X70_TRIGGER_GLOBAL_THREAD 54 bool "Use global thread" 55 depends on GPIO 56 depends on $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42670P),int-gpios) \ 57 || $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42670S),int-gpios) \ 58 || $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42370P),int-gpios) 59 select ICM42X70_TRIGGER 60 61config ICM42X70_TRIGGER_OWN_THREAD 62 bool "Use own thread" 63 depends on GPIO 64 depends on $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42670P),int-gpios) \ 65 || $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42670S),int-gpios) \ 66 || $(dt_compat_any_has_prop,$(DT_COMPAT_INVENSENSE_ICM42370P),int-gpios) 67 select ICM42X70_TRIGGER 68 69endchoice 70 71config ICM42X70_TRIGGER 72 bool 73 74config ICM42X70_THREAD_PRIORITY 75 int "Thread priority" 76 depends on ICM42X70_TRIGGER_OWN_THREAD 77 default 10 78 help 79 Priority of thread used by the driver to handle interrupts. 80 81config ICM42X70_THREAD_STACK_SIZE 82 int "Thread stack size" 83 depends on ICM42X70_TRIGGER_OWN_THREAD 84 default 1024 85 help 86 Stack size of thread used by the driver to handle interrupts. 87 88endif # ICM42X70 89