# 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 HX9023S
	tristate "TYHX HX9023S SAR sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here to build a driver for TYHX HX9023S capacitive SAR sensor.
	  This driver supports the TYHX HX9023S capacitive
	  SAR sensors. This sensors is used for proximity detection applications.

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

config IRSD200
	tristate "Murata IRS-D200 PIR sensor"
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here to build a driver for the Murata IRS-D200 PIR sensor.

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

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

config AW96103
	tristate "AW96103/AW96105 Awinic proximity sensor"
	select REGMAP_I2C
	depends on I2C
	help
	  Say Y here to build a driver for Awinic's AW96103/AW96105 capacitive
	  proximity sensor.

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

endmenu
