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

menu "Digital to analog converters"

config AD3530R
	tristate "Analog Devices AD3530R and Similar DACs driver"
	depends on SPI
	select REGMAP_SPI
	help
	  Say yes here to build support for Analog Devices AD3530R, AD3531R
	  Digital to Analog Converter.

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

config AD3552R_HS
	tristate "Analog Devices AD3552R DAC High Speed driver"
	select AD3552R_LIB
	select IIO_BACKEND
	help
	  Say yes here to build support for Analog Devices AD3552R
	  Digital to Analog Converter High Speed driver.

	  The driver requires the assistance of an IP core to operate,
	  since data is streamed into target device via DMA, sent over a
	  QSPI + DDR (Double Data Rate) bus.

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

config AD3552R_LIB
	tristate

config AD3552R
	tristate "Analog Devices AD3552R DAC driver"
	depends on SPI_MASTER
	select AD3552R_LIB
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD3552R
	  Digital to Analog Converter.

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

config AD5064
	tristate "Analog Devices AD5064 and similar multi-channel DAC driver"
	depends on (SPI_MASTER && I2C!=m) || I2C
	help
	  Say yes here to build support for Analog Devices AD5024, AD5025, AD5044,
	  AD5045, AD5064, AD5064-1, AD5065, AD5625, AD5625R, AD5627, AD5627R,
	  AD5628, AD5629R, AD5645R, AD5647R, AD5648, AD5665, AD5665R, AD5666,
	  AD5667, AD5667R, AD5668, AD5669R, LTC2606, LTC2607, LTC2609, LTC2616,
	  LTC2617, LTC2619, LTC2626, LTC2627, LTC2629, LTC2631, LTC2633, LTC2635
	  Digital to Analog Converter.

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

config AD5360
	tristate "Analog Devices AD5360/61/62/63/70/71/73 DAC driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD5360, AD5361,
	  AD5362, AD5363, AD5370, AD5371, AD5373 multi-channel
	  Digital to Analog Converters (DAC).

	  To compile this driver as module choose M here: the module will be called
	  ad5360.

config AD5380
	tristate "Analog Devices AD5380/81/82/83/84/90/91/92 DAC driver"
	depends on (SPI_MASTER && I2C!=m) || I2C
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5380, AD5381,
	  AD5382, AD5383, AD5384, AD5390, AD5391, AD5392 multi-channel
	  Digital to Analog Converters (DAC).

	  To compile this driver as module choose M here: the module will be called
	  ad5380.

config AD5421
	tristate "Analog Devices AD5421 DAC driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD5421 loop-powered
	  digital-to-analog converters (DAC).

	  To compile this driver as module choose M here: the module will be called
	  ad5421.

config AD5446
	tristate

config AD5446_SPI
	tristate "Analog Devices AD5446 and similar single channel DACs driver (SPI)"
	depends on SPI
	select AD5446
	help
	  Say yes here to build support for Analog Devices AD5300, AD5310,
	  AD5320, AD5444, AD5446, AD5450, AD5451, AD5452, AD5453, AD5512A,
	  AD5541A, AD5542A, AD5543, AD5553, AD5600, AD5601, AD5611, AD5620,
	  AD5621, AD5640, AD5641, AD5660, AD5662 DACs as well as
	  Texas Instruments DAC081S101, DAC101S101, DAC121S101.

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

config AD5446_I2C
	tristate "Analog Devices AD5446 and similar single channel DACs driver (I2C)"
	depends on I2C
	select AD5446
	help
	  Say yes here to build support for Analog Devices AD5301, AD5311, AD5321,
	  AD5602, AD5612, AD5622 DACs.

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

config AD5449
	tristate "Analog Devices AD5449 and similar DACs driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5415, AD5426, AD5429,
	  AD5432, AD5439, AD5443, AD5449 Digital to Analog Converters.

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

config AD5592R_BASE
	tristate

config AD5592R
	tristate "Analog Devices AD5592R ADC/DAC driver"
	depends on SPI_MASTER
	select GPIOLIB
	select AD5592R_BASE
	help
	  Say yes here to build support for Analog Devices AD5592R
	  Digital to Analog / Analog to Digital Converter.

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

config AD5593R
	tristate "Analog Devices AD5593R ADC/DAC driver"
	depends on I2C
	select GPIOLIB
	select AD5592R_BASE
	help
	  Say yes here to build support for Analog Devices AD5593R
	  Digital to Analog / Analog to Digital Converter.

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

