# ST Microelectronics IIS2DLPC 3-axis accelerometer driver

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

menuconfig IIS2DLPC
	bool "IIS2DLPC I2C/SPI accelerometer sensor driver"
	depends on (I2C && HAS_DTS_I2C) || SPI
	select HAS_STMEMSC
	select USE_STDC_IIS2DLPC
	help
	  Enable driver for IIS2DLPC accelerometer sensor driver

if IIS2DLPC

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

config IIS2DLPC_TRIGGER_NONE
	bool "No trigger"

config IIS2DLPC_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select IIS2DLPC_TRIGGER

config IIS2DLPC_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select IIS2DLPC_TRIGGER

endchoice

config IIS2DLPC_TRIGGER
	bool

if IIS2DLPC_TRIGGER

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

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

choice
	prompt "Sensor INT pin number"
	default IIS2DLPC_INT_PIN_1
	help
	  The number of IIS2DLPC int pin used to generate interrupt to cpu.
	  Supported values are int1 or int2

config IIS2DLPC_INT_PIN_1
	bool "int1"

config IIS2DLPC_INT_PIN_2
	bool "int2"
endchoice

menuconfig IIS2DLPC_PULSE
	bool "Pulse detection"
	help
	  Enable pulse (single/double tap) detection

if IIS2DLPC_PULSE

choice
	prompt "Pulse interrupt source"
	default IIS2DLPC_ONLY_SINGLE

config IIS2DLPC_ONLY_SINGLE
	bool "single"

config IIS2DLPC_SINGLE_DOUBLE
	bool "single/double"

endchoice

config IIS2DLPC_PULSE_THSX
	hex "Pulse X-axis threshold"
	range 0 0x1F
	default 0x0E
	help
	  Threshold to start the pulse-event detection procedure on the X-axis.
	  Threshold values for each axis are unsigned 5-bit corresponding
	  to an 2g acceleration full-scale range.

config IIS2DLPC_PULSE_THSY
	hex "Pulse Y-axis threshold"
	range 0 0x1F
	default 0x0E
	help
	  Threshold to start the pulse-event detection procedure on the Y-axis.
	  Threshold values for each axis are unsigned 5-bit corresponding
	  to an 2g acceleration full-scale range.

config IIS2DLPC_PULSE_THSZ
	hex "Pulse Z-axis threshold"
	range 0 0x1F
	default 0x0E
	help
	  Threshold to start the pulse-event detection procedure on the Z-axis.
	  Threshold values for each axis are unsigned 5-bit corresponding
	  to an 2g acceleration full-scale range.

config IIS2DLPC_PULSE_X
	bool "Enable X axis for pulse"
	default y

config IIS2DLPC_PULSE_Y
	bool "Enable Y axis for pulse"
	default y

config IIS2DLPC_PULSE_Z
	bool "Enable Z axis for pulse"
	default y

config IIS2DLPC_PULSE_SHOCK
	hex "Shock value"
	range 0 0x03
	default 0x00
	help
	  Maximum duration of over-threshold event: this register represents
	  the maximum time of an over-threshold signal detection to be
	  recognized as a tap event. Where 0 equals 4*1/ODR and 1LSB = 8*1/ODR.

config IIS2DLPC_PULSE_LTNCY
	hex "Latency value"
	range 0 0x0F
	default 0x05
	help
	  When double-tap recognition is enabled, this register expresses
	  the maximum time between two successive detected taps to
	  determine a double-tap event. Where 0 equals 16*1/ODR and
	  1LSB = 32*1/ODR.

config IIS2DLPC_PULSE_QUIET
	hex "Quiet value"
	range 0 0x03
	default 0x00
	help
	  Expected quiet time after a tap detection: this register represents
	  the time after the first detected tap in which there must not be
	  any overthreshold event. Where 0 equals 2*1/ODR and 1LSB = 4*1/ODR.

endif # IIS2DLPC_PULSE

endif # IIS2DLPC_TRIGGER

choice
	prompt "Accelerometer Full-scale range setting"
	default IIS2DLPC_ACCEL_RANGE_RUNTIME

config IIS2DLPC_ACCEL_RANGE_RUNTIME
	bool "Set at runtime (Default 2G)"

config IIS2DLPC_ACCEL_RANGE_2G
	bool "2G"

config IIS2DLPC_ACCEL_RANGE_4G
	bool "4G"

config IIS2DLPC_ACCEL_RANGE_8G
	bool "8G"

config IIS2DLPC_ACCEL_RANGE_16G
	bool "16G"
endchoice

choice
	prompt "Accelerometer sampling frequency (ODR)"
	default IIS2DLPC_ODR_RUNTIME

config IIS2DLPC_ODR_RUNTIME
	bool "Set at runtime (Default 100 Hz)"

config IIS2DLPC_ODR_1_6
	bool "1.6 Hz"

config IIS2DLPC_ODR_12_5
	bool "12.5 Hz"

config IIS2DLPC_ODR_25
	bool "25 Hz"

config IIS2DLPC_ODR_50
	bool "50 Hz"

config IIS2DLPC_ODR_100
	bool "100 Hz"

config IIS2DLPC_ODR_200
	bool "200 Hz"

config IIS2DLPC_ODR_400
	bool "400 Hz"

config IIS2DLPC_ODR_800
	bool "800 Hz"

config IIS2DLPC_ODR_1600
	bool "1600 Hz"

endchoice

config IIS2DLPC_POWER_MODE
	int "Sensor Power Modes"
	range 0 4
	default 0
	help
	  Specify the sensor power mode
	  0: Low Power M1
	  1: Low Power M2
	  2: Low Power M3
	  3: Low Power M4
	  4: High Performance

endif # IIS2DLPC
