# 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"
	default y
	depends on DT_HAS_ST_LSM6DSO_ENABLED
	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 "Temperature"
	help
	  Enable/disable temperature

config LSM6DSO_SENSORHUB
	bool "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 "LIS2MDL as external sensor"
	default y

config LSM6DSO_EXT_LPS22HH
	bool "LPS22HH as external sensor"
	default y

config LSM6DSO_EXT_HTS221
	bool "HTS221 as external sensor"

config LSM6DSO_EXT_LPS22HB
	bool "LPS22HB as external sensor"

endif # LSM6DSO_SENSORHUB

endif # LSM6DSO
