# SPDX-License-Identifier: GPL-2.0-only
menuconfig REGULATOR
	bool "Voltage and Current Regulator Support"
	select LINEAR_RANGES
	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_88PG86X
	tristate "Marvell 88PG86X voltage regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports Marvell 88PG867 and 88PG868 voltage regulators.
	  They provide two I2C-controlled DC/DC step-down converters with
	  sleep mode and separate enable pins.

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
	depends on POWER_SUPPLY
	select REGMAP_I2C
	help
	  This driver controls a active-semi act8865 voltage output
	  regulator via I2C bus.

config REGULATOR_ACT8945A
	tristate "Active-semi ACT8945A voltage regulator"
	depends on MFD_ACT8945A
	help
	  This driver controls a active-semi ACT8945A voltage regulator
	  via I2C bus. The ACT8945A features three step-down DC/DC converters
	  and four low-dropout linear regulators, along with a ActivePath
	  battery charger.

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 ARCH_MXC || COMPILE_TEST
	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_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_LDO1
	tristate "Cirrus Madera and Wolfson Arizona class devices LDO1"
	depends on MFD_ARIZONA || MFD_MADERA
	depends on SND_SOC
	help
	  Support for the LDO1 regulators found on Cirrus Logic Madera codecs
	  and Wolfson Microelectronic Arizona codecs.

config REGULATOR_ARIZONA_MICSUPP
	tristate "Cirrus Madera and Wolfson Arizona class devices MICSUPP"
	depends on MFD_ARIZONA || MFD_MADERA
	depends on SND_SOC
	help
	  Support for the MICSUPP regulators found on Cirrus Logic Madera codecs
	  and Wolfson Microelectronic Arizona codecs
	  devices.

config REGULATOR_ARM_SCMI
	tristate "SCMI based regulator driver"
	depends on ARM_SCMI_PROTOCOL && OF
	help
	  This adds the regulator driver support for ARM platforms using SCMI
	  protocol for device voltage management.
	  This driver uses SCMI Message Protocol driver to interact with the
	  firmware providing the device Voltage functionality.

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_ATC260X
	tristate "Actions Semi ATC260x PMIC Regulators"
	depends on MFD_ATC260X
	help
	  This driver provides support for the voltage regulators on the
	  ATC260x PMICs. 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_BD71815
	tristate "ROHM BD71815 Power Regulator"
	depends on MFD_ROHM_BD71828
	select REGULATOR_ROHM
	help
	  This driver supports voltage regulators on ROHM BD71815 PMIC.
	  This will enable support for the software controllable buck
	  and LDO regulators and a current regulator for LEDs.

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

config REGULATOR_BD71828
	tristate "ROHM BD71828 Power Regulator"
	depends on MFD_ROHM_BD71828
	select REGULATOR_ROHM
	help
	  This driver supports voltage regulators on ROHM BD71828 PMIC.
	  This will enable support for the software controllable buck
	  and LDO regulators.

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

config REGULATOR_BD718XX
	tristate "ROHM BD71837 Power Regulator"
	depends on MFD_ROHM_BD718XX
	select REGULATOR_ROHM
	help
	  This driver supports voltage regulators on ROHM BD71837 PMIC.
	  This will enable support for the software controllable buck
	  and LDO regulators.

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

config REGULATOR_BD9571MWV
	tristate "ROHM BD9571MWV Regulators"
	depends on MFD_BD9571MWV
	help
	  This driver provides support for the voltage regulators on the
	  ROHM BD9571MWV PMIC. This will enable support for the software
	  controllable regulator and voltage sampling units.

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

config REGULATOR_BD957XMUF
	tristate "ROHM BD9576MUF and BD9573MUF Regulators"
	depends on MFD_ROHM_BD957XMUF
	help
	  This driver supports voltage regulators on ROHM BD9576MUF and
	  BD9573MUF PMICs.

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

config REGULATOR_CPCAP
	tristate "Motorola CPCAP regulator"
	depends on MFD_CPCAP
	help
	  Say y here for CPCAP regulator found on some Motorola phones
	  and tablets such as Droid 4.

