#
# 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 AD7124
	tristate "Analog Devices AD7124 and similar sigma-delta ADCs driver"
	depends on SPI_MASTER
	select AD_SIGMA_DELTA
	help
	  Say yes here to build support for Analog Devices AD7124-4 and AD7124-8
	  SPI analog to digital converters (ADC).

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

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 AD7949
	tristate "Analog Devices AD7949 and similar ADCs driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices
	  AD7949, AD7682, AD7689 8 Channel ADCs.

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

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 ASPEED_ADC
	tristate "Aspeed ADC"
	depends on ARCH_ASPEED || COMPILE_TEST
	depends on COMMON_CLK
	help
	  If you say yes here you get support for the ADC included in Aspeed
	  BMC SoCs.

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

config AT91_ADC
	tristate "Atmel AT91 ADC"
	depends on ARCH_AT91
	depends on INPUT && SYSFS
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	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
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	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 AXP20X_ADC
	tristate "X-Powers AXP20X and AXP22X ADC driver"
	depends on MFD_AXP20X
	help
	  Say yes here to have support for X-Powers power management IC (PMIC)
	  AXP20X and AXP22X ADC devices.

	  To compile this driver as a module, choose M here: the module will be
	  called axp20x_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 CPCAP_ADC
	tristate "Motorola CPCAP PMIC ADC driver"
	depends on MFD_CPCAP
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Motorola CPCAP PMIC ADC.

	  This driver can also be built as a module. If so, the module will be
	  called cpcap-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 DLN2_ADC
	tristate "Diolan DLN-2 ADC driver support"
	depends on MFD_DLN2
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Diolan DLN-2 ADC.

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

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 EP93XX_ADC
	tristate "Cirrus Logic EP93XX ADC driver"
	depends on ARCH_EP93XX
	help
	  Driver for the ADC module on the EP93XX series of SoC from Cirrus Logic.
	  It's recommended to switch on CONFIG_HIGH_RES_TIMERS option, in this
	  case driver will reduce its CPU usage by 90% in some use cases.

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

