# ST Microelectronics ISM330DHCX 6-axis IMU sensor driver

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

menuconfig ISM330DHCX
	bool "ISM330DHCX I2C/SPI accelerometer and gyroscope Chip"
	default y
	depends on DT_HAS_ST_ISM330DHCX_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_ST_ISM330DHCX),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_ST_ISM330DHCX),spi)
	select HAS_STMEMSC
	select USE_STDC_ISM330DHCX
	help
	  Enable driver for ISM330DHCX accelerometer and gyroscope
	  sensor.

if ISM330DHCX

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

config ISM330DHCX_TRIGGER_NONE
	bool "No trigger"

config ISM330DHCX_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select ISM330DHCX_TRIGGER

config ISM330DHCX_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select ISM330DHCX_TRIGGER

endchoice

config ISM330DHCX_TRIGGER
	bool

if ISM330DHCX_TRIGGER

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

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

endif # ISM330DHCX_TRIGGER

config ISM330DHCX_ENABLE_TEMP
	bool "Temperature"
	help
	  Enable/disable temperature

config ISM330DHCX_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 ISM330DHCX_SENSORHUB

config ISM330DHCX_EXT_LIS2MDL
	bool "LIS2MDL as external sensor"

config ISM330DHCX_EXT_IIS2MDC
	bool "IIS2MDC as external sensor"

config ISM330DHCX_EXT_LPS22HH
	bool "LPS22HH as external sensor"

config ISM330DHCX_EXT_HTS221
	bool "HTS221 as external sensor"

config ISM330DHCX_EXT_LPS22HB
	bool "LPS22HB as external sensor"

endif # ISM330DHCX_SENSORHUB

endif # ISM330DHCX