config REGULATOR_CROS_EC
	tristate "ChromeOS EC regulators"
	depends on CROS_EC && OF
	help
	  This driver supports voltage regulators that is connected to ChromeOS
	  EC and controlled through EC host commands.

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

config REGULATOR_DA903X
	tristate "Dialog Semiconductor DA9030/DA9034 regulators"
	depends on PMIC_DA903X
	depends on !CC_IS_CLANG # https://bugs.llvm.org/show_bug.cgi?id=38789
	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 DA9061/62 regulators"
	depends on MFD_DA9062
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  DA9061 and 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 && OF
	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_DA9121
	tristate "Dialog Semiconductor DA9121/DA9122/DA9220/DA9217/DA9130/DA9131/DA9132 regulator"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support for the Dialog Semiconductor DA9121.  The
	  DA9121 is a single channel dual-phase buck converter controlled
	  through an I2C interface.

	  DA9121 Single-channel dual-phase 10A buck converter
	  DA9130 Single-channel dual-phase 10A buck converter (Automotive)
	  DA9217 Single-channel dual-phase  6A buck converter
	  DA9122 Dual-channel single-phase  5A buck converter
	  DA9131 Dual-channel single-phase  5A buck converter (Automotive)
	  DA9220 Dual-channel single-phase  3A buck converter
	  DA9132 Dual-channel single-phase  3A buck converter (Automotive)

	  This driver can also be built as a module. If so, the module
	  will be called da9121-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/DA9223/DA9214/DA9224/DA9215/DA9225 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_FAN53880
	tristate "Fairchild FAN53880 Regulator"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports Fairchild (ON Semiconductor) FAN53880
	  regulator. The regulator is a programmable power management IC
	  (PMIC), it is controlled by I2C and provides one BUCK, one BOOST
	  and four LDO outputs.

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_HI6421V530
	tristate "HiSilicon Hi6421v530 PMIC voltage regulator support"
	depends on MFD_HI6421_PMIC && OF
	help
	  This driver provides support for the voltage regulators on
	  HiSilicon Hi6421v530 PMU / Codec IC.
	  Hi6421v530 is a multi-function device which, on regulator part,
	  provides 5 general purpose LDOs, and all of them come with support
	  to either ECO (idle) or sleep mode.

config REGULATOR_HI655X
	tristate "Hisilicon HI655X PMIC regulators support"
	depends on ARCH_HISI || COMPILE_TEST
	depends on MFD_HI655X_PMIC && OF
	help
	  This driver provides support for the voltage regulators of the
	  Hisilicon Hi655x PMIC device.

config REGULATOR_HI6421V600
	tristate "HiSilicon Hi6421v600 PMIC voltage regulator support"
	depends on MFD_HI6421_SPMI && OF
	select REGMAP
	help
	  This driver provides support for the voltage regulators on
	  HiSilicon Hi6421v600 PMU / Codec IC.
	  This is used on Kirin 3670 boards, like HiKey 970.

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, LM3632 and LM36274 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_LOCHNAGAR
	tristate "Cirrus Logic Lochnagar regulator driver"
	depends on MFD_LOCHNAGAR
	help
	  This enables regulator support on the Cirrus Logic Lochnagar audio
	  development board.

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_LP873X
	tristate "TI LP873X Power regulators"
	depends on MFD_TI_LP873X && OF
	help
	  This driver supports LP873X voltage regulator chips. LP873X
	  provides two step-down converters and two general-purpose LDO
	  voltage regulators. It supports software based voltage control
	  for different voltage domains

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_LP87565
	tristate "TI LP87565 Power regulators"
	depends on MFD_TI_LP87565 && OF
	help
	  This driver supports LP87565 voltage regulator chips. LP87565
	  provides four step-down converters. It supports software based
	  voltage control for different voltage domains

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_LTC3676
	tristate "LTC3676 8-output voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This enables support for the LTC3676
	  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_MAX77620
	tristate "Maxim 77620/MAX20024 voltage regulator"
	depends on MFD_MAX77620 || COMPILE_TEST
	help
	  This driver controls Maxim MAX77620 voltage output regulator
	  via I2C bus. The provided regulator is suitable for Tegra
	  chip to control Step-Down DC-DC and LDOs. Say Y here to
	  enable the regulator driver.

