# ST Microelectronics IIS2DH 3-axis accelerometer driver

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

menuconfig IIS2DH
	bool "IIS2DH I2C/SPI accelerometer sensor driver"
	default y
	depends on DT_HAS_ST_IIS2DH_ENABLED
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_IIS2DH
	help
	  Enable driver for IIS2DH accelerometer sensor driver

if IIS2DH

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

config IIS2DH_TRIGGER_NONE
	bool "No trigger"

config IIS2DH_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select IIS2DH_TRIGGER

config IIS2DH_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select IIS2DH_TRIGGER

endchoice

config IIS2DH_TRIGGER
	bool

if IIS2DH_TRIGGER

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

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

endif # IIS2DH_TRIGGER

config IIS2DH_RANGE
	int "Accelerometer Full-scale range setting"
	default 0
	help
	  Specify the default accelerometer full-scale range.
	  Valid values are:
	  0:  Full Scale selected at runtime
	  2:  +/- 2g
	  4:  +/- 4g
	  8:  +/- 8g
	  16: +/- 16g

config IIS2DH_ODR
	int "Accelerometer sampling frequency (ODR)"
	range 0 9
	default 0
	help
	  Specify the default accelerometer output data rate expressed in
	  samples per second (Hz).
	  0: ODR selected at runtime
	  1: 1 Hz
	  2: 10 Hz
	  3: 25 Hz
	  4: 50 Hz
	  5: 100 Hz
	  6: 200 Hz
	  7: 400 Hz
	  8: 1620 Hz (only LP)
	  9: Depends by mode. LP: 5376 Hz - NORM or HR: 1344 Hz

config IIS2DH_POWER_MODE
	int "Sensor Power Modes"
	range 0 2
	default 0
	help
	  Specify the sensor power mode
	  0: High Resolution mode
	  1: Normal mode
	  2: Low Power mode

endif # IIS2DH
