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_PROXY_CONSUMER
	bool "Boot time regulator proxy consumer support"
	help
	  This driver provides support for boot time regulator proxy requests.
	  It can enforce a specified voltage range, set a minimum current,
	  and/or keep a regulator enabled.  It is needed in circumstances where
	  reducing one or more of these three quantities will cause hardware to
	  stop working if performed before the driver managing the hardware has
	  probed.

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_STUB
	tristate "Stub Regulator"
	help
	  This driver adds stub regulator support. The driver is absent of any
	  real hardware based implementation. It allows for clients to register
	  their regulator device constraints and use all of the standard
	  regulator interfaces. This is useful for bringing up new platforms
	  when the real hardware based implementation may not be yet available.
	  Clients can use the real regulator device names with proper
	  constraint checking while the real driver is being developed.

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_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 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support for the Dialog Semiconductor DA9211/DA9212
	  /DA9213/DA9214.
	  The DA9211/DA9212/DA9213/DA9214 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_MSM_GFX_LDO
	tristate "MSM GFX LDO Regulator"
	depends on OF
	help
	  This driver supports the MSM GFX (Graphics) LDO regulator. The
	  GFU core is either powered by an internal MSM LDO or by BHS.
	  Typically the lower voltage corners are powered by LDO and
	  the higher ones by BHS. This driver allows for configuration of
	  the rail between the LDO/BHS as well as the LDO voltage.

config REGULATOR_GPIO
	tristate "GPIO regulator support"
	depends on GPIOLIB
	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_MEM_ACC
        tristate "QTI Memory accelerator regulator driver"
        help
         Say y here to enable the memory accelerator driver for Qualcomm
         Technologies (QTI) chips. The accelerator controls delays applied
         for memory accesses.
         This driver configures the power-mode (corner) for the memory
         accelerator.

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

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 MAX77693 regulator"
	depends on MFD_MAX77693
	help
	  This driver controls a Maxim 77693 regulator via I2C bus.
	  The regulators include two LDOs, 'SAFEOUT1', 'SAFEOUT2'
	  and one current regulator 'CHARGER'. This is suitable for
	  Exynos-4x12 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_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_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_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_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/S2MPS14/S2MPU02 voltage regulator"
	depends on MFD_SEC_CORE
	help
	 This driver supports a Samsung S2MPS11/S2MPS14/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 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
	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_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.

config REGULATOR_RPM_SMD
	bool "RPM SMD regulator driver"
	depends on OF
	depends on MSM_RPM_SMD
	help
	  Compile in support for the RPM SMD regulator driver which is used for
	  setting voltages and other parameters of the various power rails
	  supplied by some Qualcomm PMICs. The RPM SMD regulator driver should
	  be used on systems which contain an RPM which communicates with the
	  application processor over SMD.

config REGULATOR_QPNP
	depends on SPMI || MSM_SPMI
	depends on OF_SPMI
	tristate "Qualcomm QPNP regulator support"
	help
	  This driver supports voltage regulators in Qualcomm PMIC chips which
	  comply with QPNP.  QPNP is a SPMI based PMIC implementation.  These
	  chips provide several different varieties of LDO and switching
	  regulators.  They also provide voltage switches and boost regulators.

config REGULATOR_QPNP_LABIBB
	depends on SPMI || MSM_SPMI
	depends on OF_SPMI
	tristate "Qualcomm Technologies, Inc QPNP LAB/IBB regulator support"
	help
	  This driver supports voltage regulators in Qualcomm Technologies, Inc
	  PMIC chips which comply with QPNP LAB/IBB regulators. QPNP LAB and IBB
	  are SPMI based PMIC implementation. LAB regulator can be used as a
	  regular positive boost regulator. IBB can be used as a regular
	  negative boost regulator. LAB/IBB regulators can also be used
	  together for LCD or AMOLED.

config REGULATOR_SPM
	bool "SPM regulator driver"
	depends on (SPMI || MSM_SPMI) && OF_SPMI
	help
	  Enable support for the SPM regulator driver which is used for
	  setting voltages of processor supply regulators via the SPM module
	  found inside of Qualcomm Technologies (QTI) chips.  The SPM regulator
	  driver can be used on QTI SoCs where the APSS processor cores are
	  supplied by their own PMIC regulator.

