#
# ADC drivers
#
# When adding new entries keep the list in alphabetical order

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.

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

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.

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

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 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).

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

config AD7766
	tristate "Analog Devices AD7766/AD7767 ADC driver"
	depends on SPI_MASTER
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7766, AD7766-1,
	  AD7766-2, AD7767, AD7767-1, AD7767-2 SPI analog to digital converters.

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

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).

	  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).

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

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).

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

config AD7923
	tristate "Analog Devices AD7923 and similar ADCs driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices
	  AD7904, AD7914, AD7923, AD7924 4 Channel ADCs.

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

config AD799X
	tristate "Analog Devices AD799x ADC driver"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_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.

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

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

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

config AT91_SAMA5D2_ADC
	tristate "Atmel AT91 SAMA5D2 ADC"
	depends on ARCH_AT91 || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for Atmel SAMA5D2 ADC which is
	  available on SAMA5D2 SoC family.

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

config AXP288_ADC
	tristate "X-Powers AXP288 ADC driver"
	depends on MFD_AXP20X
	help
	  Say yes here to have support for X-Powers power management IC (PMIC) ADC
	  device. Depending on platform configuration, this general purpose ADC can
	  be used for sampling sensors such as thermal resistors.

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

config BCM_IPROC_ADC
	tristate "Broadcom IPROC ADC driver"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	depends on MFD_SYSCON
	default ARCH_BCM_CYGNUS
	help
	  Say Y here if you want to add support for the Broadcom static
	  ADC driver.

	  Broadcom iProc ADC driver. Broadcom iProc ADC controller has 8
	  channels. The driver allows the user to read voltage values.

config BERLIN2_ADC
	tristate "Marvell Berlin2 ADC driver"
	depends on ARCH_BERLIN
	help
	  Marvell Berlin2 ADC driver. This ADC has 8 channels, with one used for
	  temperature measurement.

config CC10001_ADC
	tristate "Cosmic Circuits 10001 ADC driver"
	depends on HAS_IOMEM && HAVE_CLK && REGULATOR
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Cosmic Circuits 10001 ADC.

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

config DA9150_GPADC
	tristate "Dialog DA9150 GPADC driver support"
	depends on MFD_DA9150
	help
	  Say yes here to build support for Dialog DA9150 GPADC.

	  This driver can also be built as a module. If chosen, the module name
	  will be da9150-gpadc.

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

config ENVELOPE_DETECTOR
	tristate "Envelope detector using a DAC and a comparator"
	depends on OF
	help
	  Say yes here to build support for an envelope detector using a DAC
	  and a comparator.

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

config EXYNOS_ADC
	tristate "Exynos ADC driver support"
	depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || (OF && COMPILE_TEST)
	depends on HAS_IOMEM
	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.

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

config FSL_MX25_ADC
	tristate "Freescale MX25 ADC driver"
	depends on MFD_MX25_TSADC
	help
	  Generic Conversion Queue driver used for general purpose ADC in the
	  MX25. This driver supports single measurements using the MX25 ADC.

config HI8435
	tristate "Holt Integrated Circuits HI-8435 threshold detector"
	select IIO_TRIGGERED_EVENT
	depends on SPI
	help
	  If you say yes here you get support for Holt Integrated Circuits
	  HI-8435 chip.

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

config INA2XX_ADC
	tristate "Texas Instruments INA2xx Power Monitors IIO driver"
	depends on I2C && !SENSORS_INA2XX
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_KFIFO_BUF
	help
	  Say yes here to build support for TI INA2xx family of Power Monitors.
	  This driver is mutually exclusive with the HWMON version.

config IMX7D_ADC
	tristate "IMX7D ADC driver"
	depends on ARCH_MXC || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for IMX7D ADC.

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

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

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

config LPC18XX_ADC
	tristate "NXP LPC18xx ADC driver"
	depends on ARCH_LPC18XX || COMPILE_TEST
	depends on OF && HAS_IOMEM
	help
	  Say yes here to build support for NXP LPC18XX ADC.

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

config LTC2485
	tristate "Linear Technology LTC2485 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Linear Technology LTC2485 ADC.

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

config MAX1027
	tristate "Maxim max1027 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Maxim SPI ADC models
	  max1027, max1029 and max1031.

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

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.

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

config MCP320X
	tristate "Microchip Technology MCP3x01/02/04/08"
	depends on SPI
	help
	  Say yes here to build support for Microchip Technology's
	  MCP3001, MCP3002, MCP3004, MCP3008, MCP3201, MCP3202, MCP3204,
	  MCP3208 or MCP3301 analog to digital converter.

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

config MCP3422
	tristate "Microchip Technology MCP3421/2/3/4/5/6/7/8 driver"
	depends on I2C
	help
	  Say yes here to build support for Microchip Technology's MCP3421
	  MCP3422, MCP3423, MCP3424, MCP3425, MCP3426, MCP3427 or MCP3428
	  analog to digital converters.

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

config MEDIATEK_MT6577_AUXADC
        tristate "MediaTek AUXADC driver"
        depends on ARCH_MEDIATEK || COMPILE_TEST
        depends on HAS_IOMEM
        help
          Say yes here to enable support for MediaTek mt65xx AUXADC.

          The driver supports immediate mode operation to read from one of sixteen
          channels (external or internal).

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

config MEN_Z188_ADC
	tristate "MEN 16z188 ADC IP Core support"
	depends on MCB
	help
	  Say yes here to enable support for the MEN 16z188 ADC IP-Core on a MCB
	  carrier.

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

