# SPDX-License-Identifier: GPL-2.0-only
#
# ADC drivers
#
# When adding new entries keep the list in alphabetical order

menu "Analog to digital converters"

config AB8500_GPADC
	bool "ST-Ericsson AB8500 GPADC driver"
	depends on AB8500_CORE && REGULATOR_AB8500
	default y
	help
	  AB8500 Analog Baseband, mixed signal integrated circuit GPADC
	  (General Purpose Analog to Digital Converter) driver used to monitor
	  internal voltages, convert accessory and battery, AC (charger, mains)
	  and USB voltages integral to the U8500 platform.

config AD_SIGMA_DELTA
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config AD4130
	tristate "Analog Device AD4130 ADC Driver"
	depends on SPI
	depends on GPIOLIB
	select IIO_BUFFER
	select IIO_KFIFO_BUF
	select REGMAP_SPI
	depends on COMMON_CLK
	help
	  Say yes here to build support for Analog Devices AD4130-8 SPI analog
	  to digital converters (ADC).

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

config AD7091R
	tristate

config AD7091R5
	tristate "Analog Devices AD7091R5 ADC Driver"
	depends on I2C
	select AD7091R
	select REGMAP_I2C
	help
	  Say yes here to build support for Analog Devices AD7091R-5 ADC.

config AD7091R8
	tristate "Analog Devices AD7091R8 ADC Driver"
	depends on SPI
	select AD7091R
	select REGMAP_SPI
	help
	  Say yes here to build support for Analog Devices AD7091R-2, AD7091R-4,
	  and AD7091R-8 ADC.

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

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 AD7192
	tristate "Analog Devices AD7190 AD7192 AD7193 AD7195 ADC driver"
	depends on SPI
	select AD_SIGMA_DELTA
	help
	  Say yes here to build support for Analog Devices AD7190,
	  AD7192, AD7193 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 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 AD7280
	tristate "Analog Devices AD7280A Lithium Ion Battery Monitoring System"
	depends on SPI
	select CRC8
	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 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 AD7292
	tristate "Analog Devices AD7292 ADC driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD7292
	  8 Channel ADC with temperature sensor.

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

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 1-channel ADCs driver and other similar devices from AD and TI"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the following SPI analog to
	  digital converters (ADCs):
	  Analog Devices: AD7273, AD7274, AD7276, AD7277, AD7278, AD7475,
	  AD7476, AD7477, AD7478, AD7466, AD7467, AD7468, AD7495, AD7910,
	  AD7920.
	  Texas Instruments: ADS7866, ADS7867, ADS7868.

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

config AD7606
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config AD7606_IFACE_PARALLEL
	tristate "Analog Devices AD7606 ADC driver with parallel interface support"
	depends on HAS_IOPORT
	select AD7606
	help
	  Say yes here to build parallel interface support for Analog Devices:
	  ad7605-4, 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_parallel.

config AD7606_IFACE_SPI
	tristate "Analog Devices AD7606 ADC driver with spi interface support"
	depends on SPI
	select AD7606
	help
	  Say yes here to build spi interface support for Analog Devices:
	  ad7605-4, 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_spi.

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 AD7768_1
	tristate "Analog Devices AD7768-1 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD7768-1 SPI
	  simultaneously sampling sigma-delta analog to digital converter (ADC).

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

config AD7780
	tristate "Analog Devices AD7780 and similar ADCs driver"
	depends on SPI
	depends on GPIOLIB || COMPILE_TEST
	select AD_SIGMA_DELTA
	help
	  Say yes here to build support for Analog Devices AD7170, AD7171,
	  AD7780 and AD7781 SPI analog to digital converters (ADC).

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

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 AD9467
	tristate "Analog Devices AD9467 High Speed ADC driver"
	depends on SPI
	depends on ADI_AXI_ADC
	help
	  Say yes here to build support for Analog Devices:
	  * AD9467 16-Bit, 200 MSPS/250 MSPS Analog-to-Digital Converter

	  The driver requires the assistance of the AXI ADC IP core to operate,
	  since SPI is used for configuration only, while data has to be
	  streamed into memory via DMA.

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

