# ST Microelectronics LIS2DS12 3-axis accelerometer driver

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

menuconfig LIS2DS12
	bool "LIS2DS12 I2C/SPI accelerometer sensor driver"
	depends on (I2C && HAS_DTS_I2C) || SPI
	help
	  Enable driver for LIS2DS12 accelerometer sensor driver

if LIS2DS12

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

config LIS2DS12_TRIGGER_NONE
	bool "No trigger"

config LIS2DS12_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS2DS12_TRIGGER

config LIS2DS12_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS2DS12_TRIGGER

endchoice

config LIS2DS12_TRIGGER
	bool

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

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

config LIS2DS12_ENABLE_TEMP
	bool "Enable temperature"
	help
	  Enable/disable temperature

menu "Attributes"

config LIS2DS12_FS
	int "Accelerometer full-scale range"
	default 0
	help
	  Specify the default accelerometer full-scale range.
	  An X value for the config represents a range of +/- X G. Valid values
	  are:
	  0:  Full Scale selected at runtime
	  2:  +/- 2g
	  4:  +/- 4g
	  8:  +/- 8g
	  16: +/- 16g

config LIS2DS12_ODR
	int "Accelerometer Output data rate frequency"
	range 0 10
	default 0
	help
	  Specify the default accelerometer output data rate expressed in
	  samples per second (Hz).
	  0: ODR selected at runtime
	  1: 12.5Hz
	  2: 25Hz
	  3: 50Hz
	  4: 100Hz
	  5: 200Hz
	  6: 400Hz
	  7: 800Hz
endmenu

endif # LIS2DS12