config EXYNOS_ADC
	tristate "Exynos ADC driver support"
	depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || (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 MXS_LRADC_ADC
	tristate "Freescale i.MX23/i.MX28 LRADC ADC"
	depends on MFD_MXS_LRADC
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the ADC functions of the
	  i.MX23/i.MX28 LRADC. This includes general-purpose ADC readings,
	  battery voltage measurement, and die temperature measurement.

	  This driver can also be built as a module. If so, the module will be
	  called mxs-lradc-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 HX711
	tristate "AVIA HX711 ADC for weight cells"
	depends on GPIOLIB
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for AVIA HX711 ADC which is used
	  for weigh cells

	  This driver uses two GPIOs, one acts as the clock and controls the
	  channel selection and gain, the other one is used for the measurement
          data

	  Currently the raw value is read from the chip and delivered.
	  To get an actual weight one needs to subtract the
	  zero offset and multiply by a scale factor.
	  This should be done in userspace.

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

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 "Freescale 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 LPC32XX_ADC
	tristate "NXP LPC32XX ADC"
	depends on ARCH_LPC32XX || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for the integrated ADC inside the
	  LPC32XX SoC. Note that this feature uses the same hardware as the
	  touchscreen driver, so you should either select only one of the two
	  drivers (lpc32xx_adc or lpc32xx_ts) or, in the OpenFirmware case,
	  activate only one via device tree selection.  Provides direct access
	  via sysfs.

config LTC2471
	tristate "Linear Technology LTC2471 and LTC2473 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Linear Technology LTC2471 and
	  LTC2473 16-bit I2C ADC.

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

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 LTC2497
	tristate "Linear Technology LTC2497 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Linear Technology LTC2497
	  16-Bit 8-/16-Channel Delta Sigma ADC.

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

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 MAX11100
	tristate "Maxim max11100 ADC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Maxim max11100 SPI ADC

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

config MAX1118
	tristate "Maxim max1117/max1118/max1119 ADCs driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Maxim max1117/max1118/max1119
	  8-bit, dual-channel ADCs.

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

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	MAX9611
	tristate "Maxim max9611/max9612 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Maxim max9611/max9612 current sense
	  amplifier with 12-bits ADC interface.

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

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

	  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 MCP3911
	tristate "Microchip Technology MCP3911 driver"
	depends on SPI
	help
	  Say yes here to build support for Microchip Technology's MCP3911
	  analog to digital converter.

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

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 MESON_SARADC
	tristate "Amlogic Meson SAR ADC driver"
	default ARCH_MESON
	depends on OF && COMMON_CLK && (ARCH_MESON || COMPILE_TEST)
	select REGMAP_MMIO
	help
	  Say yes here to build support for the SAR ADC found in Amlogic Meson
	  SoCs.

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

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_VADC_COMMON
	tristate

config QCOM_PM8XXX_XOADC
	tristate "Qualcomm SSBI PM8xxx PMIC XOADCs"
	depends on MFD_PM8XXX
	select QCOM_VADC_COMMON
	help
	  ADC driver for the XOADC portions of the Qualcomm PM8xxx PMICs
	  using SSBI transport: PM8018, PM8038, PM8058, PM8921.

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

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
	select QCOM_VADC_COMMON
	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 QCOM_SPMI_ADC5
	tristate "Qualcomm Technologies Inc. SPMI PMIC5 ADC"
	depends on SPMI
	select REGMAP_SPMI
	select QCOM_VADC_COMMON
	help
	  This is the IIO Voltage PMIC5 ADC driver for Qualcomm Technologies Inc.

	  The driver supports multiple channels read. The ADC is a 16-bit
	  sigma-delta ADC. The hardware supports calibrated results for
	  conversion requests and clients include reading voltage phone
	  power, on board system thermistors connected to the PMIC ADC,
	  PMIC die temperature, charger temperature, battery current, USB voltage
	  input, voltage signals connected to supported PMIC GPIO inputs. The
	  hardware supports internal pull-up for thermistors and can choose between
	  a 100k, 30k and 400k pull up using the ADC channels.

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

config RCAR_GYRO_ADC
	tristate "Renesas R-Car GyroADC driver"
	depends on ARCH_RCAR_GEN2 || COMPILE_TEST
	help
	  Say yes here to build support for the GyroADC found in Renesas
	  R-Car Gen2 SoCs. This block is a simple SPI offload engine for
	  reading data out of attached compatible ADCs in a round-robin
	  fashion. Up to 4 or 8 ADC channels are supported by this block,
	  depending on which ADCs are attached.

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

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 SC27XX_ADC
	tristate "Spreadtrum SC27xx series PMICs ADC"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	help
	  Say yes here to build support for the integrated ADC inside the
	  Spreadtrum SC27xx series PMICs.

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

config SPEAR_ADC
	tristate "ST SPEAr ADC"
	depends on PLAT_SPEAR || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for the integrated ADC inside the
	  ST SPEAr SoC. Provides direct access via sysfs.

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

config SD_ADC_MODULATOR
	tristate "Generic sigma delta modulator"
	depends on OF
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Select this option to enables sigma delta modulator. This driver can
	  support generic sigma delta modulators.

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

config STM32_ADC_CORE
	tristate "STMicroelectronics STM32 adc core"
	depends on ARCH_STM32 || COMPILE_TEST
	depends on OF
	depends on REGULATOR
	select IIO_BUFFER
	select MFD_STM32_TIMERS
	select IIO_STM32_TIMER_TRIGGER
	select IIO_TRIGGERED_BUFFER
	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 STM32_DFSDM_CORE
	tristate "STMicroelectronics STM32 DFSDM core"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	select REGMAP
	select REGMAP_MMIO
	help
	  Select this option to enable the  driver for STMicroelectronics
	  STM32 digital filter for sigma delta converter.

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

config STM32_DFSDM_ADC
	tristate "STMicroelectronics STM32 dfsdm adc"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	select STM32_DFSDM_CORE
	select REGMAP_MMIO
	select IIO_BUFFER_HW_CONSUMER
	help
	  Select this option to support ADCSigma delta modulator for
	  STMicroelectronics STM32 digital filter for sigma delta converter.

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

config STX104
	tristate "Apex Embedded Systems STX104 driver"
	depends on PC104 && X86
	select 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 SUN4I_GPADC
	tristate "Support for the Allwinner SoCs GPADC"
	depends on IIO
	depends on MFD_SUN4I_GPADC || MACH_SUN8I
	depends on THERMAL || !THERMAL_OF
	select REGMAP_IRQ
	help
	  Say yes here to build support for Allwinner (A10, A13 and A31) SoCs
	  GPADC. This ADC provides 4 channels which can be used as an ADC or as
	  a touchscreen input and one channel for thermal sensor.

	  The thermal sensor slows down ADC readings and can be disabled by
	  disabling CONFIG_THERMAL_OF. However, the thermal sensor should be
	  enabled by default since the SoC temperature is usually more critical
	  than ADC readings.

	  To compile this driver as a module, choose M here: the module will be
	  called sun4i-gpadc-iio.

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_ADC084S021
	tristate "Texas Instruments ADC084S021"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  If you say yes here you get support for Texas Instruments ADC084S021
	  chips.

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

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_ADC108S102
	tristate "Texas Instruments ADC108S102 and ADC128S102 driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Texas Instruments ADC108S102 and
	  ADC128S102 ADC.

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

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_ADS7950
	tristate "Texas Instruments ADS7950 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Texas Instruments ADS7950, ADS7951,
	  ADS7952, ADS7953, ADS7954, ADS7955, ADS7956, ADS7957, ADS7958, ADS7959.
	  ADS7960, ADS7961.

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

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 TI_TLC4541
	tristate "Texas Instruments TLC4541 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Texas Instruments TLC4541 / TLC3541
	  ADC chips.

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

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
