# 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_NETLINK_EVENTS
	bool "Enable support for receiving regulator events via netlink"
	depends on NET
	help
	  Enabling this option allows the kernel to broadcast regulator events using
	  the netlink mechanism. User-space applications can subscribe to these events
	  for real-time updates on various regulator events.

	  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_88PM886
	tristate "Marvell 88PM886 voltage regulators"
	depends on MFD_88PM886_PMIC
	help
	  This driver implements support for Marvell 88PM886 voltage regulators.

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_ADP5055
	tristate "Analog Devices ADP5055 Triple Buck Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls an Analog Devices ADP5055 with triple buck
	  regulators using an I2C interface.

	  Say M here if you want to include support for the regulator as a
	  module.

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

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_BD96801
	tristate "ROHM BD96801 Power Regulator"
	depends on MFD_ROHM_BD96801
	select REGULATOR_ROHM
	help
	  This driver supports voltage regulators on ROHM BD96801 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 bd96801-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://llvm.org/pr38789
	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
	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_MAX5970
	tristate "Maxim 5970/5978 power switch and monitor"
	depends on I2C
	depends on OF
	depends on MFD_MAX5970
	help
	  This driver controls a Maxim 5970/5978 switch via I2C bus.
	  The MAX5970/5978 is a smart switch with no output regulation, but
	  fault protection and voltage and current monitoring capabilities.

config REGULATOR_MAX77503
	tristate "Analog Devices MAX77503 Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Analog Devices MAX77503 14V input, 1.5A
	  high-efficiency buck converter via I2C bus.
	  Say M here if you want to include support for the regulator as a
	  module.

config REGULATOR_MAX77541
	tristate "Analog Devices MAX77541/77540 Regulator"
	depends on MFD_MAX77541
	help
	  This driver controls a Analog Devices MAX77541/77540 regulators
	  via I2C bus. Both MAX77540 and MAX77541 are dual-phase
	  high-efficiency buck converter. Say Y here to
	  enable the regulator driver.
	  Say M here if you want to include support for the regulator as a
	  module.

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_MAX77857
	tristate "ADI MAX77857/MAX77831 regulator support"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a ADI MAX77857 and MAX77831 regulators.
	  via I2C bus. MAX77857 and MAX77831 are high efficiency buck-boost
	  converters with input voltage range (2.5V to 16V). Say Y here to
	  enable the regulator driver

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 MAX8973A voltage regulator"
	depends on I2C
	depends on THERMAL && THERMAL_OF
	select REGMAP_I2C
	help
	  The MAXIM MAX8973A 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_MAX20086
	tristate "Maxim MAX20086-MAX20089 Camera Power Protectors"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Maxim MAX20086-MAX20089 camera power
	  protectorvia I2C bus. The regulator has 2 or 4 outputs depending on
	  the device model. This driver is only capable to turn on/off them.

config REGULATOR_MAX20411
	tristate "Maxim MAX20411 High-Efficiency Single Step-Down Converter"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls the Maxim MAX20411 family of high-efficiency,
	  syncrhonous step-down converters.

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

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

config REGULATOR_MT6357
	tristate "MediaTek MT6357 PMIC"
	depends on MFD_MT6397
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6357 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_MT6370
	tristate "MT6370 SubPMIC Regulator"
	depends on MFD_MT6370
	help
	  Say Y here to enable MT6370 regulator support.
	  This driver supports the control for DisplayBias voltages and one
	  general purpose LDO which is commonly used to drive the vibrator.

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_PF9453
	tristate "NXP PF9453 regulator driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say y here to support the NXP PF9453 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_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_PM8008
	tristate "Qualcomm PM8008 PMIC regulators"
	depends on MFD_QCOM_PM8008
	help
	  Select this option to enable support for the voltage regulators in
	  Qualcomm PM8008 PMICs.

config REGULATOR_QCOM_REFGEN
	tristate "Qualcomm REFGEN regulator driver"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on HAS_IOMEM
	depends on REGMAP
	help
	  This driver supports the MMIO-mapped reference voltage regulator,
	  used internally by some PHYs on many Qualcomm SoCs.

	  Say M here if you want to include support for this regulator as
	  a module. The module will be named "qcom-refgen-regulator".

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_RAA215300
	tristate "Renesas RAA215300 driver"
	select REGMAP_I2C
	depends on COMMON_CLK
	depends on I2C
	help
	  If you say yes to this option, support will be included for the
	  Renesas RAA215300 PMIC.

	  Say M here if you want to include support for Renesas RAA215300 PMIC
	  as a module. The module will be named "raa215300".

config REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY
	tristate "Raspberry Pi 7-inch touchscreen panel ATTINY regulator"
	depends on BACKLIGHT_CLASS_DEVICE
	depends on I2C
	depends on OF_GPIO
	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_RASPBERRYPI_TOUCHSCREEN_V2
	tristate "Raspberry Pi 7-inch touchscreen panel V2 regulator"
	depends on GPIOLIB
	depends on I2C && OF
	select GPIO_REGMAP
	select REGMAP_I2C
	help
	  This driver supports regulator on the V2 Raspberry Pi touchscreen
	  unit. The regulator is used to enable power to the display and to
	  control backlight PWM.

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_RK8XX
	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_RT4803
	tristate "Richtek RT4803 boost regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for RT4803 boost converter that integrates the
	  bypass switch. If the input voltage is low than the required voltage,
	  RT4803 will enter boost mode. Otherwise, enable internal bypass
	  switch to enter bypass mode.

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_RT5120
	tristate "Richtek RT5120 PMIC Regulators"
	depends on MFD_RT5120
	help
	  This adds support for voltage regulator in Richtek RT5120 PMIC.
	  It integrates 4 channels buck controller, 1 channel LDO, 1 EXTEN
	  to control external power source. Only BUCK1 is adjustable from
	  600mV to 1395mV, per step 6.250mV. The others are all fixed voltage
	  by external hardware circuit.