config ADI_AXI_ADC
	tristate "Analog Devices Generic AXI ADC IP core driver"
	select IIO_BUFFER
	select IIO_BUFFER_HW_CONSUMER
	select IIO_BUFFER_DMAENGINE
	select REGMAP_MMIO
	depends on OF
	help
	  Say yes here to build support for Analog Devices Generic
	  AXI ADC IP core. The IP core is used for interfacing with
	  analog-to-digital (ADC) converters that require either a high-speed
	  serial interface (JESD204B/C) or a source synchronous parallel
	  interface (LVDS/CMOS).
	  Typically (for such devices) SPI will be used for configuration only,
	  while this IP core handles the streaming of data into memory via DMA.

	  Link: https://wiki.analog.com/resources/fpga/docs/axi_adc_ip
	  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 adi-axi-adc.

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 || COMPILE_TEST
	depends on INPUT && SYSFS && OF
	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 && OF) || 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 || COMPILE_TEST
	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"
	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 || COMPILE_TEST
	depends on HAS_IOMEM
	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_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
	depends on HAS_IOMEM
	help
	  Driver for the ADC block found in the Samsung S3C6410, S5Pv210 and
	  Exynos SoCs.
	  Choose Y here only if you build for such Samsung SoC.

	  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 INGENIC_ADC
	tristate "Ingenic JZ47xx SoCs ADC driver"
	depends on MIPS || COMPILE_TEST
	select IIO_BUFFER
	help
	  Say yes here to build support for the Ingenic JZ47xx SoCs ADC unit.

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

config INTEL_MRFLD_ADC
	tristate "Intel Merrifield Basin Cove ADC driver"
	depends on INTEL_SOC_PMIC_MRFLD
	help
	  Say yes here to have support for Basin Cove 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 intel_mrfld_adc.

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 IMX8QXP_ADC
	tristate "NXP IMX8QXP ADC driver"
	depends on ARCH_MXC || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for IMX8QXP ADC.

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

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

	  This driver can also be built as a module. If so, the module will be
	  called imx93_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 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 LTC2309
	tristate "Linear Technology LTC2309 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Linear Technology LTC2309, a low
	  noise, low power, 8-channel, 12-bit SAR ADC

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

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

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

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 {10,12}-bit ADC models:
	  max1027, max1029, max1031, max1227, max1229 and max1231.

	  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 MAX11205
	tristate "Maxim max11205 ADC driver"
	depends on SPI
	select AD_SIGMA_DELTA
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

	help
	  Say yes here to build support for Maxim max11205 16-bit, single-channel
	  ultra-low power delta-sigma ADC.

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

config MAX11410
	tristate "Analog Devices MAX11410 ADC driver"
	depends on SPI
	select REGMAP_SPI
	select IIO_BUFFER
	select IIO_TRIGGER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices MAX11410 ADCs.

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

config MAX1241
	tristate "Maxim max1241 ADC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Maxim max1241 12-bit, single-channel
	  ADC.

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

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 MAX34408
	tristate "Maxim max34408/max344089 ADC driver"
	depends on I2C
	help
	  Say yes here to build support for Maxim max34408/max34409 current sense
	  monitor with 8-bits ADC interface with overcurrent delay/threshold and
	  shutdown delay.

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

config MAX77541_ADC
	tristate "Analog Devices MAX77541 ADC driver"
	depends on MFD_MAX77541
	help
	  This driver controls a Analog Devices MAX77541 ADC
	  via I2C bus. This device has one adc. Say yes here to build
	  support for Analog Devices MAX77541 ADC interface.

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

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 MCP3564
        tristate "Microchip Technology MCP3461/2/4/R, MCP3561/2/4/R driver"
        depends on SPI
        depends on IIO
        help
          Say yes here to build support for Microchip Technology's MCP3461,
          MCP3462, MCP3464, MCP3461R, MCP3462R, MCP3464R, MCP3561, MCP3562,
          MCP3564, MCP3561R, MCP3562R and MCP3564R analog to digital
          converters.

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

config MCP3911
	tristate "Microchip Technology MCP3911 driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for one of the following
	  Microchip Technology's analog to digital converters:
	  MCP3910, MCP3911, MCP3912, MCP3913, MCP3914,
	  MCP3918 and MCP3919.

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

config MEDIATEK_MT6360_ADC
	tristate "Mediatek MT6360 ADC driver"
	depends on MFD_MT6360
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here to enable MT6360 ADC support.
	  Integrated for System Monitoring includes
	  is used in smartphones and tablets and supports a 11 channel
	  general purpose ADC.

config MEDIATEK_MT6370_ADC
	tristate "MediaTek MT6370 ADC driver"
	depends on MFD_MT6370
	help
	  Say yes here to enable MediaTek MT6370 ADC support.

	  This ADC driver provides 9 channels for system monitoring (charger
	  current, voltage, and temperature).

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

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 MP2629_ADC
	tristate "Monolithic MP2629 ADC driver"
	depends on MFD_MP2629
	help
	  Say yes to have support for battery charger IC MP2629 ADC device
	  accessed over I2C.

	  This driver provides ADC conversion of system, input power supply
	  and battery voltage & current information.

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 NPCM_ADC
	tristate "Nuvoton NPCM ADC driver"
	depends on ARCH_NPCM || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for Nuvoton NPCM ADC.

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

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_RRADC
	tristate "Qualcomm SPMI RRADC"
	depends on MFD_SPMI_PMIC
	help
	  This is for the PMIC Round Robin ADC driver.

	  This driver exposes the battery ID resistor, battery thermal, PMIC die
	  temperature, charger USB in and DC in voltage and current.

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

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 RN5T618_ADC
	tristate "ADC for the RN5T618/RC5T619 family of chips"
	depends on MFD_RN5T618
	help
	  Say yes here to build support for the integrated ADC inside the
	  RN5T618/619 series PMICs:

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

