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

menu "Digital potentiometers"

config AD5272
	tristate "Analog Devices AD5272 and similar Digital Potentiometer driver"
	depends on I2C
	help
	  Say yes here to build support for the Analog Devices AD5272 and AD5274
	  digital potentiometer chip.

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

config DS1803
	tristate "Maxim Integrated DS1803 Digital Potentiometer driver"
	depends on I2C
	help
	  Say yes here to build support for the Maxim Integrated DS1803
	  digital potentiometer chip.

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

config MAX5481
	tristate "Maxim MAX5481-MAX5484 Digital Potentiometer driver"
	depends on SPI
	help
	  Say yes here to build support for the Maxim
	  MAX5481, MAX5482, MAX5483, MAX5484 digital potentiometer
	  chips.

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

config MAX5487
	tristate "Maxim MAX5487/MAX5488/MAX5489 Digital Potentiometer driver"
	depends on SPI
	help
	  Say yes here to build support for the Maxim
	  MAX5487, MAX5488, MAX5489 digital potentiometer
	  chips.

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

config MCP4018
	tristate "Microchip MCP4017/18/19 Digital Potentiometer driver"
	depends on I2C
	help
	  Say yes here to build support for the Microchip
	  MCP4017, MCP4018, MCP4019
	  digital potentiometer chips.

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

config MCP4131
	tristate "Microchip MCP413X/414X/415X/416X/423X/424X/425X/426X Digital Potentiometer driver"
	depends on SPI
	help
	  Say yes here to build support for the Microchip
	  MCP4131, MCP4132,
	  MCP4141, MCP4142,
	  MCP4151, MCP4152,
	  MCP4161, MCP4162,
	  MCP4231, MCP4232,
	  MCP4241, MCP4242,
	  MCP4251, MCP4252,
	  MCP4261, MCP4262,
	  digital potentiometer chips.

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

config MCP4531
	tristate "Microchip MCP45xx/MCP46xx Digital Potentiometer driver"
	depends on I2C
	help
	  Say yes here to build support for the Microchip
	  MCP4531, MCP4532, MCP4541, MCP4542,
	  MCP4551, MCP4552, MCP4561, MCP4562,
	  MCP4631, MCP4632, MCP4641, MCP4642,
	  MCP4651, MCP4652, MCP4661, MCP4662
	  digital potentiometer chips.

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

config MCP41010
	tristate "Microchip MCP41xxx/MCP42xxx Digital Potentiometer driver"
	depends on SPI
	help
	  Say yes here to build support for the Microchip
	  MCP41010, MCP41050, MCP41100,
	  MCP42010, MCP42050, MCP42100
	  digital potentiometer chips.

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

config TPL0102
	tristate "Texas Instruments digital potentiometer driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say yes here to build support for the Texas Instruments
	  TPL0102, TPL0402
	  digital potentiometer chips.

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

endmenu
