#
# 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 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"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select CROS_EC_LPC_REGISTER_DEVICE
	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

	  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
