# Kconfig - LSM9DS0 gyroscope sensor configuration options

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

menuconfig LSM9DS0_GYRO
	bool "LSM9DS0 I2C gyroscope Chip"
	depends on I2C
	help
	  Enable driver for LSM9DS0 I2C-based gyroscope sensor.

config LSM9DS0_GYRO_DEV_NAME
	string "LSM9DS0_GYRO device name"
	depends on LSM9DS0_GYRO
	default "lsm9ds0_gyro"

config LSM9DS0_GYRO_I2C_ADDR
	hex "LSM9DS0_GYRO I2C slave address"
	default 0x6A
	depends on LSM9DS0_GYRO
	help
	  Specify the I2C slave address for the LSM9DS0_GYRO.

	  0x6A: GND
	  0x6B: VCC

config LSM9DS0_GYRO_I2C_MASTER_DEV_NAME
	string "I2C master where LSM9DS0 gyroscope is connected"
	depends on LSM9DS0_GYRO
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which LSM9DS0_GYRO
	  is connected.

menu "Attributes"
	depends on LSM9DS0_GYRO

choice
	prompt "Default full-scale"
	default LSM9DS0_GYRO_FULLSCALE_245
	depends on LSM9DS0_GYRO
	help
	  Specify the default full-scale.

config LSM9DS0_GYRO_FULLSCALE_245
	bool "245 DPS"

config LSM9DS0_GYRO_FULLSCALE_500
	bool "500 DPS"

config LSM9DS0_GYRO_FULLSCALE_2000
	bool "2000 DPS"

endchoice

config LSM9DS0_GYRO_FULLSCALE_RUNTIME
	bool "Enable dynamic full-scale"
	depends on LSM9DS0_GYRO
	help
	  Enable alteration of full-scale attribute at runtime.

choice
	prompt "Default sampling rate frequency"
	default LSM9DS0_GYRO_SAMPLING_RATE_95
	depends on LSM9DS0_GYRO
	help
	  Specify the default sampling rate frequency.

config LSM9DS0_GYRO_SAMPLING_RATE_95
	bool "95 Hz"

config LSM9DS0_GYRO_SAMPLING_RATE_190
	bool "190 Hz"

config LSM9DS0_GYRO_SAMPLING_RATE_380
	bool "380 Hz"

config LSM9DS0_GYRO_SAMPLING_RATE_760
	bool "760 Hz"

endchoice

config LSM9DS0_GYRO_SAMPLING_RATE_RUNTIME
	bool "Enable dynamic sampling rate"
	depends on LSM9DS0_GYRO
	help
	  Enable alteration of sampling rate frequency at runtime.

endmenu

config LSM9DS0_GYRO_TRIGGERS
	bool "Enable triggers"
	depends on LSM9DS0_GYRO && GPIO

config LSM9DS0_GYRO_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on LSM9DS0_GYRO_TRIGGERS
	default 1024
	help
	  Specify the internal thread stack size.

config LSM9DS0_GYRO_TRIGGER_DRDY
	bool "Enable data ready trigger"
	depends on LSM9DS0_GYRO_TRIGGERS

config LSM9DS0_GYRO_GPIO_DRDY_DEV_NAME
	string "GPIO device where LSM9DS0_GYRO data ready interrupt is connected"
	depends on LSM9DS0_GYRO_TRIGGER_DRDY
	default "GPIO_0"
	help
	  Specify the device name of the GPIO controller the BMC150_MAGN interrupt
	  is connected to.

config LSM9DS0_GYRO_GPIO_DRDY_INT_PIN
	int "GPIO pin number for the data ready interrupt pin"
	default 3
	depends on LSM9DS0_GYRO_TRIGGER_DRDY
