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_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_88PM800
	tristate "Marvell 88PM800 Power regulators"
	depends on MFD_88PM800
	help
	  This driver supports Marvell 88PM800 voltage regulator chips.
	  It delivers digitally programmable output,
	  the voltage is programmed via I2C interface.
	  It's suitable to support PXA988 chips to control VCC_MAIN and
	  various voltages.

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

config REGULATOR_ACT8865
	tristate "Active-semi act8865 voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a active-semi act8865 voltage output
	  regulator via I2C bus.

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_ANATOP
	tristate "Freescale i.MX on-chip ANATOP LDO regulators"
	depends on MFD_SYSCON
	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_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_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_ARIZONA
	tristate "Wolfson Arizona class devices"
	depends on MFD_ARIZONA
	depends on SND_SOC
	help
	  Support for the regulators found on Wolfson Arizona class
	  devices.

config REGULATOR_AS3711
	tristate "AS3711 PMIC"
	depends on MFD_AS3711
	help
	  This driver provides support for the voltage regulators on the
	  AS3711 PMIC

config REGULATOR_AS3722
	tristate "AMS AS3722 PMIC Regulators"
	depends on MFD_AS3722
	help
	  This driver provides support for the voltage regulators on the
	  AS3722 PMIC. This will enable support for all the software
	  controllable DCDC/LDO regulators.

config REGULATOR_AXP20X
	tristate "X-POWERS AXP20X PMIC Regulators"
	depends on MFD_AXP20X
	help
	  This driver provides support for the voltage regulators on the
	  AXP20X PMIC.

config REGULATOR_BCM590XX
	tristate "Broadcom BCM590xx PMU Regulators"
	depends on MFD_BCM590XX
	help
	  This driver provides support for the voltage regulators on the
	  BCM590xx PMUs. This will enable support for the software
	  controllable LDO/Switching regulators.

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_DA9055
	tristate "Dialog Semiconductor DA9055 regulators"
	depends on MFD_DA9055
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  Dialog Semiconductor DA9055 PMIC.

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

config REGULATOR_DA9062
	tristate "Dialog Semiconductor DA9062 regulators"
	depends on MFD_DA9062
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  DA9062 PMICs.

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

config REGULATOR_DA9063
	tristate "Dialog Semiconductor DA9063 regulators"
	depends on MFD_DA9063
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  DA9063 PMICs.

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

config REGULATOR_DA9210
	tristate "Dialog Semiconductor DA9210 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support for the Dialog Semiconductor DA9210.
	  The DA9210 is a multi-phase synchronous step down
	  converter 12A DC-DC Buck controlled through an I2C
	  interface.

config REGULATOR_DA9211
	tristate "Dialog Semiconductor DA9211/DA9212/DA9213/DA9214/DA9215 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support for the Dialog Semiconductor DA9211/DA9212
	  /DA9213/DA9214/DA9215.
	  The DA9211/DA9212/DA9213/DA9214/DA9215 is a multi-phase synchronous
	  step down converter 12A or 16A DC-DC Buck controlled through an I2C
	  interface.

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_FAN53555
	tristate "Fairchild FAN53555 Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports Fairchild FAN53555 Digitally Programmable
	  TinyBuck Regulator. The FAN53555 is a step-down switching voltage
	  regulator that delivers a digitally programmable output from an
	  input voltage supply of 2.5V to 5.5V. The output voltage is
	  programmed through an I2C interface.

config REGULATOR_GPIO
	tristate "GPIO regulator support"
	depends on GPIOLIB || COMPILE_TEST
	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_HI6421
	tristate "HiSilicon Hi6421 PMIC voltage regulator support"
	depends on MFD_HI6421_PMIC && OF
	help
	  This driver provides support for the voltage regulators on the
	  HiSilicon Hi6421 PMU / Codec IC.
	  Hi6421 is a multi-function device which, on regulator part, provides
	  21 general purpose LDOs, 3 dedicated LDOs, and 5 BUCKs. All
	  of them come with support to either ECO (idle) or sleep mode.

config REGULATOR_ISL9305
	tristate "Intersil ISL9305 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports ISL9305 voltage regulator chip.

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

config REGULATOR_LM363X
	tristate "TI LM363X voltage regulators"
	depends on MFD_TI_LMU
	help
	  This driver supports LM3631 and LM3632 voltage regulators for
	  the LCD bias.
	  One boost output voltage is configurable and always on.
	  Other LDOs are used for the display module.

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
	tristate "TI/National Semiconductor LP8720/LP8725 voltage regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports LP8720/LP8725 PMIC