config REGULATOR_MAX77650
	tristate "Maxim MAX77650/77651 regulator support"
	depends on MFD_MAX77650 || COMPILE_TEST
	help
	  Regulator driver for MAX77650/77651 PMIC from Maxim
	  Semiconductor. This device has a SIMO with three independent
	  power rails and an LDO.

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_MAX8893
	tristate "Maxim 8893 voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Maxim 8893 voltage output
	  regulator via I2C bus.

config REGULATOR_MAX8907
	tristate "Maxim 8907 voltage regulator"
	depends on MFD_MAX8907 || COMPILE_TEST
	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 regulator 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
	depends on THERMAL && THERMAL_OF
	select REGMAP_I2C
	help
	  The MAXIM MAX8973 high-efficiency. three phase, DC-DC step-down
	  switching regulator delivers 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 || COMPILE_TEST
	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 || COMPILE_TEST
	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 || COMPILE_TEST
	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_MAX77826
	tristate "Maxim 77826 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Maxim 77826 regulator via I2C bus.
	  The regulator include 15 LDOs, BUCK and BUCK BOOST regulator.
	  It includes support for control of output voltage. This
	  regulator is found on the Samsung Galaxy S5 (klte) smartphone.

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_MCP16502
	tristate "Microchip MCP16502 PMIC"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support the MCP16502 PMIC. This driver supports
	  basic operations (get/set voltage, get/set operating mode)
	  through the regulator interface. In addition it enables
	  suspend-to-ram/standby transition.

config REGULATOR_MP5416
	tristate "Monolithic MP5416 PMIC"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support the MP5416 PMIC. This will enable supports
	  the software controllable 4 buck and 4 LDO regulators.
	  Say M here if you want to include support for the regulator as a
	  module.

config REGULATOR_MP8859
	tristate "MPS MP8859 regulator driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the MP8859 voltage regulator. This driver
	  supports basic operations (get/set voltage) through the regulator
	  interface.
	  Say M here if you want to include support for the regulator as a
	  module. The module will be named "mp8859".

config REGULATOR_MP886X
	tristate "MPS MP8869 regulator driver"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports the MP8869 voltage regulator.

config REGULATOR_MPQ7920
	tristate "Monolithic MPQ7920 PMIC"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support the MPQ7920 PMIC. This will enable supports
	  the software controllable 4 buck and 5 LDO regulators.
	  This driver supports the control of different power rails of device
	  through regulator interface.

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_MT6315
	tristate "MediaTek MT6315 PMIC"
	depends on SPMI
	select REGMAP_SPMI
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6315 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

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

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

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

config REGULATOR_MT6360
	tristate "MT6360 SubPMIC Regulator"
	depends on MFD_MT6360
	help
	  Say Y here to enable MT6360 regulator support.
	  This is support MT6360 PMIC/LDO part include
	  2-channel buck with Thermal Shutdown and Overload Protection
	  6-channel High PSRR and Low Dropout LDO.

config REGULATOR_MT6380
	tristate "MediaTek MT6380 PMIC"
	depends on MTK_PMIC_WRAP
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6380 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_MTK_DVFSRC
	tristate "MediaTek DVFSRC regulator driver"
	depends on MTK_DVFSRC
	help
	  Say y here to control regulator by DVFSRC (dynamic voltage
	  and frequency scaling resource collector).
	  This driver supports to control regulators via the DVFSRC
	  of Mediatek. It allows for voting on regulator state
	  between multiple users.

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_PCA9450
	tristate "NXP PCA9450A/PCA9450B/PCA9450C regulator driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the NXP PCA9450A/PCA9450B/PCA9450C PMIC
	  regulator driver.

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 converters
	 on PCF50633

config REGULATOR_PF8X00
	tristate "NXP PF8100/PF8121A/PF8200 regulator driver"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support the regulators found on the NXP
	  PF8100/PF8121A/PF8200 PMIC.

	  Say M here if you want to support for the regulators found
	  on the NXP PF8100/PF8121A/PF8200 PMIC. The module will be named
	  "pf8x00-regulator".

