# BMI270 6 Axis IMU configuration

# Copyright (c) 2021 Bosch Sensortec GmbH
# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menuconfig BMI270
	bool "BMI270 Inertial measurement unit"
	default y
	depends on DT_HAS_BOSCH_BMI270_ENABLED
	select I2C if $(dt_compat_on_bus,$(DT_COMPAT_BOSCH_BMI270),i2c)
	select SPI if $(dt_compat_on_bus,$(DT_COMPAT_BOSCH_BMI270),spi)
	help
	  Enable driver for BMI270 I2C-based imu sensor

if BMI270

config BMI270_BUS_I2C
	bool
	default y
	depends on $(dt_compat_on_bus,$(DT_COMPAT_BOSCH_BMI270),i2c)

config BMI270_BUS_SPI
	bool
	default y
	depends on $(dt_compat_on_bus,$(DT_COMPAT_BOSCH_BMI270),spi)

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

config BMI270_TRIGGER_NONE
	bool "No trigger"

config BMI270_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select BMI270_TRIGGER

config BMI270_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select BMI270_TRIGGER

endchoice

config BMI270_TRIGGER
	bool

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

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

endif # BMI270
