menuconfig REGULATOR
	bool "Voltage and Current Regulator Support"
	help
	  Generic Voltage and Current Regulator support.

	  This framework is designed to provide a generic interface to voltage
	  and current regulators within the Linux kernel. It's intended to
	  provide voltage and current control to client or consumer drivers and
	  also provide status information to user space applications through a
	  sysfs interface.

	  The intention is to allow systems to dynamically control regulator
	  output in order to save power and prolong battery life. This applies
	  to both voltage regulators (where voltage output is controllable) and
	  current sinks (where current output is controllable).

	  This framework safely compiles out if not selected so that client
	  drivers can still be used in systems with no software controllable
	  regulators.

	  If unsure, say no.


if REGULATOR

config REGULATOR_DEBUG
	bool "Regulator debug support"
	help
	  Say yes here to enable debugging support.

config REGULATOR_DUMMY
	bool "Provide a dummy regulator if regulator lookups fail"
	help
	  If this option is enabled then when a regulator lookup fails
	  and the board has not specified that it has provided full
	  constraints then the regulator core will provide an always
	  enabled dummy regulator will be provided, allowing consumer
	  drivers to continue.

	  A warning will be generated when this substitution is done.

config REGULATOR_FIXED_VOLTAGE
	tristate "Fixed voltage regulator support"
	help
	  This driver provides support for fixed voltage regulators,
	  useful for systems which use a combination of software
	  managed regulators and simple non-configurable regulators.

config REGULATOR_VIRTUAL_CONSUMER
	tristate "Virtual regulator consumer support"
	help
	  This driver provides a virtual consumer for the voltage and
          current regulator API which provides sysfs controls for
          configuring the supplies requested.  This is mainly useful
          for test purposes.

          If unsure, say no.

config REGULATOR_USERSPACE_CONSUMER
	tristate "Userspace regulator consumer support"
	help
	  There are some classes of devices that are controlled entirely
	  from user space. Userspace consumer driver provides ability to
	  control power supplies for such devices.

          If unsure, say no.

config REGULATOR_GPIO
	tristate "GPIO regulator support"
	depends on GENERIC_GPIO
	help
	  This driver provides support for regulators that can be
	  controlled via gpios.
	  It is capable of supporting current and voltage regulators
	  and the platform has to provide a mapping of GPIO-states
	  to target volts/amps.

config REGULATOR_AD5398
	tristate "Analog Devices AD5398/AD5821 regulators"
	depends on I2C
	help
	  This driver supports AD5398 and AD5821 current regulator chips.
	  If building into module, its name is ad5398.ko.

config REGULATOR_AAT2870
	tristate "AnalogicTech AAT2870 Regulators"
	depends on MFD_AAT2870_CORE
	help
	  If you have a AnalogicTech AAT2870 say Y to enable the
	  regulator driver.

config REGULATOR_DA903X
	tristate "Dialog Semiconductor DA9030/DA9034 regulators"
	depends on PMIC_DA903X
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  Dialog Semiconductor DA9030/DA9034 PMIC.

config REGULATOR_DA9052
	tristate "Dialog Semiconductor DA9052/DA9053 regulators"
	depends on PMIC_DA9052
	help
	  This driver supports the voltage regulators of DA9052-BC and
	  DA9053-AA/Bx PMIC.

config REGULATOR_ANATOP
	tristate "Freescale i.MX on-chip ANATOP LDO regulators"
	depends on MFD_ANATOP
	help
	  Say y here to support Freescale i.MX on-chip ANATOP LDOs
	  regulators. It is recommended that this option be
	  enabled on i.MX6 platform.

config REGULATOR_MC13XXX_CORE
	tristate

config REGULATOR_MC13783
	tristate "Freescale MC13783 regulator driver"
	depends on MFD_MC13783
	select REGULATOR_MC13XXX_CORE
	help
	  Say y here to support the regulators found on the Freescale MC13783
	  PMIC.

config REGULATOR_MC13892
	tristate "Freescale MC13892 regulator driver"
	depends on MFD_MC13XXX
	select REGULATOR_MC13XXX_CORE
	help
	  Say y here to support the regulators found on the Freescale MC13892
	  PMIC.

config REGULATOR_ISL6271A
	tristate "Intersil ISL6271A Power regulator"
	depends on I2C
	help
	  This driver supports ISL6271A voltage regulator chip.

config REGULATOR_88PM8607
	bool "Marvell 88PM8607 Power regulators"
	depends on MFD_88PM860X=y
	help
	  This driver supports 88PM8607 voltage regulator chips.

