# ST Microelectronics IIS2ICLX 2-axis accelerometer sensor driver

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

menuconfig IIS2ICLX
	bool "IIS2ICLX I2C/SPI accelerometer Chip"
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_IIS2ICLX
	help
	  Enable driver for IIS2ICLX accelerometer
	  sensor.

if IIS2ICLX

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

config IIS2ICLX_TRIGGER_NONE
	bool "No trigger"

config IIS2ICLX_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select IIS2ICLX_TRIGGER

config IIS2ICLX_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select IIS2ICLX_TRIGGER

endchoice

config IIS2ICLX_TRIGGER
	bool

if IIS2ICLX_TRIGGER

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

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

endif # IIS2ICLX_TRIGGER

config IIS2ICLX_ENABLE_TEMP
	bool "Temperature"
	help
	  Enable/disable temperature

config IIS2ICLX_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 IIS2ICLX_SENSORHUB

config IIS2ICLX_EXT_LIS2MDL
	bool "LIS2MDL as external sensor"

config IIS2ICLX_EXT_IIS2MDC
	bool "IIS2MDC as external sensor"

config IIS2ICLX_EXT_LPS22HH
	bool "LPS22HH as external sensor"

config IIS2ICLX_EXT_HTS221
	bool "HTS221 as external sensor"

config IIS2ICLX_EXT_LPS22HB
	bool "LPS22HB as external sensor"

endif # IIS2ICLX_SENSORHUB

endif # IIS2ICLX