config REGULATOR_PFUZE100
	tristate "Freescale PFUZE100/200/3000/3001 regulator driver"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  Say y here to support the regulators found on the Freescale
	  PFUZE100/200/3000/3001 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_PV88080
	tristate "Powerventure Semiconductor PV88080 regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the buck convertors on PV88080

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_RPMH
	tristate "Qualcomm Technologies, Inc. RPMh regulator driver"
	depends on QCOM_RPMH || (QCOM_RPMH=n && COMPILE_TEST)
	depends on QCOM_COMMAND_DB || (QCOM_COMMAND_DB=n && COMPILE_TEST)
	help
	  This driver supports control of PMIC regulators via the RPMh hardware
	  block found on Qualcomm Technologies Inc. SoCs.  RPMh regulator
	  control allows for voting on regulator state between multiple
	  processors within the SoC.

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_QCOM_USB_VBUS
	tristate "Qualcomm USB Vbus regulator driver"
	depends on SPMI || COMPILE_TEST
	help
	  If you say yes to this option, support will be included for the
	  regulator used to enable the VBUS output.

	  Say M here if you want to include support for enabling the VBUS output
	  as a module. The module will be named "qcom_usb_vbus_regulator".

config REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY
	tristate "Raspberry Pi 7-inch touchscreen panel ATTINY regulator"
	depends on BACKLIGHT_CLASS_DEVICE
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports ATTINY regulator on the Raspberry Pi 7-inch
	  touchscreen unit. The regulator is used to enable power to the
	  TC358762, display and to control backlight.

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 RK805/RK808/RK809/RK817/RK818 Power regulators"
	depends on MFD_RK808
	help
	  Select this option to enable the power regulator of ROCKCHIP
	  PMIC RK805,RK809&RK817,RK808 and RK818.
	  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 RN5T567/618 voltage regulators"
	depends on MFD_RN5T618
	help
	  Say y here to support the regulators found on Ricoh RN5T567,
	  RN5T618 or RC5T619 PMIC.

config REGULATOR_ROHM
	tristate

config REGULATOR_RT4801
	tristate "Richtek RT4801 Regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulators in Richtek RT4801 Display Bias IC.
	  The device supports two regulators (DSVP/DSVN).

config REGULATOR_RT4831
	tristate "Richtek RT4831 DSV Regulators"
	depends on MFD_RT4831
	help
	  This adds support for voltage regulators in Richtek RT4831.
	  There are three regulators (VLCM/DSVP/DSVN).
	  VLCM is a virtual voltage input for DSVP/DSVN inside IC.
	  And DSVP/DSVN is the real Vout range from 4V to 6.5V.
	  It's common used to provide the power for the display panel.

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_RT6160
	tristate "Richtek RT6160 BuckBoost voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulator in Richtek RT6160.
	  This device automatically change voltage output mode from
	  Buck or Boost. The mode transition depend on the input source voltage.
	  The wide output range is from 2025mV to 5200mV and can be used on most
	  common application scenario.

config REGULATOR_RT6245
	tristate "Richtek RT6245 voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for Richtek RT6245 voltage regulator.
	  It can support up to 14A output current and adjustable output voltage
	  from 0.4375V to 1.3875V, per step 12.5mV.

config REGULATOR_RTQ2134
	tristate "Richtek RTQ2134 SubPMIC Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver adds support for RTQ2134 SubPMIC regulators.
	  The RTQ2134 is a multi-phase, programmable power management IC that
	  integrate with four high efficient, synchronous step-down converter
	  cores. It features wide output voltage range and the capability to
	  configure the corresponding power stages.

config REGULATOR_RTMV20
	tristate "Richtek RTMV20 Laser Diode Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver adds support for the load switch current regulator on
	  the Richtek RTMV20. It can support the load current up to 6A and
	  integrate strobe/vsync/fsin signal to synchronize the IR camera.

config REGULATOR_RTQ6752
	tristate "Richtek RTQ6752 TFT LCD voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver adds support for Richtek RTQ6752. RTQ6752 includes two
	  synchronous boost converters for PAVDD, and one synchronous NAVDD
	  buck-boost. This device is suitable for automotive TFT-LCD panel.

