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

menuconfig LIS2MDL
	bool "LIS2MDL Magnetometer"
	depends on (I2C && HAS_DTS_I2C)
	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.

choice
	prompt "Magnetometer sampling frequency (ODR)"
	default LIS2MDL_MAG_ODR_RUNTIME

config LIS2MDL_MAG_ODR_RUNTIME
	bool "Set ODR at runtime (default 10 Hz)"

config LIS2MDL_MAG_ODR_10
	bool "10 Hz"

config LIS2MDL_MAG_ODR_20
	bool "20 Hz"

config LIS2MDL_MAG_ODR_50
	bool "50 Hz"

config LIS2MDL_MAG_ODR_100
	bool "100 Hz"

endchoice

endif # LIS2MDL
