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