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

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

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

config LIS3MDL_I2C_ADDR
	hex
	prompt "I2C address"
	depends on LIS3MDL && !HAS_DTS_I2C_DEVICE
	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
	prompt "I2C master where LIS3MDL is connected"
	depends on LIS3MDL && !HAS_DTS_I2C_DEVICE
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which LIS3MDL is
	  connected.

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

config LIS3MDL_TRIGGER_NONE
	bool
	prompt "No trigger"

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

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

endchoice

config LIS3MDL_TRIGGER
	bool
	depends on LIS3MDL

config LIS3MDL_GPIO_DEV_NAME
	string
	prompt "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
	prompt "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
	prompt "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
	prompt "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
	prompt "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
	prompt "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.
