# ST Microelectronics LSM6DSO 6-axis IMU sensor driver

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

menuconfig LSM6DSO
	bool "LSM6DSO I2C/SPI accelerometer and gyroscope Chip"
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_LSM6DSO
	help
	  Enable driver for LSM6DSO accelerometer and gyroscope
	  sensor.

if LSM6DSO

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

config LSM6DSO_TRIGGER_NONE
	bool "No trigger"

config LSM6DSO_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LSM6DSO_TRIGGER

config LSM6DSO_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LSM6DSO_TRIGGER

endchoice

config LSM6DSO_TRIGGER
	bool

if LSM6DSO_TRIGGER

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

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

endif # LSM6DSO_TRIGGER

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

config LSM6DSO_SENSORHUB
	bool "Enable I2C sensorhub feature"
	help
	  Enable/disable internal sensorhub. You can enable
	  a maximum of two external sensors (if more than two are enabled
	  the system would enumerate only the first two found)

if LSM6DSO_SENSORHUB

config LSM6DSO_EXT_LIS2MDL
	bool "Enable LIS2MDL as external sensor"
	default y

config LSM6DSO_EXT_LPS22HH
	bool "Enable LPS22HH as external sensor"
	default y

config LSM6DSO_EXT_HTS221
	bool "Enable HTS221 as external sensor"

config LSM6DSO_EXT_LPS22HB
	bool "Enable LPS22HB as external sensor"

endif # LSM6DSO_SENSORHUB

endif # LSM6DSO
