#
# ADC drivers
#
menu "Analog to digital converters"

config AD_SIGMA_DELTA
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config AD7266
	tristate "Analog Devices AD7265/AD7266 ADC driver"
	depends on SPI_MASTER
	select IIO_BUFFER
	select IIO_TRIGGER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7265 and AD7266
	  ADCs.

config AD7298
	tristate "Analog Devices AD7298 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7298
	  8 Channel ADC with temperature sensor.

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

config AD7923
	tristate "Analog Devices AD7923 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7923
	  4 Channel ADC with temperature sensor.

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

config AD7791
	tristate "Analog Devices AD7791 ADC driver"
	depends on SPI
	select AD_SIGMA_DELTA
	help
	  Say yes here to build support for Analog Devices AD7787, AD7788, AD7789,
	  AD7790 and AD7791 SPI analog to digital converters (ADC). If unsure, say
	  N (but it is safe to say "Y").

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

config AD7793
	tristate "Analog Devices AD7793 and similar ADCs driver"
	depends on SPI
	select AD_SIGMA_DELTA
	help
	  Say yes here to build support for Analog Devices AD7785, AD7792, AD7793,
	  AD7794 and AD7795 SPI analog to digital converters (ADC).
	  If unsure, say N (but it's safe to say "Y").

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

config AD7476
	tristate "Analog Devices AD7476 and similar 1-channel ADCs driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7273, AD7274, AD7276,
	  AD7277, AD7278, AD7475, AD7476, AD7477, AD7478, AD7466, AD7467, AD7468,
	  AD7495, AD7910, AD7920, AD7920 SPI analog to digital converters (ADC).

	  If unsure, say N (but it's safe to say "Y").

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

config AD7887
	tristate "Analog Devices AD7887 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices
	  AD7887 SPI analog to digital converter (ADC).
	  If unsure, say N (but it's safe to say "Y").

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

config AT91_ADC
	tristate "Atmel AT91 ADC"
	depends on ARCH_AT91
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	select SYSFS
	help
	  Say yes here to build support for Atmel AT91 ADC.

config EXYNOS_ADC
	bool "Exynos ADC driver support"
	help
	  Core support for the ADC block found in the Samsung EXYNOS series
	  of SoCs for drivers such as the touchscreen and hwmon to use to share
	  this resource.

config LP8788_ADC
	bool "LP8788 ADC driver"
	depends on MFD_LP8788
	help
	  Say yes here to build support for TI LP8788 ADC.

config MAX1363
	tristate "Maxim max1363 ADC driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for many Maxim i2c analog to digital
	  converters (ADC). (max1361, max1362, max1363, max1364, max1036,
	  max1037, max1038, max1039, max1136, max1136, max1137, max1138,
	  max1139, max1236, max1237, max11238, max1239, max11600, max11601,
	  max11602, max11603, max11604, max11605, max11606, max11607,
	  max11608, max11609, max11610, max11611, max11612, max11613,
	  max11614, max11615, max11616, max11617, max11644, max11645,
	  max11646, max11647) Provides direct access via sysfs and buffered
	  data via the iio dev interface.

config TI_ADC081C
	tristate "Texas Instruments ADC081C021/027"
	depends on I2C
	help
	  If you say yes here you get support for Texas Instruments ADC081C021
	  and ADC081C027 ADC chips.

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

config TI_AM335X_ADC
	tristate "TI's ADC driver"
	depends on MFD_TI_AM335X_TSCADC
	help
	  Say yes here to build support for Texas Instruments ADC
	  driver which is also a MFD client.

config VIPERBOARD_ADC
	tristate "Viperboard ADC support"
	depends on MFD_VIPERBOARD && USB
	help
	  Say yes here to access the ADC part of the Nano River
	  Technologies Viperboard.

endmenu