config AD5504
	tristate "Analog Devices AD5504/AD5501 DAC SPI driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD5504, AD5501,
	  High Voltage Digital to Analog Converter.

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

config AD5624R_SPI
	tristate "Analog Devices AD5624/44/64R DAC spi driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD5624R, AD5644R and
	  AD5664R converters (DAC). This driver uses the common SPI interface.

config AD9739A
	tristate "Analog Devices AD9739A RF DAC spi driver"
	depends on SPI
	select REGMAP_SPI
	select IIO_BACKEND
	help
	  Say yes here to build support for Analog Devices AD9739A Digital-to
	  Analog Converter.

	  The driver requires the assistance of the AXI DAC 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 ad9739a.

config ADI_AXI_DAC
	tristate "Analog Devices Generic AXI DAC IP core driver"
	depends on MICROBLAZE || NIOS2 || ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_INTEL_SOCFPGA || COMPILE_TEST
	select IIO_BUFFER
	select IIO_BUFFER_DMAENGINE
	select REGMAP_MMIO
	select IIO_BACKEND
	help
	  Say yes here to build support for Analog Devices Generic
	  AXI DAC IP core. The IP core is used for interfacing with
	  digital-to-analog (DAC) 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_dac_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-dac.

config LTC2688
	tristate "Analog Devices LTC2688 DAC spi driver"
	depends on SPI
	select REGMAP
	help
	  Say yes here to build support for Analog Devices
	  LTC2688 converters (DAC).

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

config AD5686
	tristate

config AD5686_SPI
	tristate "Analog Devices AD5686 and similar multi-channel DACs (SPI)"
	depends on SPI
	select AD5686
	help
	  Say yes here to build support for Analog Devices AD5672R, AD5674R,
	  AD5676, AD5676R, AD5679R, AD5684, AD5684R, AD5684R, AD5685R, AD5686,
	  AD5686R Voltage Output Digital to Analog Converter.

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

config AD5696_I2C
	tristate "Analog Devices AD5696 and similar multi-channel DACs (I2C)"
	depends on I2C
	select AD5686
	help
	  Say yes here to build support for Analog Devices AD5311R, AD5337,
	  AD5338R, AD5671R, AD5673R, AD5675R, AD5677R, AD5691R, AD5692R, AD5693,
	  AD5693R, AD5694, AD5694R, AD5695R, AD5696, and AD5696R Digital to
	  Analog converters.

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

config AD5755
	tristate "Analog Devices AD5755/AD5755-1/AD5757/AD5735/AD5737 DAC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5755, AD5755-1,
	  AD5757, AD5735, AD5737 quad channel Digital to
	  Analog Converter.

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

config AD5758
	tristate "Analog Devices AD5758 DAC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5758 single channel
	  Digital to Analog Converter.

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

config AD5761
	tristate "Analog Devices AD5761/61R/21/21R DAC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5761, AD5761R, AD5721,
	  AD5721R Digital to Analog Converter.

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

config AD5764
	tristate "Analog Devices AD5764/64R/44/44R DAC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD5764, AD5764R, AD5744,
	  AD5744R Digital to Analog Converter.

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

config AD5766
	tristate "Analog Devices AD5766/AD5767 DAC driver"
	depends on SPI_MASTER
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Analog Devices AD5766, AD5767
	  Digital to Analog Converter.

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

config AD5770R
	tristate "Analog Devices AD5770R IDAC driver"
	depends on SPI_MASTER
	select REGMAP_SPI
	help
	  Say yes here to build support for Analog Devices AD5770R Digital to
	  Analog Converter.

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

config AD5791
	tristate "Analog Devices AD5760/AD5780/AD5781/AD5790/AD5791 DAC SPI driver"
	depends on SPI
	select SPI_OFFLOAD
	select IIO_BUFFER
	select IIO_BUFFER_DMAENGINE
	help
	  Say yes here to build support for Analog Devices AD5760, AD5780,
	  AD5781, AD5790, AD5791 High Resolution Voltage Output Digital to
	  Analog Converter.

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

config AD7293
	tristate "Analog Devices AD7293 Power Amplifier Current Controller"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD7293
	  Power Amplifier Current Controller with
	  ADC, DACs, and Temperature and Current Sensors

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

config AD7303
	tristate "Analog Devices AD7303 DAC driver"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD7303 Digital to Analog
	  Converters (DAC).

	  To compile this driver as module choose M here: the module will be called
	  ad7303.

