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

menu "Chemical Sensors"

config ATLAS_PH_SENSOR
	tristate "Atlas Scientific OEM SM sensors"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select IRQ_WORK
	help
	  Say Y here to build I2C interface support for the following
	  Atlas Scientific OEM SM sensors:
	    * pH SM sensor
	    * EC SM sensor
	    * ORP SM sensor

	  To compile this driver as module, choose M here: the
	  module will be called atlas-ph-sensor.

config BME680
	tristate "Bosch Sensortec BME680 sensor driver"
	depends on (I2C || SPI)
	select REGMAP
	select BME680_I2C if I2C
	select BME680_SPI if SPI
	help
	  Say yes here to build support for Bosch Sensortec BME680 sensor with
	  temperature, pressure, humidity and gas sensing capability.

	  This driver can also be built as a module. If so, the module for I2C
	  would be called bme680_i2c and bme680_spi for SPI support.

config BME680_I2C
	tristate
	depends on I2C && BME680
	select REGMAP_I2C

config BME680_SPI
	tristate
	depends on SPI && BME680
	select REGMAP_SPI

config CCS811
	tristate "AMS CCS811 VOC sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here to build I2C interface support for the AMS
	  CCS811 VOC (Volatile Organic Compounds) sensor

config IAQCORE
	tristate "AMS iAQ-Core VOC sensors"
	depends on I2C
	help
	  Say Y here to build I2C interface support for the AMS
	  iAQ-Core Continuous/Pulsed VOC (Volatile Organic Compounds)
	  sensors

config PMS7003
	tristate "Plantower PMS7003 particulate matter sensor"
	depends on SERIAL_DEV_BUS
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here to build support for the Plantower PMS7003 particulate
	  matter sensor.

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

config SENSIRION_SGP30
	tristate "Sensirion SGPxx gas sensors"
	depends on I2C
	select CRC8
	help
	  Say Y here to build I2C interface support for the following
	  Sensirion SGP gas sensors:
	    * SGP30 gas sensor
	    * SGPC3 low power gas sensor

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

config SPS30
	tristate "SPS30 particulate matter sensor"
	depends on I2C
	select CRC8
	help
	  Say Y here to build support for the Sensirion SPS30 particulate
	  matter sensor.

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

config VZ89X
	tristate "SGX Sensortech MiCS VZ89X VOC sensor"
	depends on I2C
	help
	  Say Y here to build I2C interface support for the SGX
	  Sensortech MiCS VZ89X VOC (Volatile Organic Compounds)
	  sensors

endmenu