config REGULATOR_LP8755
	tristate "TI LP8755 High Performance PMU driver"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports LP8755 High Performance PMU driver. This
	  chip contains six step-down DC/DC converters which can support
	  9 mode multiphase configuration.

config REGULATOR_LP8788
	tristate "TI LP8788 Power Regulators"
	depends on MFD_LP8788
	help
	  This driver supports LP8788 voltage regulator chip.

config REGULATOR_LTC3589
	tristate "LTC3589 8-output voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This enables support for the LTC3589, LTC3589-1, and LTC3589-2
	  8-output regulators controlled via I2C.

config REGULATOR_MAX14577
	tristate "Maxim 14577/77836 regulator"
	depends on MFD_MAX14577
	help
	  This driver controls a Maxim MAX14577/77836 regulator via I2C bus.
	  The MAX14577 regulators include safeout LDO and charger current
	  regulator. The MAX77836 has two additional LDOs.

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_MAX8907
	tristate "Maxim 8907 voltage regulator"
	depends on MFD_MAX8907
	help
	  This driver controls a Maxim 8907 voltage output regulator
	  via I2C bus. The provided regulator is suitable for Tegra
	  chip to control Step-Down DC-DC and LDOs.

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_MAX8973
	tristate "Maxim MAX8973 voltage regulator "
	depends on I2C
	select REGMAP_I2C
	help
	  The MAXIM MAX8973 high-efficiency. three phase, DC-DC step-down
	  switching regulator delievers up to 9A of output current. Each
	  phase operates at a 2MHz fixed frequency with a 120 deg shift
	  from the adjacent phase, allowing the use of small magnetic component.

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_MAX77693
	tristate "Maxim 77693/77843 regulator"
	depends on (MFD_MAX77693 || MFD_MAX77843)
	help
	  This driver controls a Maxim 77693/77843 regulators via I2C bus.
	  The regulators include two LDOs, 'SAFEOUT1', 'SAFEOUT2'
	  and one current regulator 'CHARGER'. This is suitable for
	  Exynos-4x12 (MAX77693) or Exynos5433 (MAX77843) SoC chips.

config REGULATOR_MAX77802
	tristate "Maxim 77802 regulator"
	depends on MFD_MAX77686
	help
	  This driver controls a Maxim 77802 regulator
	  via I2C bus. The provided regulator is suitable for
	  Exynos5420/Exynos5800 SoCs to control various voltages.
	  It includes support for control of voltage and ramp speed.

config REGULATOR_MC13XXX_CORE
	tristate

config REGULATOR_MC13783
	tristate "Freescale MC13783 regulator driver"
	depends on MFD_MC13XXX
	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_MT6311
	tristate "MediaTek MT6311 PMIC"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6311 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

config REGULATOR_MT6397
	tristate "MediaTek MT6397 PMIC"
	depends on MFD_MT6397
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6397 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

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_PBIAS
	tristate "PBIAS OMAP regulator driver"
	depends on (ARCH_OMAP || COMPILE_TEST) && MFD_SYSCON
	help
	 Say y here to support pbias regulator for mmc1:SD card i/o
	 on OMAP SoCs.
	 This driver provides support for OMAP pbias modelled
	 regulators.

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_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_PFUZE100
	tristate "Freescale PFUZE100/PFUZE200 regulator driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the regulators found on the Freescale
	  PFUZE100/PFUZE200 PMIC.

config REGULATOR_PV88060
	tristate "Powerventure Semiconductor PV88060 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the voltage regulators and convertors
	  PV88060

config REGULATOR_PV88090
	tristate "Powerventure Semiconductor PV88090 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the voltage regulators and convertors
	  on PV88090

config REGULATOR_PWM
	tristate "PWM voltage regulator"
	depends on PWM
	help
	  This driver supports PWM controlled voltage regulators. PWM
	  duty cycle can increase or decrease the voltage.

config REGULATOR_QCOM_RPM
	tristate "Qualcomm RPM regulator driver"
	depends on MFD_QCOM_RPM
	help
	  If you say yes to this option, support will be included for the
	  regulators exposed by the Resource Power Manager found in Qualcomm
	  8660, 8960 and 8064 based devices.

	  Say M here if you want to include support for the regulators on the
	  Qualcomm RPM as a module. The module will be named
	  "qcom_rpm-regulator".

config REGULATOR_QCOM_SMD_RPM
	tristate "Qualcomm SMD based RPM regulator driver"
	depends on QCOM_SMD_RPM
	help
	  If you say yes to this option, support will be included for the
	  regulators exposed by the Resource Power Manager found in Qualcomm
	  8974 based devices.

	  Say M here if you want to include support for the regulators on the
	  Qualcomm RPM as a module. The module will be named
	  "qcom_smd-regulator".

