# LIS2DH Three Axis Accelerometer configuration options

# Copyright (c) 2017 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig LIS2DH
	bool "LIS2DH Three Axis Accelerometer"
	depends on I2C || SPI
	help
	  Enable SPI/I2C-based driver for LIS2DH, LIS3DH, LSM303DLHC,
	  LIS2DH12, LSM303AGR triaxial accelerometer sensors.

if LIS2DH

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

config LIS2DH_TRIGGER_NONE
	bool "No trigger"

config LIS2DH_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS2DH_TRIGGER

config LIS2DH_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS2DH_TRIGGER

endchoice

config LIS2DH_TRIGGER
	bool

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

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

choice
	prompt "Acceleration measurement range"
	default LIS2DH_ACCEL_RANGE_RUNTIME
	help
	  Initial measurement full scale range for acceleration values.

config LIS2DH_ACCEL_RANGE_RUNTIME
	bool "Set at runtime"

config LIS2DH_ACCEL_RANGE_2G
	bool "+/-2g"

config LIS2DH_ACCEL_RANGE_4G
	bool "+/-4g"

config LIS2DH_ACCEL_RANGE_8G
	bool "+/-8g"

config LIS2DH_ACCEL_RANGE_16G
	bool "+/-16g"

endchoice

choice
	prompt "Operation mode"
	default LIS2DH_OPER_MODE_NORMAL
	help
	  Choose between high resolution, normal or low power operation
	  mode for chip at init.

config LIS2DH_OPER_MODE_HIGH_RES
	bool "high resolution (12 bit)"

config LIS2DH_OPER_MODE_NORMAL
	bool "normal (10 bit)"

config LIS2DH_OPER_MODE_LOW_POWER
	bool "low power (8 bit)"

endchoice

choice
	prompt "Output data rate frequency"
	default LIS2DH_ODR_RUNTIME
	help
	  Initial data rate frequency of acceleration data at initialization.
	  Supported values:
	  1Hz, 10Hz, 25Hz, 50Hz, 100Hz, 200Hz, 400Hz in all power modes
	  1620Hz, 5376Hz in low power mode only
	  1344Hz in normal power mode

config LIS2DH_ODR_RUNTIME
	bool "Set at runtime"

config LIS2DH_ODR_1
	bool "1Hz"

config LIS2DH_ODR_2
	bool "10Hz"

config LIS2DH_ODR_3
	bool "25Hz"

config LIS2DH_ODR_4
	bool "50Hz"

config LIS2DH_ODR_5
	bool "100Hz"

config LIS2DH_ODR_6
	bool "200Hz"

config LIS2DH_ODR_7
	bool "400Hz"

config LIS2DH_ODR_8
	bool "1.6KHz"
	depends on LIS2DH_OPER_MODE_LOW_POWER

config LIS2DH_ODR_9_NORMAL
	bool "1.25KHz"
	depends on LIS2DH_OPER_MODE_NORMAL || LIS2DH_OPER_MODE_HIGH_RES

config LIS2DH_ODR_9_LOW
	bool "5KHz"
	depends on LIS2DH_OPER_MODE_LOW_POWER

endchoice

endif # LIS2DH
