# 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 CROS_EC_MKBP_PROXIMITY
	tristate "ChromeOS EC MKBP Proximity sensor"
	depends on CROS_EC
	help
	  Say Y here to enable the proximity sensor implemented via the ChromeOS EC MKBP
	  switches protocol. You must enable one bus option (CROS_EC_I2C or CROS_EC_SPI)
	  to use this.

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

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 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 SX_COMMON
	tristate
	help
	  Common Semtech proximity sensor code.

config SX9310
	tristate "SX9310/SX9311 Semtech proximity sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	select SX_COMMON
	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 SX9324
	tristate "SX9324 Semtech proximity sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	select SX_COMMON
	depends on I2C
	help
	  Say Y here to build a driver for Semtech's SX9324
	  proximity/button sensor.

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

config SX932X
	tristate "sx932x 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 sx932x capacitive
	  proximity/button sensor. This driver supports Semtech's
	  sx9320, sx9321 and sx9324 sensors.

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

config SX9360
	tristate "SX9360 Semtech proximity sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	select SX_COMMON
	depends on I2C
	help
	  Say Y here to build a driver for Semtech's SX9360
	  proximity/button sensor, a simplified SX9324.

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

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