config REGULATOR_CPR
	bool "RBCPR regulator driver for APC"
	depends on OF
	help
	  Compile in RBCPR (RapidBridge Core Power Reduction) driver to support
	  corner vote for APC power rail. The driver takes PTE process voltage
	  suggestions in efuse as initial settings. It converts corner vote
	  to voltage value before writing to a voltage regulator API, such as
	  that provided by spm-regulator driver.

config REGULATOR_CPR2_GFX
	bool "RBCPR regulator driver for GFX"
	depends on OF
	help
	  This driver supports the CPR (core power reduction) controller for the
	  graphics (GFX) rail. The GFX CPR2 controller monitors the graphics voltage
	  requirements. This driver reads initial voltage values out of hardware
	  fuses and CPR target quotient values out of device tree.

config REGULATOR_CPR3
	bool "CPR3 regulator core support"
	help
	  This driver supports Core Power Reduction (CPR) version 3 controllers
	  which are used by some Qualcomm Technologies, Inc. (QTI) SoCs to
	  manage important voltage regulators.  CPR3 controllers are capable of
	  monitoring several ring oscillator sensing loops simultaneously.  The
	  CPR3 controller informs software when the silicon conditions require
	  the supply voltage to be increased or decreased.  On certain supply
	  rails, the CPR3 controller is able to propagate the voltage increase
	  or decrease requests all the way to the PMIC without software
	  involvement.

config REGULATOR_CPR3_HMSS
	bool "CPR3 regulator for HMSS"
	depends on OF
	select REGULATOR_CPR3
	help
	  This driver supports Qualcomm Technologies, Inc. HMSS application
	  processor specific features including memory array power mux (APM)
	  switching, two CPR3 threads which monitor the two HMSS clusters that
	  are both powered by a shared supply, and hardware closed-loop auto
	  voltage stepping.  This driver reads both initial voltage and CPR
	  target quotient values out of hardware fuses.

config REGULATOR_CPR3_MMSS
	bool "RBCPR3 regulator for MMSS"
	depends on OF
	select REGULATOR_CPR3
	help
	  This driver supports Qualcomm Technologies, Inc. MMSS graphics
	  processor specific features.  The MMSS CPR3 controller only uses one
	  thread to monitor the MMSS voltage requirements.  This driver reads
	  initial voltage values out of hardware fuses and CPR target quotient
	  values out of device tree.

config REGULATOR_CPR4_APSS
	bool "CPR4 regulator for APSS"
	depends on OF
	select REGULATOR_CPR3
	help
	  This driver supports Qualcomm Technologies, Inc. APSS application
	  processor specific features including memory array power mux (APM)
	  switching, one CPR4 thread which monitor the two APSS clusters that
	  are both powered by a shared supply, hardware closed-loop auto
	  voltage stepping, voltage adjustments based on online core count,
	  voltage adjustments based on temperature readings, and voltage
	  adjustments for performance boost mode. This driver reads both initial
	  voltage and CPR target quotient values out of hardware fuses.

config REGULATOR_CPRH_KBSS
	bool "CPRH regulator for KBSS"
	depends on OF
	select REGULATOR_CPR3
	help
	  This driver supports Qualcomm Technologies, Inc. KBSS application
	  processor specific features including CPR hardening (CPRh) and two
	  CPRh controllers which monitor the two KBSS clusters each powered by
	  independent voltage supplies. This driver reads both initial voltage
	  and CPR target quotient values out of hardware fuses.

config REGULATOR_KRYO
	bool "Kryo regulator driver"
	depends on OF
	help
	  Some MSM designs have CPUs that can be directly powered from a common
	  voltage rail via a Block Head Switch (BHS) or an LDO whose output voltage
	  can be configured for use when certain power constraints are met.
	  Say yes to support management of LDO and BHS modes for the clusters in the
	  CPU subsystem.

endif

