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