config REGULATOR_QCOM_SPMI
	tristate "Qualcomm SPMI regulator driver"
	depends on SPMI || COMPILE_TEST
	help
	  If you say yes to this option, support will be included for the
	  regulators found in Qualcomm SPMI PMICs.

	  Say M here if you want to include support for the regulators on the
	  Qualcomm SPMI PMICs as a module. The module will be named
	  "qcom_spmi-regulator".

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_RK808
	tristate "Rockchip RK808 Power regulators"
	depends on MFD_RK808
	help
	  Select this option to enable the power regulator of ROCKCHIP
	  PMIC RK808.
	  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_RN5T618
	tristate "Ricoh RN5T618 voltage regulators"
	depends on MFD_RN5T618
	help
	  Say y here to support the regulators found on Ricoh RN5T618 PMIC.

config REGULATOR_RT5033
	tristate "Richtek RT5033 Regulators"
	depends on MFD_RT5033
	help
	  This adds support for voltage and current regulators in Richtek
	  RT5033 PMIC. The device supports multiple regulators like
	  current source, LDO and Buck.

config REGULATOR_S2MPA01
	tristate "Samsung S2MPA01 voltage regulator"
	depends on MFD_SEC_CORE
	help
	 This driver controls Samsung S2MPA01 voltage output regulator
	 via I2C bus. S2MPA01 has 10 Bucks and 26 LDO outputs.

config REGULATOR_S2MPS11
	tristate "Samsung S2MPS11/13/14/15/S2MPU02 voltage regulator"
	depends on MFD_SEC_CORE
	help
	 This driver supports a Samsung S2MPS11/13/14/15/S2MPU02 voltage
	 output regulator via I2C bus. The chip is comprised of high efficient
	 Buck converters including Dual-Phase Buck converter, Buck-Boost
	 converter, various LDOs.

config REGULATOR_S5M8767
	tristate "Samsung S5M8767A voltage regulator"
	depends on MFD_SEC_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_SKY81452
	tristate "Skyworks Solutions SKY81452 voltage regulator"
	depends on MFD_SKY81452
	help
	  This driver supports Skyworks SKY81452 voltage output regulator
	  via I2C bus. SKY81452 has one voltage linear regulator can be
	  programmed from 4.5V to 20V.

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

config REGULATOR_TI_ABB
	tristate "TI Adaptive Body Bias on-chip LDO"
	depends on ARCH_OMAP
	help
	  Select this option to support Texas Instruments' on-chip Adaptive Body
	  Bias (ABB) LDO regulators. It is recommended that this option be
	  enabled on required TI SoC. Certain Operating Performance Points
	  on TI SoCs may be unstable without enabling this as it provides
	  device specific optimized bias to allow/optimize functionality.

config REGULATOR_STW481X_VMMC
	bool "ST Microelectronics STW481X VMMC regulator"
	depends on MFD_STW481X || COMPILE_TEST
	default y if MFD_STW481X
	help
	  This driver supports the internal VMMC regulator in the STw481x
	  PMIC chips.

config REGULATOR_TPS51632
	tristate "TI TPS51632 Power Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports TPS51632 voltage regulator chip.
	  The TPS51632 is 3-2-1 Phase D-Cap+ Step Down Driverless Controller
	  with Serial VID control and DVFS.
	  The voltage output can be configure through I2C interface or PWM
	  interface.

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_TPS65086
	tristate "TI TPS65086 Power regulators"
	depends on MFD_TPS65086
	help
	  This driver provides support for the voltage regulators on
	  TI TPS65086 PMICs.

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_TPS65218
	tristate "TI TPS65218 Power regulators"
	depends on MFD_TPS65218 && OF
	help
	  This driver supports TPS65218 voltage regulator chips. TPS65218
	  provides six step-down converters and one 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_TPS80031
	tristate "TI TPS80031/TPS80032 power regualtor driver"
	depends on MFD_TPS80031
	help
	  TPS80031/ TPS80032 Fully Integrated Power Management with Power
	  Path and Battery Charger. It has 5 configurable step-down
	  converters, 11 general purpose LDOs, VBUS generator and digital
	  output to control regulators.

config REGULATOR_TWL4030
	tristate "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_VEXPRESS
	tristate "Versatile Express regulators"
	depends on VEXPRESS_CONFIG
	help
	  This driver provides support for voltage regulators available
	  on the ARM Ltd's Versatile Express platform.

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

