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

config AD7291
	tristate "Analog Devices AD7291 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Analog Devices AD7291
	  8 Channel ADC with temperature sensor.

config AD7298
	tristate "Analog Devices AD7298 ADC driver"
	depends on SPI
	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 AD7606
	tristate "Analog Devices AD7606 ADC driver"
	depends on GPIOLIB
	select IIO_BUFFER
	select IIO_TRIGGER
	select IIO_SW_RING
	help
	  Say yes here to build support for Analog Devices:
	  ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC).

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

config AD7606_IFACE_PARALLEL
	tristate "parallel interface support"
	depends on AD7606
	help
	  Say yes here to include parallel interface support on the AD7606
	  ADC driver.

config AD7606_IFACE_SPI
	tristate "spi interface support"
	depends on AD7606
	depends on SPI
	help
	  Say yes here to include parallel interface support on the AD7606
	  ADC driver.

config AD799X
	tristate "Analog Devices AD799x ADC driver"
	depends on I2C
	select IIO_TRIGGER if IIO_BUFFER
	select AD799X_RING_BUFFER
	help
	  Say yes here to build support for Analog Devices:
	  ad7991, ad7995, ad7999, ad7992, ad7993, ad7994, ad7997, ad7998
	  i2c analog to digital converters (ADC). Provides direct access
	  via sysfs.

config AD799X_RING_BUFFER
	bool "Analog Devices AD799x: use ring buffer"
	depends on AD799X
	select IIO_BUFFER
	select IIO_SW_RING
	help
	  Say yes here to include ring buffer support in the AD799X
	  ADC driver.

config AD7476
	tristate "Analog Devices AD7475/6/7/8 AD7466/7/8 and AD7495 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_SW_RING
	select IIO_TRIGGER
	help
	  Say yes here to build support for Analog Devices
	  AD7475, AD7476, AD7477, AD7478, AD7466, AD7467, AD7468, AD7495
	  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_SW_RING
	select IIO_TRIGGER
	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 AD7780
	tristate "Analog Devices AD7780 AD7781 ADC driver"
	depends on SPI
	depends on GPIOLIB
	help
	  Say yes here to build support for Analog Devices
	  AD7780 and AD7781 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 ad7780.

config AD7793
	tristate "Analog Devices AD7792 AD7793 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_SW_RING
	select IIO_TRIGGER
	help
	  Say yes here to build support for Analog Devices
	  AD7792 and AD7793 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 AD7816
	tristate "Analog Devices AD7816/7/8 temperature sensor and ADC driver"
	depends on SPI
	depends on GENERIC_GPIO
	help
	  Say yes here to build support for Analog Devices AD7816/7/8
	  temperature sensors and ADC.

config AD7192
	tristate "Analog Devices AD7190 AD7192 AD7195 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_SW_RING
	select IIO_TRIGGER
	help
	  Say yes here to build support for Analog Devices AD7190,
	  AD7192 or AD7195 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 ad7192.

config ADT7310
	tristate "Analog Devices ADT7310 temperature sensor driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices ADT7310
	  temperature sensors.

config ADT7410
	tristate "Analog Devices ADT7410 temperature sensor driver"
	depends on I2C
	help
	  Say yes here to build support for Analog Devices ADT7410
	  temperature sensors.

config AD7280
	tristate "Analog Devices AD7280A Lithium Ion Battery Monitoring System"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD7280A
	  Lithium Ion Battery Monitoring System.

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

config MAX1363
	tristate "Maxim max1363 ADC driver"
	depends on I2C
	select IIO_TRIGGER if IIO_BUFFER
	select MAX1363_RING_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.

config MAX1363_RING_BUFFER
	bool "Maxim max1363: use ring buffer"
	depends on MAX1363
	select IIO_BUFFER
	select IIO_SW_RING
	help
	  Say yes here to include ring buffer support in the MAX1363
	  ADC driver.

endmenu
