#
# Temperature sensor drivers
#
menu "Temperature sensors"

config MAXIM_THERMOCOUPLE
	tristate "Maxim thermocouple sensors"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for the Maxim series of
	  thermocouple sensors connected via SPI.

	  Supported sensors:
	   * MAX6675
	   * MAX31855

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

config MLX90614
	tristate "MLX90614 contact-less infrared sensor"
	depends on I2C
	help
	  If you say yes here you get support for the Melexis
	  MLX90614 contact-less infrared sensor connected with I2C.

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

config TMP006
	tristate "TMP006 infrared thermopile sensor"
	depends on I2C
	help
	  If you say yes here you get support for the Texas Instruments
	  TMP006 infrared thermopile sensor.

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

config TSYS01
	tristate "Measurement Specialties TSYS01 temperature sensor using I2C bus connection"
	depends on I2C
	select IIO_MS_SENSORS_I2C
	help
	  If you say yes here you get support for the Measurement Specialties
	  TSYS01 I2C temperature sensor.

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

config TSYS02D
	tristate "Measurement Specialties TSYS02D temperature sensor"
	depends on I2C
	select IIO_MS_SENSORS_I2C
	help
	  If you say yes here you get support for the Measurement Specialties
	  TSYS02D temperature sensor.

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

endmenu
