# Copyright (c) 2023 Trackunit Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig BMI323
	bool "BMI323 measurement unit"
	default y
	depends on DT_HAS_BOSCH_BMI323_ENABLED
	help
	  Enable driver for BMI323 IMU sensor.
	  The driver implements the following features:

	  * Enable and disable accelerometer and gyroscope respectively
	  * Set full scale for accelerometer and gyroscope respectively
	  * Set data rate for accelerometer and gyroscope respectively
	  * Get samples (x,y,z) from accelerometer and gyroscope respectively
	  * Get die temperature
	  * Set trigger to accelerometer data ready, and accelerometer any motion.

	  The driver implements device and device runtime power management. If
	  runtime management is used, it is initialized into the suspended state,
	  which soft-resets the device to achieve the lowest possible power
	  consumption, otherwise it is resumed when initialized. When resumed,
	  the bus is initialized, the feature engine is enabled, and INT1 is
	  initialized.

	  The driver only implements the SPI bus at this time. The driver is
	  prepared to be expanded with I2C support in the future.

if BMI323

config BMI323_BUS_SPI
	bool "BMI323 driver support for SPI bus"
	default y
	depends on $(dt_compat_on_bus,$(DT_COMPAT_BOSCH_BMI323),spi)
	select SPI

endif # BMI323