config ROCKCHIP_SARADC
	tristate "Rockchip SARADC driver"
	depends on ARCH_ROCKCHIP || COMPILE_TEST
	depends on RESET_CONTROLLER
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	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 RICHTEK_RTQ6056
	tristate "Richtek RTQ6056 Current and Power Monitor ADC"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to enable RQT6056 ADC support.
	  RTQ6056 is a high accuracy current-sense monitor with I2C and SMBus
	  compatible interface, and the device provides full information for
	  system by reading out the load current and power.

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

config RZG2L_ADC
	tristate "Renesas RZ/G2L ADC driver"
	depends on ARCH_RZG2L || COMPILE_TEST
	help
	  Say yes here to build support for the ADC found in Renesas
	  RZ/G2L family.

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

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"
	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
	depends on HAS_IOMEM
	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
	select IIO_BUFFER_HW_CONSUMER
	select IIO_TRIGGERED_BUFFER
	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 STMPE_ADC
	tristate "STMicroelectronics STMPE ADC driver"
	depends on OF && MFD_STMPE
	help
	  Say yes here to build support for ST Microelectronics STMPE
	  built-in ADC block (stmpe811).

config SUN4I_GPADC
	tristate "Allwinner A10/A13/A31 and similar GPADCs driver"
	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 SUN20I_GPADC
	tristate "Allwinner D1/T113s/T507/R329 and similar GPADCs driver"
	depends on ARCH_SUNXI || COMPILE_TEST
	help
	  Say yes here to build support for Allwinner (D1, T113, T507 and R329)
	  SoCs GPADC. This ADC provides up to 16 channels.

	  To compile this driver as a module, choose M here: the module will be
	  called sun20i-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
	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_ADS7924
	tristate "Texas Instruments ADS7924 ADC"
	depends on I2C
	select REGMAP_I2C
	help
	  If you say yes here you get support for Texas Instruments ADS7924
	  4 channels, 12-bit I2C ADC chip.

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

config TI_ADS1100
	tristate "Texas Instruments ADS1100 and ADS1000 ADC"
	depends on I2C
	help
	  If you say yes here you get support for Texas Instruments ADS1100 and
	  ADS1000 ADC chips.

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

config TI_ADS7950
	tristate "Texas Instruments ADS7950 ADC driver"
	depends on SPI && GPIOLIB
	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_ADS8344
	tristate "Texas Instruments ADS8344"
	depends on SPI
	help
	  If you say yes here you get support for Texas Instruments ADS8344
	  ADC chips

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

config TI_ADS8688
	tristate "Texas Instruments ADS8688"
	depends on SPI
	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_ADS124S08
	tristate "Texas Instruments ADS124S08"
	depends on SPI
	help
	  If you say yes here you get support for Texas Instruments ADS124S08
	  and ADS124S06 ADC chips

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

config TI_ADS131E08
	tristate "Texas Instruments ADS131E08"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to get support for Texas Instruments ADS131E04, ADS131E06
	  and ADS131E08 chips.

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

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_LMP92064
	tristate "Texas Instruments LMP92064 ADC driver"
	depends on SPI
	help
	  Say yes here to build support for the LMP92064 Precision Current and Voltage
	  sensor.

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

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 TI_TSC2046
	tristate "Texas Instruments TSC2046 ADC driver"
	depends on SPI
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for ADC functionality of Texas
	  Instruments TSC2046 touch screen controller.

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

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 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 HAS_IOMEM
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to have support for the Xilinx 7 Series XADC or
	  UltraScale/UltraScale+ System Management Wizard.

	  For the 7 Series the driver does support both the ZYNQ interface
	  to the XADC as well as the AXI-XADC interface.

	  The driver also support the Xilinx System Management Wizard IP core
	  that can be used to access the System Monitor ADC on the Xilinx
	  UltraScale and UltraScale+ FPGAs.

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

config XILINX_AMS
	tristate "Xilinx AMS driver"
	depends on ARCH_ZYNQMP || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to have support for the Xilinx AMS for Ultrascale/Ultrascale+
	  System Monitor. With this you can measure and monitor the Voltages and
	  Temperature values on the SOC.

	  The driver supports Voltage and Temperature monitoring on Xilinx Ultrascale
	  devices.

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

endmenu
