# 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 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 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