config REGULATOR_MAX1586
	tristate "Maxim 1586/1587 voltage regulator"
	depends on I2C
	help
	  This driver controls a Maxim 1586 or 1587 voltage output
	  regulator via I2C bus. The provided regulator is suitable
	  for PXA27x chips to control VCC_CORE and VCC_USIM voltages.

config REGULATOR_MAX8649
	tristate "Maxim 8649 voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Maxim 8649 voltage output regulator via
	  I2C bus.

config REGULATOR_MAX8660
	tristate "Maxim 8660/8661 voltage regulator"
	depends on I2C
	help
	  This driver controls a Maxim 8660/8661 voltage output
	  regulator via I2C bus.

config REGULATOR_MAX8925
	tristate "Maxim MAX8925 Power Management IC"
	depends on MFD_MAX8925
	help
	  Say y here to support the voltage regulaltor of Maxim MAX8925 PMIC.

config REGULATOR_MAX8952
	tristate "Maxim MAX8952 Power Management IC"
	depends on I2C
	help
	  This driver controls a Maxim 8952 voltage output regulator
	  via I2C bus. Maxim 8952 has one voltage output and supports 4 DVS
	  modes ranging from 0.77V to 1.40V by 0.01V steps.

config REGULATOR_MAX8997
	tristate "Maxim 8997/8966 regulator"
	depends on MFD_MAX8997
	help
	  This driver controls a Maxim 8997/8966 regulator
	  via I2C bus. The provided regulator is suitable for S5PC110,
	  S5PV210, and Exynos-4 chips to control VCC_CORE and
	  VCC_USIM voltages.

config REGULATOR_MAX8998
	tristate "Maxim 8998 voltage regulator"
	depends on MFD_MAX8998
	help
	  This driver controls a Maxim 8998 voltage output regulator
	  via I2C bus. The provided regulator is suitable for S3C6410
	  and S5PC1XX chips to control VCC_CORE and VCC_USIM voltages.

config REGULATOR_MAX77686
	tristate "Maxim 77686 regulator"
	depends on MFD_MAX77686
	help
	  This driver controls a Maxim 77686 regulator
	  via I2C bus. The provided regulator is suitable for
	  Exynos-4 chips to control VARM and VINT voltages.

config REGULATOR_PCAP
	tristate "Motorola PCAP2 regulator driver"
	depends on EZX_PCAP
	help
	 This driver provides support for the voltage regulators of the
	 PCAP2 PMIC.

config REGULATOR_LP3971
	tristate "National Semiconductors LP3971 PMIC regulator driver"
	depends on I2C
	help
	 Say Y here to support the voltage regulators and convertors
	 on National Semiconductors LP3971 PMIC

config REGULATOR_LP3972
	tristate "National Semiconductors LP3972 PMIC regulator driver"
	depends on I2C
	help
	 Say Y here to support the voltage regulators and convertors
	 on National Semiconductors LP3972 PMIC

config REGULATOR_LP872X
	bool "TI/National Semiconductor LP8720/LP8725 voltage regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports LP8720/LP8725 PMIC

config REGULATOR_PCF50633
	tristate "NXP PCF50633 regulator driver"
        depends on MFD_PCF50633
	help
	 Say Y here to support the voltage regulators and convertors
	 on PCF50633

config REGULATOR_RC5T583
	tristate "RICOH RC5T583 Power regulators"
	depends on MFD_RC5T583
	help
	  Select this option to enable the power regulator of RICOH
	  PMIC RC5T583.
	  This driver supports the control of different power rails of device
	  through regulator interface. The device supports multiple DCDC/LDO
	  outputs which can be controlled by i2c communication.

config REGULATOR_S5M8767
	tristate "Samsung S5M8767A voltage regulator"
	depends on MFD_S5M_CORE
	help
	 This driver supports a Samsung S5M8767A voltage output regulator
	 via I2C bus. S5M8767A have 9 Bucks and 28 LDOs output and
	 supports DVS mode with 8bits of output voltage control.

config REGULATOR_AB3100
	tristate "ST-Ericsson AB3100 Regulator functions"
	depends on AB3100_CORE
	default y if AB3100_CORE
	help
	 These regulators correspond to functionality in the
	 AB3100 analog baseband dealing with power regulators
	 for the system.

config REGULATOR_AB8500
	bool "ST-Ericsson AB8500 Power Regulators"
	depends on AB8500_CORE
	help
	  This driver supports the regulators found on the ST-Ericsson mixed
	  signal AB8500 PMIC

config REGULATOR_DBX500_PRCMU
	bool

