# ST Microelectronics LIS2DW12 3-axis accelerometer driver

# Copyright (c) 2019 STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

menuconfig LIS2DW12
	bool "LIS2DW12 I2C/SPI accelerometer sensor driver"
	default y
	depends on DT_HAS_ST_LIS2DW12_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_ST_LIS2DW12),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_ST_LIS2DW12),spi)
	select HAS_STMEMSC
	select USE_STDC_LIS2DW12
	help
	  Enable driver for LIS2DW12 accelerometer sensor driver

if LIS2DW12

choice LIS2DW12_TRIGGER_MODE
	prompt "Trigger mode"
	help
	  Specify the type of triggering to be used by the driver.

config LIS2DW12_TRIGGER_NONE
	bool "No trigger"

config LIS2DW12_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS2DW12_TRIGGER

config LIS2DW12_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS2DW12_TRIGGER

endchoice

config LIS2DW12_TRIGGER
	bool

if LIS2DW12_TRIGGER

config LIS2DW12_THREAD_PRIORITY
	int "Thread priority"
	depends on LIS2DW12_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config LIS2DW12_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on LIS2DW12_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

config LIS2DW12_TAP
	bool "Tap and Tap-Tap detection"
	help
	  Enable tap (single/double) detection

endif # LIS2DW12_TRIGGER

config LIS2DW12_THRESHOLD
	bool "Wakeup threshold trigger (via interrupt)"
	help
	  Enable the wakeup threshold trigger feature.
	  The wake-up interrupt signal is generated if a certain number of
	  consecutive data exceed the configured threshold (config in DT).
	  The threshold is applied to both positive and negative data: for
	  a wake-up interrupt generation at least one of the three axes must
	  be bigger than the threshold. See ST AN5038 for more details about
	  the feature.

config LIS2DW12_FREEFALL
	bool "Free Fall detection (via interrupt)"
	help
	  Enable freefall detection via interrupt.
endif # LIS2DW12
