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

menu "Digital gyroscope sensors"

config ADIS16080
	tristate "Analog Devices ADIS16080/100 Yaw Rate Gyroscope with SPI driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices ADIS16080, ADIS16100 Yaw
	  Rate Gyroscope with SPI.

config ADIS16130
	tristate "Analog Devices ADIS16130 High Precision Angular Rate Sensor driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices ADIS16130 High Precision
	  Angular Rate Sensor driver.

config ADIS16136
	tristate "Analog devices ADIS16136 and similar gyroscopes driver"
	depends on SPI_MASTER
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say yes here to build support for the Analog Devices ADIS16133, ADIS16135,
	  ADIS16136 gyroscope devices.

config ADIS16260
	tristate "Analog Devices ADIS16260 Digital Gyroscope Sensor 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 ADIS16260 ADIS16265
	  ADIS16250 ADIS16255 and ADIS16251 programmable digital gyroscope sensors.

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

config ADXRS290
	tristate "Analog Devices ADXRS290 Dual-Axis MEMS Gyroscope SPI driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices ADXRS290 programmable
	  digital output gyroscope.

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

config ADXRS450
	tristate "Analog Devices ADXRS450/3 Digital Output Gyroscope SPI driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices ADXRS450 and ADXRS453
	  programmable digital output gyroscope.

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

config BMG160
	tristate "BOSCH BMG160 Gyro Sensor"
	depends on (I2C || SPI_MASTER)
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select BMG160_I2C if (I2C)
	select BMG160_SPI if (SPI)
	help
	  Say yes here to build support for BOSCH BMG160 Tri-axis Gyro Sensor
	  driver connected via I2C or SPI. This driver also supports BMI055
	  and BMI088 gyroscope.

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

config BMG160_I2C
	tristate
	select REGMAP_I2C

config BMG160_SPI
	tristate
	select REGMAP_SPI

config FXAS21002C
	tristate "NXP FXAS21002C Gyro Sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select FXAS21002C_I2C if (I2C)
	select FXAS21002C_SPI if (SPI)
	depends on (I2C || SPI_MASTER)
	help
	  Say yes here to build support for NXP FXAS21002C Tri-axis Gyro
	  Sensor driver connected via I2C or SPI.

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

config FXAS21002C_I2C
	tristate
	select REGMAP_I2C

config FXAS21002C_SPI
	tristate
	select REGMAP_SPI

config HID_SENSOR_GYRO_3D
	depends on HID_SENSOR_HUB
	select IIO_BUFFER
	select HID_SENSOR_IIO_COMMON
	select HID_SENSOR_IIO_TRIGGER
	tristate "HID Gyroscope 3D"
	help
	  Say yes here to build support for the HID SENSOR
	  Gyroscope 3D.

config MPU3050
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP

config MPU3050_I2C
	tristate "Invensense MPU3050 devices on I2C"
	depends on I2C
	select MPU3050
	select REGMAP_I2C
	select I2C_MUX
	help
	  This driver supports the Invensense MPU3050 gyroscope over I2C.
	  This driver can be built as a module. The module will be called
	  inv-mpu3050-i2c.

config IIO_ST_GYRO_3AXIS
	tristate "STMicroelectronics gyroscopes 3-Axis Driver"
	depends on (I2C || SPI_MASTER) && SYSFS
	select IIO_ST_SENSORS_CORE
	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
	help
	  Say yes here to build support for STMicroelectronics gyroscopes:
	  L3G4200D, LSM330DL, L3GD20, LSM330DLC, L3G4IS, LSM330, LSM9DS0.

	  Also need to enable at least one of I2C and SPI interface drivers
	  below.

config IIO_ST_GYRO_I2C_3AXIS
	tristate "STMicroelectronics gyroscopes 3-Axis I2C Interface"
	depends on I2C && IIO_ST_GYRO_3AXIS
	default I2C && IIO_ST_GYRO_3AXIS
	select IIO_ST_SENSORS_I2C
	help
	  Build support for STMicroelectronics gyroscopes I2C interface.

	  To compile this driver as a module, choose M here. The module
	  will be called st_gyro_i2c.


config IIO_ST_GYRO_SPI_3AXIS
	tristate "STMicroelectronics gyroscopes 3-Axis SPI Interface"
	depends on SPI_MASTER && IIO_ST_GYRO_3AXIS
	default SPI_MASTER && IIO_ST_GYRO_3AXIS
	select IIO_ST_SENSORS_SPI
	help
	  Build support for STMicroelectronics gyroscopes SPI interface.

	  To compile this driver as a module, choose M here. The module
	  will be called st_gyro_spi.


config ITG3200
	tristate "InvenSense ITG3200 Digital 3-Axis Gyroscope I2C driver"
	depends on I2C
	select IIO_TRIGGERED_BUFFER if IIO_BUFFER
	help
	  Say yes here to add support for the InvenSense ITG3200 digital
	  3-axis gyroscope sensor.

endmenu
