# 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"
	depends on I2C || 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.


endif # LIS2DW12
