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

menu "Accelerometers"

config ADIS16201
	tristate "Analog Devices ADIS16201 Dual-Axis Digital Inclinometer and Accelerometer"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say Y here to build support for Analog Devices adis16201 dual-axis
	  digital inclinometer and accelerometer.

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

config ADIS16209
	tristate "Analog Devices ADIS16209 Dual-Axis Digital Inclinometer and Accelerometer"
	depends on SPI
	select IIO_ADIS_LIB
	select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
	help
	  Say Y here to build support for Analog Devices adis16209 dual-axis digital inclinometer
	  and accelerometer.

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

config ADXL345
	tristate

config ADXL345_I2C
	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer I2C Driver"
	depends on INPUT_ADXL34X=n
	depends on I2C
	select ADXL345
	select REGMAP_I2C
	help
	  Say Y here if you want to build support for the Analog Devices
	  ADXL345 or ADXL375 3-axis digital accelerometer.

	  To compile this driver as a module, choose M here: the module
	  will be called adxl345_i2c and you will also get adxl345_core
	  for the core module.

config ADXL345_SPI
	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer SPI Driver"
	depends on INPUT_ADXL34X=n
	depends on SPI
	select ADXL345
	select REGMAP_SPI
	help
	  Say Y here if you want to build support for the Analog Devices
	  ADXL345 or ADXL375 3-axis digital accelerometer.

	  To compile this driver as a module, choose M here: the module
	  will be called adxl345_spi and you will also get adxl345_core
	  for the core module.

config ADXL372
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config ADXL372_SPI
	tristate "Analog Devices ADXL372 3-Axis Accelerometer SPI Driver"
	depends on SPI
	select ADXL372
	select REGMAP_SPI
	help
	  Say yes here to add support for the Analog Devices ADXL372 triaxial
	  acceleration sensor.
	  To compile this driver as a module, choose M here: the
	  module will be called adxl372_spi.

config ADXL372_I2C
	tristate "Analog Devices ADXL372 3-Axis Accelerometer I2C Driver"
	depends on I2C
	select ADXL372
	select REGMAP_I2C
	help
	  Say yes here to add support for the Analog Devices ADXL372 triaxial
	  acceleration sensor.
	  To compile this driver as a module, choose M here: the
	  module will be called adxl372_i2c.

config BMA180
	tristate "Bosch BMA180/BMA250 3-Axis Accelerometer Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here if you want to build a driver for the Bosch BMA180 or
	  BMA250 triaxial acceleration sensor.

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

config BMA220
	tristate "Bosch BMA220 3-Axis Accelerometer Driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to add support for the Bosch BMA220 triaxial
	  acceleration sensor.

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

config BMC150_ACCEL
	tristate "Bosch BMC150 Accelerometer Driver"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP
	select BMC150_ACCEL_I2C if I2C
	select BMC150_ACCEL_SPI if SPI
	help
	  Say yes here to build support for the following Bosch accelerometers:
	  BMC150, BMI055, BMA250E, BMA222E, BMA255, BMA280.

	  This is a combo module with both accelerometer and magnetometer.
	  This driver is only implementing accelerometer part, which has
	  its own address and register map.

config BMC150_ACCEL_I2C
	tristate
	select REGMAP_I2C

config BMC150_ACCEL_SPI
	tristate
	select REGMAP_SPI

config DA280
	tristate "MiraMEMS DA280 3-axis 14-bit digital accelerometer driver"
	depends on I2C
	help
	  Say yes here to build support for the MiraMEMS DA280 3-axis 14-bit
	  digital accelerometer.

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

config DA311
	tristate "MiraMEMS DA311 3-axis 12-bit digital accelerometer driver"
	depends on I2C
	help
	  Say yes here to build support for the MiraMEMS DA311 3-axis 12-bit
	  digital accelerometer.

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

config DMARD06
	tristate "Domintech DMARD06 Digital Accelerometer Driver"
	depends on OF || COMPILE_TEST
	depends on I2C
	help
	  Say yes here to build support for the Domintech low-g tri-axial
	  digital accelerometers: DMARD05, DMARD06, DMARD07.

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

config DMARD09
	tristate "Domintech DMARD09 3-axis Accelerometer Driver"
	depends on I2C
	help
	  Say yes here to get support for the Domintech DMARD09 3-axis
	  accelerometer.

	  Choosing M will build the driver as a module. If so, the module
	  will be called dmard09.

config DMARD10
	tristate "Domintech DMARD10 3-axis Accelerometer Driver"
	depends on I2C
	help
	  Say yes here to get support for the Domintech DMARD10 3-axis
	  accelerometer.

	  Choosing M will build the driver as a module. If so, the module
	  will be called dmard10.

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

	  To compile this driver as a module, choose M here: the
	  module will be called hid-sensor-accel-3d.

config IIO_CROS_EC_ACCEL_LEGACY
	tristate "ChromeOS EC Legacy Accelerometer Sensor"
	depends on IIO_CROS_EC_SENSORS_CORE
	help
	  Say yes here to get support for accelerometers on Chromebook using
	  legacy EC firmware.
	  Sensor data is retrieved through IO memory.
	  Newer devices should use IIO_CROS_EC_SENSORS.

