# SPDX-License-Identifier: GPL-2.0-only
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_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
	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 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_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_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_BD70528
	tristate "ROHM BD70528 Power Regulator"
	depends on MFD_ROHM_BD70528
	help
	  This driver supports voltage regulators on ROHM BD70528 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 bd70528-regulator.

config REGULATOR_BD718XX
	tristate "ROHM BD71837 Power Regulator"
	depends on MFD_ROHM_BD718XX
	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_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_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_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_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_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
	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
	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_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 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
	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_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_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_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_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_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 converters
	 on PCF50633

config REGULATOR_PFUZE100
	tristate "Freescale PFUZE100/200/3000/3001 regulator driver"
	depends on I2C
	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 || 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_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_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_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_SY8106A
	tristate "Silergy SY8106A regulator"
	depends on I2C && (OF || COMPILE_TEST)
	select REGMAP_I2C
	help
	  This driver supports SY8106A 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_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

