# SPDX-License-Identifier: GPL-2.0-only
#
# IIO imu drivers configuration
#
# When adding new entries keep the list in alphabetical order

menu "Inertial measurement units"

config ADIS16400
	tristate "Analog Devices ADIS16400 and similar IMU SPI driver"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say yes here to build support for Analog Devices adis16300, adis16344,
	  adis16350, adis16354, adis16355, adis16360, adis16362, adis16364,
	  adis16365, adis16400 and adis16405 triaxial inertial sensors
	  (adis16400 series also have magnetometers).

config ADIS16460
	tristate "Analog Devices ADIS16460 and similar IMU driver"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say yes here to build support for Analog Devices ADIS16460 inertial
	  sensor.

	  To compile this driver as a module, choose M here: the module will be
	  called adis16460.

config ADIS16475
	tristate "Analog Devices ADIS16475 and similar IMU driver"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say yes here to build support for Analog Devices ADIS16470, ADIS16475,
	  ADIS16477, ADIS16465, ADIS16467, ADIS16500, ADIS16501, ADIS16505,
	  ADIS16507 inertial sensors.

	  To compile this driver as a module, choose M here: the module will be
	  called adis16475.

config ADIS16480
	tristate "Analog Devices ADIS16480 and similar IMU driver"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	select CRC32
	help
	  Say yes here to build support for Analog Devices ADIS16375, ADIS16480,
	  ADIS16485, ADIS16488 inertial sensors.

config ADIS16550
	tristate "Analog Devices ADIS16550 and similar IMU driver"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	select CRC32
	help
	  Say yes here to build support for Analog Devices ADIS16550 inertial
	  sensor containing triaxis gyroscope and triaxis accelerometer.

	  To compile this driver as a module, choose M here: the module will be
	  called adis16550.

source "drivers/iio/imu/bmi160/Kconfig"
source "drivers/iio/imu/bmi270/Kconfig"
source "drivers/iio/imu/bmi323/Kconfig"
source "drivers/iio/imu/bno055/Kconfig"

config FXOS8700
	tristate

config FXOS8700_I2C
	tristate "NXP FXOS8700 I2C driver"
	depends on I2C
	select FXOS8700
	select REGMAP_I2C
	help
	  Say yes here to build support for the NXP FXOS8700 m+g combo
	  sensor on I2C.

	  This driver can also be built as a module. If so, the module will be
	  called fxos8700_i2c.

config FXOS8700_SPI
	tristate "NXP FXOS8700 SPI driver"
	depends on SPI
	select FXOS8700
	select REGMAP_SPI
	help
	  Say yes here to build support for the NXP FXOS8700 m+g combo
	  sensor on SPI.

	  This driver can also be built as a module. If so, the module will be
	  called fxos8700_spi.

config KMX61
	tristate "Kionix KMX61 6-axis accelerometer and magnetometer"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here if you want to build a driver for Kionix KMX61 6-axis
	  accelerometer and magnetometer.
	  To compile this driver as module, choose M here: the module will
	  be called kmx61.

source "drivers/iio/imu/inv_icm42600/Kconfig"
source "drivers/iio/imu/inv_mpu6050/Kconfig"

config SMI240
	tristate "Bosch Sensor SMI240 Inertial Measurement Unit"
	depends on SPI
	select REGMAP_SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for SMI240 IMU on SPI with
	  accelerometer and gyroscope.

	  This driver can also be built as a module. If so, the module will be
	  called smi240.

source "drivers/iio/imu/st_lsm6dsx/Kconfig"
source "drivers/iio/imu/st_lsm9ds0/Kconfig"

endmenu

config IIO_ADIS_LIB
	tristate
	help
	  A set of IO helper functions for the Analog Devices ADIS* device family.

config IIO_ADIS_LIB_BUFFER
	bool
	select IIO_TRIGGERED_BUFFER
	help
	  A set of buffer helper functions for the Analog Devices ADIS* device
	  family.
