#
# humidity sensor drivers
#
menu "Humidity sensors"

config AM2315
    tristate "Aosong AM2315 relative humidity and temperature sensor"
    depends on I2C
    select IIO_BUFFER
    select IIO_TRIGGERED_BUFFER
    help
      If you say yes here you get support for the Aosong AM2315
      relative humidity and ambient temperature sensor.

      This driver can also be built as a module. If so, the module will
      be called am2315.

config DHT11
	tristate "DHT11 (and compatible sensors) driver"
	depends on GPIOLIB || COMPILE_TEST
	help
	  This driver supports reading data via a single interrupt
	  generating GPIO line. Currently tested are DHT11 and DHT22.
	  Other sensors should work as well as long as they speak the
	  same protocol.

config HDC100X
	tristate "TI HDC100x relative humidity and temperature sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the Texas Instruments
	  HDC1000, HDC1008, HDC1010, HDC1050, and HDC1080 relative
	  humidity and temperature sensors.

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

config HID_SENSOR_HUMIDITY
	tristate "HID Environmental humidity sensor"
	depends on HID_SENSOR_HUB
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select HID_SENSOR_IIO_COMMON
	select HID_SENSOR_IIO_TRIGGER
	help
	  Say yes here to build support for the HID SENSOR
	  humidity driver

	  To compile this driver as a module, choose M here: the module
	  will be called hid-sensor-humidity.

config HTS221
	tristate "STMicroelectronics HTS221 sensor Driver"
	depends on (I2C || SPI)
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select HTS221_I2C if (I2C)
	select HTS221_SPI if (SPI_MASTER)
	help
	  Say yes here to build support for STMicroelectronics HTS221
	  temperature-humidity sensor

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

config HTS221_I2C
	tristate
	depends on HTS221
	select REGMAP_I2C

config HTS221_SPI
	tristate
	depends on HTS221
	select REGMAP_SPI

config HTU21
	tristate "Measurement Specialties HTU21 humidity & temperature sensor"
	depends on I2C
        select IIO_MS_SENSORS_I2C
	help
	  If you say yes here you get support for the Measurement Specialties
	  HTU21 humidity and temperature sensor.
	  This driver is also used for MS8607 temperature, pressure & humidity
	  sensor

	  This driver can also be built as a module. If so, the module will
	  be called htu21.

config SI7005
	tristate "SI7005 relative humidity and temperature sensor"
	depends on I2C
	help
	  Say yes here to build support for the Silabs Si7005 relative
	  humidity and temperature sensor.

	  To compile this driver as a module, choose M here: the module
	  will be called si7005. This driver also
	  supports Hoperf TH02 Humidity and Temperature Sensor.

config SI7020
	tristate "Si7013/20/21 Relative Humidity and Temperature Sensors"
	depends on I2C
	help
	  Say yes here to build support for the Silicon Labs Si7013/20/21
	  Relative Humidity and Temperature Sensors. This driver also
	  supports Hoperf TH06 Humidity and Temperature Sensor.

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

endmenu
