# Kconfig - LIS3DH Three Axis Accelerometer configuration options

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

menuconfig LIS3DH
	bool "LIS3DH Three Axis Accelerometer"
	depends on I2C
	help
	  Enable driver for LIS3DH I2C-based triaxial accelerometer sensor.

config LIS3DH_NAME
	string "Driver name"
	default "LIS3DH"
	depends on LIS3DH
	help
	  Device name with which the LIS3DH sensor is identified.

config LIS3DH_I2C_ADDR
	hex "LIS3DH I2C address"
	depends on LIS3DH
	default 0x18
	help
	  I2C address of the LIS3DH sensor.

	  0x18: Choose this option if the SDO pin is pulled to GND.
	  0x19: Choose this option if the SDO pin is pulled to VDDIO.

config LIS3DH_I2C_MASTER_DEV_NAME
	string "I2C master where LIS3DH is connected"
	depends on LIS3DH
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which LIS3DH is
	  connected.

choice
	prompt "Trigger mode"
	depends on LIS3DH
	default LIS3DH_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver.

config LIS3DH_TRIGGER_NONE
	bool "No trigger"

config LIS3DH_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS3DH_TRIGGER

config LIS3DH_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS3DH_TRIGGER

endchoice

config LIS3DH_TRIGGER
	bool
	depends on LIS3DH

config LIS3DH_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on LIS3DH && LIS3DH_TRIGGER
	help
	  The device name of the GPIO device to which the LIS3DH interrupt pins
	  are connected.

config LIS3DH_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 0
	depends on LIS3DH && LIS3DH_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the LIS3DH
	  chip will be received.

config LIS3DH_THREAD_PRIORITY
	int "Thread priority"
	depends on LIS3DH && LIS3DH_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config LIS3DH_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on LIS3DH && LIS3DH_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

choice
	prompt "Acceleration measurement range"
	depends on LIS3DH
	default LIS3DH_ACCEL_RANGE_2G
	help
	  Measurement full scale range for acceleration values.

config LIS3DH_ACCEL_RANGE_2G
	bool "+/-2g"

config LIS3DH_ACCEL_RANGE_4G
	bool "+/-4g"

config LIS3DH_ACCEL_RANGE_8G
	bool "+/-8g"

config LIS3DH_ACCEL_RANGE_16G
	bool "+/-16g"

endchoice

choice
	prompt "Power mode"
	depends on LIS3DH
	default LIS3DH_POWER_MODE_NORMAL
	help
	  Choose between normal or low power operation mode for chip.

config LIS3DH_POWER_MODE_NORMAL
	bool "normal"

config LIS3DH_POWER_MODE_LOW
	bool "low"

endchoice

choice
	prompt "Data rate frequency"
	depends on LIS3DH
	default LIS3DH_ODR_1
	help
	  Data rate frequency of acceleration data.

config LIS3DH_ODR_1
	bool "1Hz"

config LIS3DH_ODR_2
	bool "10Hz"

config LIS3DH_ODR_3
	bool "25Hz"

config LIS3DH_ODR_4
	bool "50Hz"

config LIS3DH_ODR_5
	bool "100Hz"

config LIS3DH_ODR_6
	bool "200Hz"

config LIS3DH_ODR_7
	bool "400Hz"

config LIS3DH_ODR_8
	bool "1.6KHz"
	depends on LIS3DH_POWER_MODE_LOW

config LIS3DH_ODR_9_NORMAL
	bool "1.25KHz"
	depends on LIS3DH_POWER_MODE_NORMAL

config LIS3DH_ODR_9_LOW
	bool "5KHz"
	depends on LIS3DH_POWER_MODE_LOW

endchoice
