# 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
	depends on I2C || 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
