# ST Microelectronics LSM6DSV16X 6-axis IMU sensor driver

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

menuconfig LSM6DSV16X
	bool "LSM6DSV16X I2C/SPI accelerometer and gyroscope Chip"
	default y
	depends on DT_HAS_ST_LSM6DSV16X_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_ST_LSM6DSV16X),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_ST_LSM6DSV16X),spi)
	select HAS_STMEMSC
	select USE_STDC_LSM6DSV16X
	help
	  Enable driver for LSM6DSV16X accelerometer and gyroscope
	  sensor.

if LSM6DSV16X

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

config LSM6DSV16X_TRIGGER_NONE
	bool "No trigger"

config LSM6DSV16X_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LSM6DSV16X_TRIGGER

config LSM6DSV16X_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LSM6DSV16X_TRIGGER

endchoice

config LSM6DSV16X_TRIGGER
	bool

if LSM6DSV16X_TRIGGER

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

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

endif # LSM6DSV16X_TRIGGER

config LSM6DSV16X_ENABLE_TEMP
	bool "Temperature"
	help
	  Enable/disable temperature

config LSM6DSV16X_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 LSM6DSV16X_SENSORHUB

config LSM6DSV16X_EXT_LIS2MDL
	bool "LIS2MDL as external sensor"
	default y

config LSM6DSV16X_EXT_LPS22HH
	bool "LPS22HH as external sensor"

config LSM6DSV16X_EXT_HTS221
	bool "HTS221 as external sensor"

config LSM6DSV16X_EXT_LPS22HB
	bool "LPS22HB as external sensor"

config LSM6DSV16X_EXT_LPS22DF
	bool "LPS22DF as external sensor"
	default y

endif # LSM6DSV16X_SENSORHUB

endif # LSM6DSV16X
