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

menuconfig LIS2MDL
	bool "LIS2MDL Magnetometer"
	default y
	depends on DT_HAS_ST_LIS2MDL_ENABLED
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_LIS2MDL
	help
	  Enable driver for LIS2MDL I2C-based magnetometer sensor.

if LIS2MDL

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

config LIS2MDL_TRIGGER_NONE
	bool "No trigger"

config LIS2MDL_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS2MDL_TRIGGER

config LIS2MDL_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS2MDL_TRIGGER

endchoice # LIS2MDL_TRIGGER_MODE

config LIS2MDL_TRIGGER
	bool

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

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

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

endif # LIS2MDL
