# Kconfig - Bosch BMI160 inertial measurement configuration options

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

menuconfig BMI160
	bool "Bosch BMI160 inertial measurement unit"
	depends on SPI
	depends on SPI_LEGACY_API
	default n
	help
	Enable Bosch BMI160 inertial measurement unit that provides acceleration
	and angular rate measurements.

config BMI160_NAME
	string "Driver's name"
	depends on BMI160
	default "BMI160"

config BMI160_SPI_PORT_NAME
	string "SPI master controller port name"
	depends on BMI160
	default ""
	help
	  Master SPI port name through which BMI160 chip is accessed.

config BMI160_SLAVE
	hex "BMI160 SPI slave select pin"
	depends on BMI160
	default 0
	help
	  BMI160 chip select pin.

config BMI160_SPI_BUS_FREQ
	int "BMI160 SPI bus speed in Hz"
	default 640000
	depends on BMI160
	help
	  This is the maximum supported SPI bus frequency. The chip supports a
	  frequency up to 10MHz.

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

config BMI160_TRIGGER_NONE
	bool
	prompt "No trigger"

config BMI160_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	select BMI160_TRIGGER

config BMI160_TRIGGER_OWN_THREAD
	bool "Use own thread"
	select BMI160_TRIGGER
endchoice

config BMI160_TRIGGER
	bool
	depends on BMI160

config BMI160_THREAD_PRIORITY
	int "Own thread priority"
	depends on BMI160 && BMI160_TRIGGER_OWN_THREAD
	default 10
	help
	  The priority of the thread used for handling interrupts.

config BMI160_THREAD_STACK_SIZE
	int "Own thread stack size"
	depends on BMI160 && BMI160_TRIGGER_OWN_THREAD
	default 1024
	help
	  The thread stack size.

config BMI160_GPIO_DEV_NAME
	string "Gpio device"
	default "GPIO_1"
	depends on BMI160 && BMI160_TRIGGER
	help
	  The name of the GPIO device to which the BMI160 interrupt pin is
	  connected.

config BMI160_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 4
	depends on BMI160 && BMI160_TRIGGER
	help
	  The number of the GPIO pin which is connected to BMI160 interrupt pin.

choice
	prompt "Accelerometer power mode"
	depends on BMI160
	default BMI160_ACCEL_PMU_RUNTIME

config BMI160_ACCEL_PMU_RUNTIME
	bool "Set at runtime."
	depends on BMI160

config BMI160_ACCEL_PMU_SUSPEND
	bool "suspended/not used"
	depends on BMI160

config BMI160_ACCEL_PMU_NORMAL
	bool "normal"
	depends on BMI160

config BMI160_ACCEL_PMU_LOW_POWER
	bool "low power"
	depends on BMI160
endchoice

choice
	prompt "Accelerometer range setting"
	depends on BMI160 && (BMI160_ACCEL_PMU_RUNTIME || BMI160_ACCEL_PMU_NORMAL || BMI160_ACCEL_PMU_LOW_POWER)
	default BMI160_ACCEL_RANGE_RUNTIME

config BMI160_ACCEL_RANGE_RUNTIME
	bool "Set at runtime."

config BMI160_ACCEL_RANGE_2G
	bool "2G"

config BMI160_ACCEL_RANGE_4G
	bool "4G"

config BMI160_ACCEL_RANGE_8G
	bool "8G"

config BMI160_ACCEL_RANGE_16G
	bool "16G"
endchoice

choice
	prompt "Accelerometer sampling frequency."
	depends on BMI160 && (BMI160_ACCEL_PMU_RUNTIME || BMI160_ACCEL_PMU_NORMAL || BMI160_ACCEL_PMU_LOW_POWER)
	default BMI160_ACCEL_ODR_RUNTIME

config BMI160_ACCEL_ODR_RUNTIME
	bool "Set at runtime."

config BMI160_ACCEL_ODR_25_32
	depends on BMI160_ACCEL_PMU_LOW_POWER
	bool "0.78 Hz"

config BMI160_ACCEL_ODR_25_16
	depends on BMI160_ACCEL_PMU_LOW_POWER
	bool "1.56 Hz"

config BMI160_ACCEL_ODR_25_8
	depends on BMI160_ACCEL_PMU_LOW_POWER
	bool "3.125 Hz"

config BMI160_ACCEL_ODR_25_4
	depends on BMI160_ACCEL_PMU_LOW_POWER
	bool "6.25 Hz"

config BMI160_ACCEL_ODR_25_2
	bool "12.5 Hz"

config BMI160_ACCEL_ODR_25
	bool "25 Hz"

config BMI160_ACCEL_ODR_50
	bool "50 Hz"

config BMI160_ACCEL_ODR_100
	bool "100 Hz"

config BMI160_ACCEL_ODR_200
	bool "200 Hz"

config BMI160_ACCEL_ODR_400
	bool "400 Hz"

config BMI160_ACCEL_ODR_800
	bool "800 Hz"

config BMI160_ACCEL_ODR_1600
	bool "1600 Hz"
endchoice

choice
	prompt "Gyroscope power mode"
	depends on BMI160
	default BMI160_GYRO_PMU_RUNTIME

config BMI160_GYRO_PMU_RUNTIME
	bool "Set at runtime."
	depends on BMI160

config BMI160_GYRO_PMU_SUSPEND
	bool "suspended/not used"
	depends on BMI160

config BMI160_GYRO_PMU_NORMAL
	bool "normal"
	depends on BMI160

config BMI160_GYRO_PMU_FAST_STARTUP
	bool "fast start-up"
	depends on BMI160
endchoice

choice
	prompt "Gyroscope range setting."
	depends on BMI160 && (BMI160_GYRO_PMU_RUNTIME || BMI160_GYRO_PMU_NORMAL || BMI160_GYRO_PMU_FAST_STARTUP)
	default BMI160_GYRO_RANGE_RUNTIME

config BMI160_GYRO_RANGE_RUNTIME
	bool "Set at runtime."

config BMI160_GYRO_RANGE_2000DPS
	bool "2000 DPS"

config BMI160_GYRO_RANGE_1000DPS
	bool "1000 DPS"

config BMI160_GYRO_RANGE_500DPS
	bool "500 DPS"

config BMI160_GYRO_RANGE_250DPS
	bool "250 DPS"

config BMI160_GYRO_RANGE_125DPS
	bool "125 DPS"
endchoice

choice
	prompt "Gyroscope sampling frequency."
	depends on BMI160 && (BMI160_GYRO_PMU_RUNTIME || BMI160_GYRO_PMU_NORMAL || BMI160_GYRO_PMU_FAST_STARTUP)
	default BMI160_GYRO_ODR_RUNTIME

config BMI160_GYRO_ODR_RUNTIME
	bool "Set at runtime."

config BMI160_GYRO_ODR_25
	bool "25 Hz"

config BMI160_GYRO_ODR_50
	bool "50 Hz"

config BMI160_GYRO_ODR_100
	bool "100 Hz"

config BMI160_GYRO_ODR_200
	bool "200 Hz"

config BMI160_GYRO_ODR_400
	bool "400 Hz"

config BMI160_GYRO_ODR_800
	bool "800 Hz"

config BMI160_GYRO_ODR_1600
	bool "1600 Hz"

config BMI160_GYRO_ODR_3200
	bool "3200 Hz"
endchoice
