# Kconfig - Bosch BMG160 gyroscope configuration options

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

menuconfig BMG160
	bool "Bosch BMG160 gyroscope support"
	depends on I2C
	default n
	help
	  Enable Bosch BMG160 gyroscope support.

config BMG160_DRV_NAME
	string "Driver's name"
	depends on BMG160
	default "bmg160"
	help
	  Name for the BMG160 driver which will be used for binding.

config BMG160_I2C_PORT_NAME
	string "I2C master controller port name"
	depends on BMG160
	default "I2C_0"
	help
	  Master I2C port name through which BMG160 chip is accessed.

config BMG160_I2C_ADDR
	hex "BMG160 I2C address"
	depends on BMG160
	default 0x68
	help
	  BMG160 chip's I2C address. Chip supports two addresses: 0x68 and 0x69 (if
	  SDO pin is pulled to GND).

choice
	prompt "BMG160 I2C bus speed"
	default BMG160_I2C_SPEED_STANDARD
	depends on BMG160

config BMG160_I2C_SPEED_STANDARD
	bool "Standard"
	help
	  Standard bus speed of up to 100kHz.

config BMG160_I2C_SPEED_FAST
	bool "Fast"
	help
	  Fast bus speed of up to 400KHz.
endchoice

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

config BMG160_TRIGGER_NONE
	bool
	prompt "No trigger"

config BMG160_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select BMG160_TRIGGER

config BMG160_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select BMG160_TRIGGER
endchoice

config BMG160_TRIGGER
	bool
	depends on BMG160

config BMG160_THREAD_PRIORITY
	int "Own thread priority"
	depends on BMG160 && BMG160_TRIGGER_OWN_THREAD
	default 10
	help
	  The priority of the thread used for handling interrupts.

config BMG160_THREAD_STACK_SIZE
	int "Own thread stack size"
	depends on BMG160 && BMG160_TRIGGER_OWN_THREAD
	default 1024
	help
	  The thread stack size.

config BMG160_GPIO_PORT_NAME
	string "GPIO controller port name"
	depends on BMG160 && BMG160_TRIGGER
	default "GPIO_0"
	help
	  The gpio controller the interrupt pin is attached to.

config BMG160_INT_PIN
	hex "BMG160 INT PIN"
	depends on BMG160 && BMG160_TRIGGER
	default 2
	help
	  BMG160 interrupt pin.

choice
	prompt "Gyroscope range setting."
	depends on BMG160
	default BMG160_RANGE_RUNTIME

config BMG160_RANGE_RUNTIME
	bool "Set at runtime."

config BMG160_RANGE_2000DPS
	bool "2000 DPS"

config BMG160_RANGE_1000DPS
	bool "1000 DPS"

config BMG160_RANGE_500DPS
	bool "500 DPS"

config BMG160_RANGE_250DPS
	bool "250 DPS"

config BMG160_RANGE_125DPS
	bool "125 DPS"
endchoice

choice
	prompt "Gyroscope sampling frequency."
	depends on BMG160
	default BMG160_ODR_RUNTIME

config BMG160_ODR_RUNTIME
	bool "Set at runtime."

config BMG160_ODR_100
	bool "100 Hz"

config BMG160_ODR_200
	bool "200 Hz"

config BMG160_ODR_400
	bool "400 Hz"

config BMG160_ODR_1000
	bool "1000 Hz"

config BMG160_ODR_2000
	bool "2000 Hz"
endchoice
