# Kconfig - BMA280 Three Axis Accelerometer configuration options

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

menuconfig BMA280
	bool "BMA280 Three Axis Accelerometer Family"
	depends on I2C
	help
	  Enable driver for BMA280 I2C-based triaxial accelerometer sensor
	  family.

if BMA280

choice
	prompt "Chip type"
	default BMA280_CHIP_BMA280
	help
	  Choose desired chip type from the BMA280 family.

config BMA280_CHIP_BMA280
	bool "BMA280"
	help
	  Choose this option to enable the BMA280 chip.

config BMA280_CHIP_BMC150_ACCEL
	bool "BMC150_ACCEL"
	help
	  Choose this option to enable the accelerometer of the BMC150 chip.

endchoice

config BMA280_NAME
	string "Driver name"
	default "BMA280" if BMA280_CHIP_BMA280
	default "BMC150_ACCEL" if BMA280_CHIP_BMC150_ACCEL
	help
	  Device name with which the sensor is identified.

config BMA280_I2C_ADDR
	hex "BMA280 I2C address"
	default 0x18 if BMA280_CHIP_BMA280
	default 0x10 if BMA280_CHIP_BMC150_ACCEL
	help
	  I2C address of the BMA280 sensor.

	  0x10: Use if the SDO pin is pulled to GND.
	  0x10: Use if the SDO pin is pulled to VDDIO.
	  0x18: Use if the SDO pin is pulled to GND.
	  0x19: Use if the SDO pin is pulled to VDDIO.

config BMA280_I2C_MASTER_DEV_NAME
	string "I2C master device name"
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which chip is
	  connected.

choice
	prompt "Trigger mode"
	default BMA280_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver.

config BMA280_TRIGGER_NONE
	bool "No trigger"

config BMA280_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select BMA280_TRIGGER

config BMA280_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select BMA280_TRIGGER

endchoice

config BMA280_TRIGGER
	bool

config BMA280_GPIO_DEV_NAME
	string "GPIO device"
	default "GPIO_0"
	depends on BMA280_TRIGGER
	help
	  The device name of the GPIO device to which the chip's interrupt pins
	  are connected.

config BMA280_GPIO_PIN_NUM
	int "Interrupt GPIO pin number"
	default 0
	depends on BMA280_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the chip
	  will be received.

config BMA280_THREAD_PRIORITY
	int "Thread priority"
	depends on BMA280_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config BMA280_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on BMA280_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

choice
	prompt "Acceleration measurement range"
	default BMA280_PMU_RANGE_2G
	help
	  Measurement range for acceleration values.

config BMA280_PMU_RANGE_2G
	bool "+/-2g"

config BMA280_PMU_RANGE_4G
	bool "+/-4g"

config BMA280_PMU_RANGE_8G
	bool "+/-8g"

config BMA280_PMU_RANGE_16G
	bool "+/-16g"

endchoice

choice
	prompt "Acceleration data filter bandwidth"
	default BMA280_PMU_BW_7
	help
	  Bandwidth of filtered acceleration data.

config BMA280_PMU_BW_1
	bool "7.81Hz"

config BMA280_PMU_BW_2
	bool "15.63HZ"

config BMA280_PMU_BW_3
	bool "31.25Hz"

config BMA280_PMU_BW_4
	bool "62.5Hz"

config BMA280_PMU_BW_5
	bool "125Hz"

config BMA280_PMU_BW_6
	bool "250HZ"

config BMA280_PMU_BW_7
	bool "500Hz"

config BMA280_PMU_BW_8
	bool "unfiltered"

endchoice

endif # BMA280
