
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig LIS3MDL
	bool "LIS3MDL magnetometer"
	depends on I2C
	help
	  Enable driver for LIS3MDL I2C-based magnetometer.

if !HAS_DTS_I2C_DEVICE

config LIS3MDL_NAME
	string "Driver name"
	default "LIS3MDL"
	depends on LIS3MDL
	help
	  Device name with which the LIS3MDL sensor is identified.

config LIS3MDL_I2C_ADDR
	hex "I2C address"
	depends on LIS3MDL
	default 0x1C
	help
	  I2C address of the LIS3MDL sensor.
	  Use 0x1C if the SA1 pin is pulled to GND or 0x1E if the SA1 pin
	  is pulled to VDD.

config LIS3MDL_I2C_MASTER_DEV_NAME
	string "I2C master where LIS3MDL is connected"
	depends on LIS3MDL
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which LIS3MDL is
	  connected.

endif

choice LIS3MDL_TRIGGER_MODE
	prompt "Trigger mode"
	depends on LIS3MDL
	default LIS3MDL_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver.

config LIS3MDL_TRIGGER_NONE
	bool "No trigger"

config LIS3MDL_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LIS3MDL_TRIGGER

config LIS3MDL_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LIS3MDL_TRIGGER

endchoice # LIS3MDL_TRIGGER_MODE

config LIS3MDL_TRIGGER
	bool
	depends on LIS3MDL

config LIS3MDL_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on LIS3MDL && LIS3MDL_TRIGGER
	help
	  The device name of the GPIO device to which the LIS3MDL interrupt pins
	  are connected.

config LIS3MDL_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 0
	depends on LIS3MDL && LIS3MDL_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the LIS3MDL
	  chip will be received.

config LIS3MDL_THREAD_PRIORITY
	int "Thread priority"
	depends on LIS3MDL && LIS3MDL_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config LIS3MDL_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on LIS3MDL && LIS3MDL_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

config LIS3MDL_ODR
	string "Output data rate"
	depends on LIS3MDL
	default "0.625"
	help
	  Magnetometer output data rate expressed in samples per second.
	  Data rates supported by the chip are 0.625, 1.25, 2.5, 5, 10, 20,
	  40, 80, 155, 300, 560 and 1000.

config LIS3MDL_FS
	int "Full-scale range"
	depends on LIS3MDL
	default 4
	help
	  Magnetometer full-scale range.
	  An X value for the config represents a range of +/- X gauss. Valid
	  values are 4, 8, 12 and 16.