config AD8460
	tristate "Analog Devices AD8460 DAC driver"
	depends on SPI
	select REGMAP_SPI
	select IIO_BUFFER
	select IIO_BUFFER_DMAENGINE
	help
	  Say yes here to build support for Analog Devices AD8460 Digital to
	  Analog Converters (DAC).

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

config AD8801
	tristate "Analog Devices AD8801/AD8803 DAC driver"
	depends on SPI_MASTER
	help
	  Say yes here to build support for Analog Devices AD8801, AD8803 Digital to
	  Analog Converters (DAC).

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

config BD79703
	tristate "ROHM Semiconductor BD79703 DAC driver"
	depends on SPI
	select REGMAP_SPI
	help
	  Say yes here to build support for ROHM Semiconductor BD79703 Digital
	  to Analog Converter (DAC).

config CIO_DAC
	tristate "Measurement Computing CIO-DAC IIO driver"
	depends on X86 && (ISA_BUS || PC104)
	select ISA_BUS_API
	select REGMAP_MMIO
	help
	  Say yes here to build support for the Measurement Computing CIO-DAC
	  analog output device family (CIO-DAC16, CIO-DAC08, PC104-DAC06). The
	  base port addresses for the devices may be configured via the base
	  array module parameter.

config DPOT_DAC
	tristate "DAC emulation using a DPOT"
	help
	  Say yes here to build support for DAC emulation using a digital
	  potentiometer.

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

config DS4424
	tristate "Maxim Integrated DS4422/DS4424 DAC driver"
	depends on I2C
	select REGMAP_I2C
	help
	  If you say yes here you get support for Maxim chips DS4422, DS4424.

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

config LPC18XX_DAC
	tristate "NXP LPC18xx DAC driver"
	depends on ARCH_LPC18XX || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Say yes here to build support for NXP LPC18XX DAC.

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

config LTC1660
	tristate "Linear Technology LTC1660/LTC1665 DAC SPI driver"
	depends on SPI
	select REGMAP_SPI
	help
	  Say yes here to build support for Linear Technology
	  LTC1660 and LTC1665 Digital to Analog Converters.

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

config LTC2632
	tristate "Linear Technology LTC2632-12/10/8 and similar DAC spi driver"
	depends on SPI
	help
	  Say yes here to build support for Linear Technology
	  LTC2632, LTC2634 and LTC2636 DAC resolution 12/10/8 bit
	  low 0-2.5V and high 0-4.096V range converters.

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

config LTC2664
	tristate "Analog Devices LTC2664 and LTC2672 DAC SPI driver"
	depends on SPI
	select REGMAP_SPI
	help
	  Say yes here to build support for Analog Devices
	  LTC2664 and LTC2672 converters (DAC).

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

config M62332
	tristate "Mitsubishi M62332 DAC driver"
	depends on I2C
	help
	  If you say yes here you get support for the Mitsubishi M62332
	  (I2C 8-Bit DACs with rail-to-rail outputs).

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

config MAX517
	tristate "Maxim MAX517/518/519/520/521 DAC driver"
	depends on I2C
	help
	  If you say yes here you get support for the following Maxim chips
	  (I2C 8-Bit DACs with rail-to-rail outputs):
	  MAX517 - Single channel, single reference
	  MAX518 - Dual channel, ref=Vdd
	  MAX519 - Dual channel, dual reference
	  MAX520 - Quad channel, quad reference
	  MAX521 - Octal channel, independent ref for ch0-3, shared ref for ch4-7

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

config MAX22007
	tristate "Analog Devices MAX22007 DAC Driver"
	depends on SPI
	select REGMAP_SPI
	select CRC8
	help
	  Say Y here if you want to build a driver for Analog Devices MAX22007.

	  MAX22007 is a quad-channel, 12-bit, voltage-output digital to
	  analog converter (DAC) with SPI interface.

	  If compiled as a module, it will be called max22007.

config MAX5522
	tristate "Maxim MAX5522 DAC driver"
	depends on SPI_MASTER
	select REGMAP_SPI
	help
	  Say Y here if you want to build a driver for the Maxim MAX5522.

	  MAX5522 is a dual, ultra-low-power, 10-Bit, voltage-output
	  digital to analog converter (DAC) offering rail-to-rail buffered
	  voltage outputs.

	  If compiled as a module, it will be called max5522.

