# 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 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 convertors (DAC).

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

config AD5446
	tristate "Analog Devices AD5446 and similar single channel DACs driver"
	depends on (SPI_MASTER && I2C!=m) || I2C
	help
	  Say yes here to build support for Analog Devices AD5300, AD5301, AD5310,
	  AD5311, AD5320, AD5321, AD5444, AD5446, AD5450, AD5451, AD5452, AD5453,
	  AD5512A, AD5541A, AD5542A, AD5543, AD5553, AD5601, AD5602, AD5611, AD5612,
	  AD5620, AD5621, AD5622, 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.

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 LTC1660
	tristate "Linear Technology LTC1660/LTC1665 DAC SPI driver"
	depends on 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 DAC spi driver"
	depends on SPI
	help
	  Say yes here to build support for Linear Technology
	  LTC2632-12, LTC2632-10, LTC2632-8 converters (DAC).

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

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 AD5671R, AD5675R,
	  AD5694, AD5694R, AD5695R, AD5696, AD5696R Voltage Output Digital to
	  Analog Converter.
	  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 AD5791
	tristate "Analog Devices AD5760/AD5780/AD5781/AD5790/AD5791 DAC SPI driver"
	depends on SPI
	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 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 CIO_DAC
	tristate "Measurement Computing CIO-DAC IIO driver"
	depends on X86 && (ISA_BUS || PC104)
	select ISA_BUS_API
	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 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 DPOT_DAC
	tristate "DAC emulation using a DPOT"
	depends on OF
	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
	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 OF && 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 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 MAX5821
	tristate "Maxim MAX5821 DAC driver"
	depends on I2C
	depends on OF
	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 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

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.

	  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 OF
	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