config MXS_LRADC
        tristate "Freescale i.MX23/i.MX28 LRADC"
        depends on (ARCH_MXS || COMPILE_TEST) && HAS_IOMEM
        depends on INPUT
        select STMP_DEVICE
        select IIO_BUFFER
        select IIO_TRIGGERED_BUFFER
        help
          Say yes here to build support for i.MX23/i.MX28 LRADC convertor
          built into these chips.

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

config NAU7802
	tristate "Nuvoton NAU7802 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Nuvoton NAU7802 ADC.

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

config PALMAS_GPADC
	tristate "TI Palmas General Purpose ADC"
	depends on MFD_PALMAS
	help
	  Palmas series pmic chip by Texas Instruments (twl6035/6037)
	  is used in smartphones and tablets and supports a 16 channel
	  general purpose ADC.

config QCOM_SPMI_IADC
	tristate "Qualcomm SPMI PMIC current ADC"
	depends on SPMI
	select REGMAP_SPMI
	help
	  This is the IIO Current ADC driver for Qualcomm QPNP IADC Chip.

	  The driver supports single mode operation to read from one of two
	  channels (external or internal). Hardware have additional
	  channels internally used for gain and offset calibration.

	  To compile this driver as a module, choose M here: the module will
	  be called qcom-spmi-iadc.

config QCOM_SPMI_VADC
	tristate "Qualcomm SPMI PMIC voltage ADC"
	depends on SPMI
	select REGMAP_SPMI
	help
	  This is the IIO Voltage ADC driver for Qualcomm QPNP VADC Chip.

	  The driver supports multiple channels read. The VADC is a 15-bit
	  sigma-delta ADC. Some of the channels are internally used for
	  calibration.

	  To compile this driver as a module, choose M here: the module will
	  be called qcom-spmi-vadc.

config ROCKCHIP_SARADC
	tristate "Rockchip SARADC driver"
	depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
	depends on RESET_CONTROLLER
	help
	  Say yes here to build support for the SARADC found in SoCs from
	  Rockchip.

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

config STM32_ADC_CORE
	tristate "STMicroelectronics STM32 adc core"
	depends on ARCH_STM32 || COMPILE_TEST
	depends on OF
	depends on REGULATOR
	help
	  Select this option to enable the core driver for STMicroelectronics
	  STM32 analog-to-digital converter (ADC).

	  This driver can also be built as a module.  If so, the module
	  will be called stm32-adc-core.

config STM32_ADC
	tristate "STMicroelectronics STM32 adc"
	depends on STM32_ADC_CORE
	help
	  Say yes here to build support for STMicroelectronics stm32 Analog
	  to Digital Converter (ADC).

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

config STX104
	tristate "Apex Embedded Systems STX104 driver"
	depends on X86 && ISA_BUS_API
	select GPIOLIB
	help
	  Say yes here to build support for the Apex Embedded Systems STX104
	  integrated analog PC/104 card.

	  This driver supports the 16 channels of single-ended (8 channels of
	  differential) analog inputs, 2 channels of analog output, 4 digital
	  inputs, and 4 digital outputs provided by the STX104.

	  The base port addresses for the devices may be configured via the base
	  array module parameter.

config TI_ADC081C
	tristate "Texas Instruments ADC081C/ADC101C/ADC121C family"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADC081C,
	  ADC101C and ADC121C ADC chips.

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

config TI_ADC0832
	tristate "Texas Instruments ADC0831/ADC0832/ADC0834/ADC0838"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADC0831,
	  ADC0832, ADC0834, ADC0838 ADC chips.

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

config TI_ADC12138
	tristate "Texas Instruments ADC12130/ADC12132/ADC12138"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADC12130,
	  ADC12132 and ADC12138 chips.

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

config TI_ADC128S052
	tristate "Texas Instruments ADC128S052/ADC122S021/ADC124S021"
	depends on SPI
	help
	  If you say yes here you get support for Texas Instruments ADC128S052,
	  ADC122S021 and ADC124S021 chips.

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

config TI_ADC161S626
	tristate "Texas Instruments ADC161S626 1-channel differential ADC"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADC141S626,
	  and ADC161S626 chips.

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

config TI_ADS1015
	tristate "Texas Instruments ADS1015 ADC"
	depends on I2C && !SENSORS_ADS1015
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADS1015
	  ADC chip.

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

config TI_ADS8688
	tristate "Texas Instruments ADS8688"
	depends on SPI && OF
	help
	  If you say yes here you get support for Texas Instruments ADS8684 and
	  and ADS8688 ADC chips

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

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

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

config TWL4030_MADC
	tristate "TWL4030 MADC (Monitoring A/D Converter)"
	depends on TWL4030_CORE
	help
	  This driver provides support for Triton TWL4030-MADC. The
	  driver supports both RT and SW conversion methods.

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

config TWL6030_GPADC
	tristate "TWL6030 GPADC (General Purpose A/D Converter) Support"
	depends on TWL4030_CORE
	default n
	help
	  Say yes here if you want support for the TWL6030/TWL6032 General
	  Purpose A/D Converter. This will add support for battery type
	  detection, battery voltage and temperature measurement, die
	  temperature measurement, system supply voltage, audio accessory,
	  USB ID detection.

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

config VF610_ADC
	tristate "Freescale vf610 ADC driver"
	depends on OF
	depends on HAS_IOMEM
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to support for Vybrid board analog-to-digital converter.
	  Since the IP is used for i.MX6SLX, the driver also support i.MX6SLX.

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

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.

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

config XILINX_XADC
	tristate "Xilinx XADC driver"
	depends on ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST
	depends on HAS_IOMEM
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to have support for the Xilinx XADC. The driver does support
	  both the ZYNQ interface to the XADC as well as the AXI-XADC interface.

	  The driver can also be build as a module. If so, the module will be called
	  xilinx-xadc.

endmenu
