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

menuconfig IIS2MDC
	bool "IIS2MDC Magnetometer"
	depends on (I2C && HAS_DTS_I2C) || SPI
	select HAS_STMEMSC
	select USE_STDC_IIS2MDC
	help
	  Enable driver for IIS2MDC I2C-based magnetometer sensor.

if IIS2MDC

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

config IIS2MDC_TRIGGER_NONE
	bool "No trigger"

config IIS2MDC_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select IIS2MDC_TRIGGER

config IIS2MDC_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select IIS2MDC_TRIGGER

endchoice # IIS2MDC_TRIGGER_MODE

config IIS2MDC_TRIGGER
	bool

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

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

config IIS2MDC_MAG_ODR_RUNTIME
	bool "Set magnetometer sampling frequency (ODR) at runtime (default: 10 Hz)"
	default y

config IIS2MDC_SPI_FULL_DUPLEX
	bool "Enable SPI 4wire mode (separated MISO and MOSI lines)"
	depends on SPI

endif # IIS2MDC