config REGULATOR_S2MPA01
	tristate "Samsung S2MPA01 voltage regulator"
	depends on MFD_SEC_CORE || COMPILE_TEST
	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 || COMPILE_TEST
	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 || COMPILE_TEST
	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_SC2731
	tristate "Spreadtrum SC2731 power regulator driver"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	help
	  This driver provides support for the voltage regulators on the
	  SC2731 PMIC.

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_SLG51000
	tristate "Dialog Semiconductor SLG51000 regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support for the Dialog Semiconductor SLG51000.
	  The SLG51000 is seven compact and customizable low dropout
	  regulators.

config REGULATOR_STM32_BOOSTER
	tristate "STMicroelectronics STM32 BOOSTER"
	depends on ARCH_STM32 || COMPILE_TEST
	help
	  This driver supports internal booster (3V3) embedded in some
	  STMicroelectronics STM32 chips. It can be used to supply ADC analog
	  input switches when vdda supply is below 2.7V.

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

config REGULATOR_STM32_VREFBUF
	tristate "STMicroelectronics STM32 VREFBUF"
	depends on ARCH_STM32 || COMPILE_TEST
	help
	  This driver supports STMicroelectronics STM32 VREFBUF (voltage
	  reference buffer) which can be used as voltage reference for
	  internal ADCs, DACs and also for external components through
	  dedicated Vref+ pin.

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

config REGULATOR_STM32_PWR
	bool "STMicroelectronics STM32 PWR"
	depends on ARCH_STM32 || COMPILE_TEST
	help
	  This driver supports internal regulators (1V1, 1V8, 3V3) in the
	  STMicroelectronics STM32 chips.

config REGULATOR_STPMIC1
	tristate "STMicroelectronics STPMIC1 PMIC Regulators"
	depends on MFD_STPMIC1
	help
	  This driver supports STMicroelectronics STPMIC1 PMIC voltage
	  regulators and switches. The STPMIC1 regulators supply power to
	  an application processor as well as to external system
	  peripherals such as DDR, Flash memories and system devices.

	  To compile this driver as a module, choose M here: the
	  module will be called stpmic1_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_SY7636A
	tristate "Silergy SY7636A voltage regulator"
	depends on MFD_SY7636A
	help
	  This driver supports Silergy SY3686A voltage regulator.

config REGULATOR_SY8106A
	tristate "Silergy SY8106A regulator"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports SY8106A single output regulator.

config REGULATOR_SY8824X
	tristate "Silergy SY8824C/SY8824E regulator"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports SY8824C single output regulator.

config REGULATOR_SY8827N
	tristate "Silergy SY8827N regulator"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports SY8827N single output regulator.

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_TPS65132
	tristate "TI TPS65132 Dual Output Power regulators"
	depends on I2C && GPIOLIB
	select REGMAP_I2C
	help
	  This driver supports TPS65132 single inductor - dual output
	  power supply specifically designed for display panels.

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
	help
	    This driver supports TPS65912 voltage regulator chip.

config REGULATOR_TPS80031
	tristate "TI TPS80031/TPS80032 power regulator 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_UNIPHIER
	tristate "UniPhier regulator driver"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF
	select REGMAP_MMIO
	default ARCH_UNIPHIER
	help
	  Support for regulators implemented on Socionext UniPhier SoCs.

config REGULATOR_VCTRL
	tristate "Voltage controlled regulators"
	depends on OF
	help
	  This driver provides support for voltage regulators whose output
	  voltage is controlled by the voltage of another regulator.

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_VQMMC_IPQ4019
	tristate "IPQ4019 VQMMC SD LDO regulator support"
	depends on ARCH_QCOM
	help
	  This driver provides support for the VQMMC LDO I/0
	  voltage regulator of the IPQ4019 SD/EMMC controller.

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_QCOM_LABIBB
	tristate "QCOM LAB/IBB regulator support"
	depends on SPMI || COMPILE_TEST
	help
	  This driver supports Qualcomm's LAB/IBB regulators present on the
	  Qualcomm's PMIC chip pmi8998. QCOM LAB and IBB are SPMI
	  based PMIC implementations. LAB can be used as positive
	  boost regulator and IBB can be used as a negative boost regulator
	  for LCD display panel.

endif

