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_DUMMY
	bool "Provide a dummy regulator if regulator lookups fail"
	help
	  If this option is enabled then when a regulator lookup fails
	  and the board has not specified that it has provided full
	  constraints then the regulator core will provide an always
	  enabled dummy regulator will be provided, allowing consumer
	  drivers to continue.

	  A warning will be generated when this substitution is done.

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_GPIO
	tristate "GPIO regulator support"
	depends on GENERIC_GPIO
	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_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_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_DA903X
	tristate "Dialog Semiconductor DA9030/DA9034 regulators"
	depends on PMIC_DA903X
	help
	  Say y here to support the BUCKs and LDOs regulators found on
	  Dialog Semiconductor DA9030/DA9034 PMIC.

config REGULATOR_DA9052
	tristate "Dialog Semiconductor DA9052/DA9053 regulators"
	depends on PMIC_DA9052
	help
	  This driver supports the voltage regulators of DA9052-BC and
	  DA9053-AA/Bx PMIC.

config REGULATOR_ANATOP
	tristate "Freescale i.MX on-chip ANATOP LDO regulators"
	depends on MFD_ANATOP
	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_MC13XXX_CORE
	tristate

config REGULATOR_MC13783
	tristate "Freescale MC13783 regulator driver"
	depends on MFD_MC13783
	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_ISL6271A
	tristate "Intersil ISL6271A Power regulator"
	depends on I2C
	help
	  This driver supports ISL6271A voltage regulator chip.

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

config REGULATOR_MAX1586
	tristate "Maxim 1586/1587 voltage regulator"
	depends on I2C
	help
	  This driver controls a Maxim 1586 or 1587 voltage output
	  regulator via I2C bus. The provided regulator is suitable
	  for PXA27x chips to control VCC_CORE and VCC_USIM voltages.

config REGULATOR_MAX8649
	tristate "Maxim 8649 voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver controls a Maxim 8649 voltage output regulator via
	  I2C bus.

config REGULATOR_MAX8660
	tristate "Maxim 8660/8661 voltage regulator"
	depends on I2C
	help
	  This driver controls a Maxim 8660/8661 voltage output
	  regulator via I2C bus.

config REGULATOR_MAX8925
	tristate "Maxim MAX8925 Power Management IC"
	depends on MFD_MAX8925
	help
	  Say y here to support the voltage regulaltor of Maxim MAX8925 PMIC.

config REGULATOR_MAX8952
	tristate "Maxim MAX8952 Power Management IC"
	depends on I2C
	help
	  This driver controls a Maxim 8952 voltage output regulator
	  via I2C bus. Maxim 8952 has one voltage output and supports 4 DVS
	  modes ranging from 0.77V to 1.40V by 0.01V steps.

config REGULATOR_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_ONSEMI_NCP6335D
	tristate "OnSemi NCP6335D regulator support"
	depends on I2C
	help
	 This driver supports the OnSemi NCP6335D switching voltage regulator
	 (buck convertor). The regulator is controlled using an I2C interface
	 and supports a programmable voltage range from 0.6V to 1.4V in steps
	 of 6.25mV.

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_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_PCF50633
	tristate "NXP PCF50633 regulator driver"
        depends on MFD_PCF50633
	help
	 Say Y here to support the voltage regulators and convertors
	 on PCF50633

config REGULATOR_S5M8767
	tristate "Samsung S5M8767A voltage regulator"
	depends on MFD_S5M_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_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_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_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 TPS62360 Power Regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports TPS62360 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_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_TPS6524X
	tristate "TI TPS6524X Power regulators"
	depends on SPI
	help
	  This driver supports TPS6524X voltage regulator chips. TPS6524X
	  provides three step-down converters and two general-purpose LDO
	  voltage regulators.  This device is interfaced using a customized
	  serial interface currently supported on the sequencer serial
	  port controller.

config REGULATOR_TPS6586X
	tristate "TI TPS6586X Power regulators"
	depends on MFD_TPS6586X
	help
	  This driver supports TPS6586X voltage regulator chips.

config REGULATOR_TPS65910
	tristate "TI TPS65910/TPS65911 Power Regulators"
	depends on MFD_TPS65910
	help
	  This driver supports TPS65910/TPS65911 voltage regulator chips.

config REGULATOR_TPS65912
	tristate "TI TPS65912 Power regulator"
	depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
	help
	    This driver supports TPS65912 voltage regulator chip.

config REGULATOR_TWL4030
	bool "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_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_PMIC8058
        tristate "PMIC8058 regulator driver"
        depends on PMIC8058 && (ARCH_MSM8X60 || ARCH_FSM9XXX)
        default y if PMIC8058 && (ARCH_MSM8X60 || ARCH_FSM9XXX)
        help
         Say Y here to support the voltage regulators on PMIC8058

config REGULATOR_PMIC8901
        tristate "PMIC8901 regulator driver"
        depends on PMIC8901 && ARCH_MSM8X60
        default y if PMIC8901 && ARCH_MSM8X60
        help
         Say Y here to support the voltage regulators on PMIC8901

config REGULATOR_PM8XXX
	tristate "Qualcomm PM8XXX PMIC Voltage regulators"
	depends on MFD_PM8XXX
	help
	  This driver supports voltage regulators in Qualcomm PM8XXX PMIC chips.
	  PM8XXX chips provide several different varieties of LDO and switching
	  regulators.  They also provide negative charge pumps and voltage
	  switches.

config REGULATOR_MSM_GPIO
	tristate "MSM GPIO regulator"
	depends on GPIOLIB
	help
	  This driver provides a regulator wrapper around a GPIO pin that is set
	  to output.  It is intended to be used for GPIO pins that provide the
	  enable signal to a physical regulator.  The GPIO enable signal can
	  be configured to be active high (default) or active low.

config REGULATOR_PM8058_XO
	tristate "PM8058 XO Buffer driver"
	depends on PMIC8058
	default n
	help
	  This driver supports xo buffer control in the Qualcomm PM8058 PMIC
	  chip. It is only supposed to be used when Linux on application
	  processor is the master in control of XO buffers.

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

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