config IIO_ST_ACCEL_3AXIS
	tristate "STMicroelectronics accelerometers 3-Axis Driver"
	depends on (I2C || SPI_MASTER) && SYSFS
	depends on !SENSORS_LIS3_I2C
	depends on !SENSORS_LIS3_SPI
	select IIO_ST_SENSORS_CORE
	select IIO_ST_ACCEL_I2C_3AXIS if (I2C)
	select IIO_ST_ACCEL_SPI_3AXIS if (SPI_MASTER)
	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
	help
	  Say yes here to build support for STMicroelectronics accelerometers:
	  LSM303DLH, LSM303DLHC, LIS3DH, LSM330D, LSM330DL, LSM330DLC,
	  LIS331DLH, LSM303DL, LSM303DLM, LSM330, LIS2DH12, H3LIS331DL,
	  LNG2DM, LIS3DE, LIS2DE12

	  This driver can also be built as a module. If so, these modules
	  will be created:
	  - st_accel (core functions for the driver [it is mandatory]);
	  - st_accel_i2c (necessary for the I2C devices [optional*]);
	  - st_accel_spi (necessary for the SPI devices [optional*]);

	  (*) one of these is necessary to do something.

config IIO_ST_ACCEL_I2C_3AXIS
	tristate
	depends on IIO_ST_ACCEL_3AXIS
	depends on IIO_ST_SENSORS_I2C

config IIO_ST_ACCEL_SPI_3AXIS
	tristate
	depends on IIO_ST_ACCEL_3AXIS
	depends on IIO_ST_SENSORS_SPI

config KXSD9
	tristate "Kionix KXSD9 Accelerometer Driver"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the Kionix KXSD9 accelerometer.
	  It can be accessed using an (optional) SPI or I2C interface.

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

config KXSD9_SPI
	tristate "Kionix KXSD9 SPI transport"
	depends on KXSD9
	depends on SPI
	default KXSD9
	select REGMAP_SPI
	help
	  Say yes here to enable the Kionix KXSD9 accelerometer
	  SPI transport channel.

config KXSD9_I2C
	tristate "Kionix KXSD9 I2C transport"
	depends on KXSD9
	depends on I2C
	default KXSD9
	select REGMAP_I2C
	help
	  Say yes here to enable the Kionix KXSD9 accelerometer
	  I2C transport channel.

config KXCJK1013
	tristate "Kionix 3-Axis Accelerometer Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here if you want to build a driver for the Kionix KXCJK-1013
	  triaxial acceleration sensor. This driver also supports KXCJ9-1008,
	  KXTJ2-1009 and KXTF9.

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

config MC3230
	tristate "mCube MC3230 Digital Accelerometer Driver"
	depends on I2C
	help
	  Say yes here to build support for the mCube MC3230 low-g tri-axial
	  digital accelerometer.

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

config MMA7455
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config MMA7455_I2C
	tristate "Freescale MMA7455L/MMA7456L Accelerometer I2C Driver"
	depends on I2C
	select MMA7455
	select REGMAP_I2C
	help
	  Say yes here to build support for the Freescale MMA7455L and
	  MMA7456L 3-axis accelerometer.

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

config MMA7455_SPI
	tristate "Freescale MMA7455L/MMA7456L Accelerometer SPI Driver"
	depends on SPI_MASTER
	select MMA7455
	select REGMAP_SPI
	help
	  Say yes here to build support for the Freescale MMA7455L and
	  MMA7456L 3-axis accelerometer.

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

config MMA7660
	tristate "Freescale MMA7660FC 3-Axis Accelerometer Driver"
	depends on I2C
	help
	  Say yes here to get support for the Freescale MMA7660FC 3-Axis
	  accelerometer.

	  Choosing M will build the driver as a module. If so, the module
	  will be called mma7660.

config MMA8452
	tristate "Freescale / NXP MMA8452Q and similar Accelerometers Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the following Freescale / NXP 3-axis
	  accelerometers: MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC, MMA8653FC,
	  FXLS8471Q.

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

config MMA9551_CORE
	tristate

config MMA9551
	tristate "Freescale MMA9551L Intelligent Motion-Sensing Platform Driver"
	depends on I2C
	select MMA9551_CORE

	help
	  Say yes here to build support for the Freescale MMA9551L
	  Intelligent Motion-Sensing Platform Driver.

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

config MMA9553
	tristate "Freescale MMA9553L Intelligent Pedometer Platform Driver"
	depends on I2C
	select MMA9551_CORE
	help
	  Say yes here to build support for the Freescale MMA9553L
	  Intelligent Pedometer Platform Driver.

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

config MXC4005
	tristate "Memsic MXC4005XC 3-Axis Accelerometer Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	help
	  Say yes here to build support for the Memsic MXC4005XC 3-axis
	  accelerometer.

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

config MXC6255
	tristate "Memsic MXC6255 Orientation Sensing Accelerometer Driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say yes here to build support for the Memsic MXC6255 Orientation
	  Sensing Accelerometer Driver.

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

config SCA3000
	select IIO_BUFFER
	select IIO_KFIFO_BUF
	depends on SPI
	tristate "VTI SCA3000 series accelerometers"
	help
	  Say Y here to build support for the VTI SCA3000 series of SPI
	  accelerometers. These devices use a hardware ring buffer.

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

config STK8312
	tristate "Sensortek STK8312 3-Axis Accelerometer Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to get support for the Sensortek STK8312 3-axis
	  accelerometer.

	  Choosing M will build the driver as a module. If so, the module
	  will be called stk8312.

config STK8BA50
	tristate "Sensortek STK8BA50 3-Axis Accelerometer Driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to get support for the Sensortek STK8BA50 3-axis
	  accelerometer.

	  Choosing M will build the driver as a module. If so, the module
	  will be called stk8ba50.

endmenu
