# SPDX-License-Identifier: GPL-2.0-only
#
# Proximity sensors
#

menu "Lightning sensors"

config AS3935
	tristate "AS3935 Franklin lightning sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	depends on SPI
	help
	  Say Y here to build SPI interface support for the Austrian
	  Microsystems AS3935 lightning detection sensor.

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

endmenu

menu "Proximity and distance sensors"

config ISL29501
	tristate "Intersil ISL29501 Time Of Flight sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select IIO_KFIFO_BUF
	help
	  Say Y here if you want to build a driver for the Intersil ISL29501
	  Time of Flight sensor.

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

config LIDAR_LITE_V2
	tristate "PulsedLight LIDAR sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	depends on I2C
	help
	  Say Y to build a driver for PulsedLight LIDAR range finding
	  sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called pulsedlight-lite-v2

config MB1232
	tristate "MaxSonar I2CXL family ultrasonic sensors"
	depends on I2C
	help
	  Say Y to build a driver for the ultrasonic sensors I2CXL of
	  MaxBotix which have an i2c interface. It can be used to measure
	  the distance of objects. Supported types are mb1202, mb1212,
	  mb1222, mb1232, mb1242, mb7040, mb7137

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

config PING
	tristate "Parallax GPIO bitbanged ranger sensors"
	depends on GPIOLIB
	help
	  Say Y here to build a driver for GPIO bitbanged ranger sensors
	  with just one GPIO for the trigger and echo. This driver can be
	  used to measure the distance of objects.

	  Actually supported are:
	  - Parallax PING))) (ultrasonic)
	  - Parallax LaserPING (time-of-flight)

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

config RFD77402
	tristate "RFD77402 ToF sensor"
	depends on I2C
	help
	  Say Y to build a driver for the RFD77402 Time-of-Flight (distance)
	  sensor module with I2C interface.

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

config SRF04
	tristate "GPIO bitbanged ultrasonic ranger sensor (SRF04, MB1000)"
	depends on GPIOLIB
	help
	  Say Y here to build a driver for GPIO bitbanged ultrasonic
	  ranger sensor. This driver can be used to measure the distance
	  of objects. It is using two GPIOs.
	  Actually Supported types are:
	  - Devantech SRF04
	  - Maxbotix mb1000
	  - Maxbotix mb1010
	  - Maxbotix mb1020
	  - Maxbotix mb1030
	  - Maxbotix mb1040

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

config SX9310
	tristate "SX9310/SX9311 Semtech proximity sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here to build a driver for Semtech's SX9310/SX9311 capacitive
	  proximity/button sensor.

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

config SX9500
	tristate "SX9500 Semtech proximity sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here to build a driver for Semtech's SX9500 capacitive
	  proximity/button sensor.

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

config SRF08
	tristate "Devantech SRF02/SRF08/SRF10 ultrasonic ranger sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	depends on I2C
	help
	  Say Y here to build a driver for Devantech SRF02/SRF08/SRF10
	  ultrasonic ranger sensors with i2c interface.
	  This driver can be used to measure the distance of objects.

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

config VCNL3020
	tristate "VCNL3020 proximity sensor"
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here if you want to build a driver for the Vishay VCNL3020
	  proximity sensor.

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

config VL53L0X_I2C
	tristate "STMicroelectronics VL53L0X ToF ranger sensor (I2C)"
	depends on I2C
	help
	  Say Y here to build a driver for STMicroelectronics VL53L0X
	  ToF ranger sensors with i2c interface.
	  This driver can be used to measure the distance of objects.

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

endmenu