config REGULATOR_DB8500_PRCMU
	bool "ST-Ericsson DB8500 Voltage Domain Regulators"
	depends on MFD_DB8500_PRCMU
	select REGULATOR_DBX500_PRCMU
	help
	  This driver supports the voltage domain regulators controlled by the
	  DB8500 PRCMU

config REGULATOR_PALMAS
	tristate "TI Palmas PMIC Regulators"
	depends on MFD_PALMAS
	help
	  If you wish to control the regulators on the Palmas series of
	  chips say Y here. This will enable support for all the software
	  controllable SMPS/LDO regulators.

	  The regulators available on Palmas series chips vary depending
	  on the muxing. This is handled automatically in the driver by
	  reading the mux info from OTP.

config REGULATOR_TPS6105X
	tristate "TI TPS6105X Power regulators"
	depends on TPS6105X
	default y if TPS6105X
	help
	  This driver supports TPS61050/TPS61052 voltage regulator chips.
	  It is a single boost converter primarily for white LEDs and
	  audio amplifiers.

config REGULATOR_TPS62360
	tristate "TI TPS6236x Power Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports TPS6236x voltage regulator chip. This
	  regulator is meant for processor core supply. This chip is
	  high-frequency synchronous step down dc-dc converter optimized
	  for battery-powered portable applications.

config REGULATOR_TPS65023
	tristate "TI TPS65023 Power regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports TPS65023 voltage regulator chips. TPS65023 provides
	  three step-down converters and two general-purpose LDO voltage regulators.
	  It supports TI's software based Class-2 SmartReflex implementation.

config REGULATOR_TPS6507X
	tristate "TI TPS6507X Power regulators"
	depends on I2C
	help
	  This driver supports TPS6507X voltage regulator chips. TPS6507X provides
	  three step-down converters and two general-purpose LDO voltage regulators.
	  It supports TI's software based Class-2 SmartReflex implementation.

config REGULATOR_TPS65090
	tristate "TI TPS65090 Power regulator"
	depends on MFD_TPS65090
	help
	  This driver provides support for the voltage regulators on the
	  TI TPS65090 PMIC.

config REGULATOR_TPS65217
	tristate "TI TPS65217 Power regulators"
	depends on MFD_TPS65217
	help
	  This driver supports TPS65217 voltage regulator chips. TPS65217
	  provides three step-down converters and four general-purpose LDO
	  voltage regulators. It supports software based voltage control
	  for different voltage domains

config REGULATOR_TPS6524X
	tristate "TI TPS6524X Power regulators"
	depends on SPI
	help
	  This driver supports TPS6524X voltage regulator chips. TPS6524X
	  provides three step-down converters and two general-purpose LDO
	  voltage regulators.  This device is interfaced using a customized
	  serial interface currently supported on the sequencer serial
	  port controller.

config REGULATOR_TPS6586X
	tristate "TI TPS6586X Power regulators"
	depends on MFD_TPS6586X
	help
	  This driver supports TPS6586X voltage regulator chips.

config REGULATOR_TPS65910
	tristate "TI TPS65910/TPS65911 Power Regulators"
	depends on MFD_TPS65910
	help
	  This driver supports TPS65910/TPS65911 voltage regulator chips.

config REGULATOR_TPS65912
	tristate "TI TPS65912 Power regulator"
	depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
	help
	    This driver supports TPS65912 voltage regulator chip.

config REGULATOR_TWL4030
	bool "TI TWL4030/TWL5030/TWL6030/TPS659x0 PMIC"
	depends on TWL4030_CORE
	help
	  This driver supports the voltage regulators provided by
	  this family of companion chips.

config REGULATOR_WM831X
	tristate "Wolfson Microelectronics WM831x PMIC regulators"
	depends on MFD_WM831X
	help
	  Support the voltage and current regulators of the WM831x series
	  of PMIC devices.

config REGULATOR_WM8350
	tristate "Wolfson Microelectronics WM8350 AudioPlus PMIC"
	depends on MFD_WM8350
	help
	  This driver provides support for the voltage and current regulators
          of the WM8350 AudioPlus PMIC.

config REGULATOR_WM8400
	tristate "Wolfson Microelectronics WM8400 AudioPlus PMIC"
	depends on MFD_WM8400
	help
	  This driver provides support for the voltage regulators of the
	  WM8400 AudioPlus PMIC.

config REGULATOR_WM8994
	tristate "Wolfson Microelectronics WM8994 CODEC"
	depends on MFD_WM8994
	help
	  This driver provides support for the voltage regulators on the
	  WM8994 CODEC.

endif

