# LSM9DS0 accelerometer, magnetometer and temperature configuration options

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

menuconfig LSM9DS0_MFD
	bool "LSM9DS0 I2C accelerometer, magnetometer and temperature sensor chip"
	depends on I2C
	help
	  Enable driver for LSM9DS0 I2C-based MFD sensor.

if LSM9DS0_MFD

config LSM9DS0_MFD_ACCEL_ENABLE
	bool "Enable accelerometer"
	default y
	help
	  Enable/disable accelerometer totally by stripping everything related
	  in driver.

config LSM9DS0_MFD_MAGN_ENABLE
	bool "Enable magnetometer"
	default y
	help
	  Enable/disable magnetometer totally by stripping everything related in
	  driver.

config LSM9DS0_MFD_TEMP_ENABLE
	bool "Enable temperature sensor"
	help
	  Enable/disable temperature sensor totally by stripping everything
	  related in driver.

menu "Attributes"

choice
	prompt "Accelerometer sampling rate"
	default LSM9DS0_MFD_ACCEL_SAMPLING_RATE_25
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	help
	  Specify the default sampling rate frequency for accelerometer.

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_0
	bool "0 Hz (power down)"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_3_125
	bool "3.125 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_6_25
	bool "6.25 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_12_5
	bool "12.5 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_25
	bool "25 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_50
	bool "50 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_100
	bool "100 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_200
	bool "200 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_400
	bool "400 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_800
	bool "800 Hz"

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_1600
	bool "1600 Hz"

endchoice

config LSM9DS0_MFD_ACCEL_SAMPLING_RATE_RUNTIME
	bool "Enable dynamic sampling rate for accelerometer"
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	help
	  Enable alteration of accelerometer sampling rate attribute at
	  runtime.

choice
	prompt "Accelerometer full-scale"
	default LSM9DS0_MFD_ACCEL_FULL_SCALE_2
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	help
	  Specify the default full-scale for accelerometer.

config LSM9DS0_MFD_ACCEL_FULL_SCALE_2
	bool "2G"

config LSM9DS0_MFD_ACCEL_FULL_SCALE_4
	bool "4G"

config LSM9DS0_MFD_ACCEL_FULL_SCALE_6
	bool "6G"

config LSM9DS0_MFD_ACCEL_FULL_SCALE_8
	bool "8G"

config LSM9DS0_MFD_ACCEL_FULL_SCALE_16
	bool "16G"

endchoice

config LSM9DS0_MFD_ACCEL_FULL_SCALE_RUNTIME
	bool "Enable dynamic full-scale for accelerometer"
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	help
	  Enable alteration of accelerometer full-scale attribute at
	  runtime.

config LSM9DS0_MFD_ACCEL_ENABLE_X
	bool "Enable accelerometer X axis"
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	default y

config LSM9DS0_MFD_ACCEL_ENABLE_Y
	bool "Enable accelerometer Y axis"
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	default y

config LSM9DS0_MFD_ACCEL_ENABLE_Z
	bool "Enable accelerometer Z axis"
	depends on LSM9DS0_MFD_ACCEL_ENABLE
	default y

choice
	prompt "Magnetometer sampling rate"
	default LSM9DS0_MFD_MAGN_SAMPLING_RATE_25
	depends on LSM9DS0_MFD_MAGN_ENABLE
	help
	  Specify the default sampling rate frequency for magnetometer.

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_3_125
	bool "3.125 Hz"

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_6_25
	bool "6.25 Hz"

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_12_5
	bool "12.5 Hz"

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_25
	bool "25 Hz"

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_50
	bool "50 Hz"

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_100
	bool "100 Hz"

endchoice

config LSM9DS0_MFD_MAGN_SAMPLING_RATE_RUNTIME
	bool "Enable dynamic sampling rate for magnetometer"
	depends on LSM9DS0_MFD_MAGN_ENABLE
	help
	  Enable alteration of magnetometer sampling rate attribute at
	  runtime.

choice
	prompt "Magnetometer full-scale"
	default LSM9DS0_MFD_MAGN_FULL_SCALE_2
	depends on LSM9DS0_MFD_MAGN_ENABLE
	help
	  Specify the default full-scale for magnetometer.

config LSM9DS0_MFD_MAGN_FULL_SCALE_2
	bool "2 Gauss"

config LSM9DS0_MFD_MAGN_FULL_SCALE_4
	bool "4 Gauss"

config LSM9DS0_MFD_MAGN_FULL_SCALE_8
	bool "8 Gauss"

config LSM9DS0_MFD_MAGN_FULL_SCALE_12
	bool "12 Gauss"

endchoice

config LSM9DS0_MFD_MAGN_FULL_SCALE_RUNTIME
	bool "Enable dynamic full-scale for magnetometer"
	depends on LSM9DS0_MFD_MAGN_ENABLE
	help
	  Enable alteration of magnetometer full-scale attribute at
	  runtime.

endmenu

endif # LSM9DS0_MFD