config MAX5821
	tristate "Maxim MAX5821 DAC driver"
	depends on I2C
	help
	  Say yes here to build support for Maxim MAX5821
	  10 bits DAC.

config MCP4725
	tristate "MCP4725/6 DAC driver"
	depends on I2C
	help
	  Say Y here if you want to build a driver for the Microchip
	  MCP 4725/6 12-bit digital-to-analog converter (DAC) with I2C
	  interface.

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

config MCP4728
	tristate "MCP4728 DAC driver"
	depends on I2C
	help
	  Say Y here if you want to build a driver for the Microchip
	  MCP4728 quad channel, 12-bit digital-to-analog converter (DAC)
	  with I2C interface.

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

config MCP47FEB02
	tristate "MCP47F(E/V)B01/02/04/08/11/12/14/18/21/22/24/28 DAC driver"
	depends on I2C
	help
	  Say yes here if you want to build the driver for the Microchip:
	  - 8-bit DAC:
	    MCP47FEB01, MCP47FEB02, MCP47FEB04, MCP47FEB08,
	    MCP47FVB01, MCP47FVB02, MCP47FVB04, MCP47FVB08
	  - 10-bit DAC:
	    MCP47FEB11, MCP47FEB12, MCP47FEB14, MCP47FEB18,
	    MCP47FVB11, MCP47FVB12, MCP47FVB14, MCP47FVB18
	  - 12-bit DAC:
	    MCP47FEB21, MCP47FEB22, MCP47FEB24, MCP47FEB28,
	    MCP47FVB21, MCP47FVB22, MCP47FVB24, MCP47FVB28
	  having 1 to 8 channels, 8/10/12-bit digital-to-analog converter
	  (DAC) with I2C interface.

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

config MCP4821
	tristate "MCP4801/02/11/12/21/22 DAC driver"
	depends on SPI
	help
	  Say yes here to build the driver for the Microchip MCP4801
	  MCP4802, MCP4811, MCP4812, MCP4821 and MCP4822 DAC devices.

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

config MCP4922
	tristate "MCP4902, MCP4912, MCP4922 DAC driver"
	depends on SPI
	help
	  Say yes here to build the driver for the Microchip MCP4902
	  MCP4912, and MCP4922 DAC devices.

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

config STM32_DAC
	tristate "STMicroelectronics STM32 DAC"
	depends on (ARCH_STM32 && OF) || COMPILE_TEST
	depends on REGULATOR
	select STM32_DAC_CORE
	help
	  Say yes here to build support for STMicroelectronics STM32 Digital
	  to Analog Converter (DAC).

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

config STM32_DAC_CORE
	tristate
	select REGMAP_MMIO

config TI_DAC082S085
	tristate "Texas Instruments 8/10/12-bit 2/4-channel DAC driver"
	depends on SPI_MASTER
	help
	  Driver for the Texas Instruments (formerly National Semiconductor)
	  DAC082S085, DAC102S085, DAC122S085, DAC084S085, DAC104S085 and
	  DAC124S085.

	  If compiled as a module, it will be called ti-dac082s085.

config TI_DAC5571
	tristate "Texas Instruments 8/10/12/16-bit 1/2/4-channel DAC driver"
	depends on I2C
	help
	  Driver for the Texas Instruments
	  DAC5571, DAC6571, DAC7571, DAC5574, DAC6574, DAC7574, DAC5573,
	  DAC6573, DAC7573, DAC8571, DAC8574, DAC121C081.

	  If compiled as a module, it will be called ti-dac5571.

config TI_DAC7311
	tristate "Texas Instruments 8/10/12-bit 1-channel DAC driver"
	depends on SPI
	help
	  Driver for the Texas Instruments
	  DAC7311, DAC6311, DAC5311.

	  If compiled as a module, it will be called ti-dac7311.

config TI_DAC7612
	tristate "Texas Instruments 12-bit 2-channel DAC driver"
	depends on SPI_MASTER && GPIOLIB
	help
	  Driver for the Texas Instruments DAC7612, DAC7612U, DAC7612UB
	  The driver hand drive the load pin automatically, otherwise
	  it needs to be toggled manually.

	  If compiled as a module, it will be called ti-dac7612.

config VF610_DAC
	tristate "Vybrid vf610 DAC driver"
	depends on HAS_IOMEM
	help
	  Say yes here to support Vybrid board digital-to-analog converter.

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

endmenu