config REGULATOR_RT5190A
	tristate "Richtek RT5190A PMIC"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulator in Richtek RT5190A PMIC.
	  It integratas 1 channel buck controller, 3 channels high efficiency
	  buck converters, 1 LDO, mute AC OFF depop function, with the general
	  I2C control interface.

config REGULATOR_RT5739
	tristate "Richtek RT5739 Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulator in Richtek RT5739.
	  It's a step-down switching voltage regulator. Using a proprietary
	  architecture with synchronous rectification, it is capable of
	  delivering 3.5A continuously at over 80% efficiency.

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

config REGULATOR_RT5759
	tristate "Richtek RT5759 Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulator in Richtek RT5759.
	  The RT5759 is a high-performance, synchronous step-down DC-DC
	  converter that can deliver up to 9A output current from 3V to 6.5V
	  input supply.

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_RT6190
	tristate "Richtek RT6190 4-Switch BuckBoost controller"
	depends on I2C
	select REGMAP_I2C
	help
	  The RT6190 is a 4-Switch BuckBoost controller designed for converting
	  input voltage to output voltage that can be equal to, higher or lower
	  than input voltage. It operates with wide input voltage range from
	  4.5V to 36V, and the output voltage can be set from 3V to 36V by
	  external FB pin.

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_RTQ2208
	tristate "Richtek RTQ2208 SubPMIC Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver adds support for RTQ2208 SubPMIC regulators.
	  The RTQ2208 is a multi-phase, programmable power management IC that
	  integrate with dual multi-configurable, synchronous buck converters
	  and two ldos. It features wide output voltage range from 0.4V to 2.05V
	  and the capability to configure the corresponding power stages.

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/05 voltage regulator"
	depends on MFD_SEC_CORE || COMPILE_TEST
	help
	 This driver supports a Samsung S2MPS11/13/14/15/S2MPU02/05 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 || COMPILE_TEST
	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_SUN20I
	tristate "Allwinner D1 internal LDOs"
	depends on ARCH_SUNXI || COMPILE_TEST
	select MFD_SYSCON
	default ARCH_SUNXI
	help
	  This driver supports the internal LDOs in the Allwinner D1 SoC.

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
	select REGMAP_I2C
	help
	  This driver supports SY8106A single output regulator.

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

config REGULATOR_SY8827N
	tristate "Silergy SY8827N regulator"
	depends on I2C && OF
	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_TPS6286X
	tristate "TI TPS6286x Power Regulator"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  This driver supports TPS6236x voltage regulator chips. These are
	  high-frequency synchronous step-down converters with an I2C
	  interface.

config REGULATOR_TPS6287X
	tristate "TI TPS6287x Power Regulator"
	depends on I2C && OF
	select REGMAP_I2C
	help
	  This driver supports TPS6287x voltage regulator chips. These are
	  pin-to-pin high-frequency synchronous step-down dc-dc converters
	  with an I2C interface.

	  If built as a module it will be called tps6287x-regulator.

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_TPS65219
	tristate "TI TPS65219 Power regulators"
	depends on MFD_TPS65219 && OF
	help
	  This driver supports TPS65219, TPS65215, and TPS65214 voltage
	  regulator chips.
	  TPS65219 series of PMICs have 3 single phase BUCKs & 4 LDOs
	  voltage regulators.
	  TPS65215 PMIC has 3 single phase BUCKs & 2 LDOs.
	  TPS65214 PMIC has 3 synchronous stepdown DC-DC converters & 2
	  LDOs. One LDO supports a maximum output current of 300 mA and the
	  other a maximum of 500 mA
	  All 3 PMICs support software based voltage control for different
	  voltage domains.

config REGULATOR_TPS6594
	tristate "TI TPS6594 Power regulators"
	depends on MFD_TPS6594 && OF
	default MFD_TPS6594
	help
	  This driver supports TPS6594 series and TPS65224 voltage regulator chips.
	  TPS6594 series of PMICs have 5 BUCKs and 4 LDOs
	  voltage regulators.
	  BUCKs 1,2,3,4 can be used in single phase or multiphase mode.
	  Part number defines which single or multiphase mode is i used.
	  It supports software based voltage control
	  for different voltage domains.
	  TPS65224 PMIC has 4 BUCKs and 3 LDOs. BUCK12 can be used in dual phase.
	  All BUCKs and LDOs volatge can be controlled through software.

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_TPS68470
	tristate "TI TPS68470 PMIC Regulators Driver"
	depends on INTEL_SKL_INT3472 || COMPILE_TEST
	help
	  This driver adds support for the TPS68470 PMIC to register
	  regulators against the usual framework.

	  The module will be called "tps68470-regulator".

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_RZG2L_VBCTRL
	tristate "Renesas RZ/G2L USB VBUS regulator driver"
	depends on RESET_RZG2L_USBPHY_CTRL || COMPILE_TEST
	depends on OF
	select REGMAP_MMIO
	default RESET_RZG2L_USBPHY_CTRL
	help
	  Support for VBUS regulators implemented on Renesas RZ/G2L 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
