menuconfig POWER
	 bool "Power"
	 default y
	 help
	  Enable support for power control in U-Boot. This includes support
	  for PMICs (Power-management Integrated Circuits) and some of the
	  features provided by PMICs. In particular, voltage regulators can
	  be used to enable/disable power and vary its voltage. That can be
	  useful in U-Boot to turn on boot peripherals and adjust CPU voltage
	  so that the clock speed can be increased. This enables the drivers
	  in drivers/power, drivers/power/pmic and drivers/power/regulator
	  as part of a build.

if POWER

config POWER_LEGACY
	bool "Legacy power support"
	help
	  Note: This is a legacy option. Use DM_PMIC instead.

	  Enable support for power control in U-Boot. This includes support
	  for PMICs (Power-management Integrated Circuits) and some of the
	  features provided by PMICs. In particular, voltage regulators can
	  be used to enable/disable power and vary its voltage. That can be
	  useful in U-Boot to turn on boot peripherals and adjust CPU voltage
	  so that the clock speed can be increased. This enables the drivers
	  in drivers/power, drivers/power/pmic and drivers/power/regulator
	  as part of a build.

config SPL_POWER_LEGACY
	bool "Legacy power support in SPL"
	depends on SPL && !SPL_DM_PMIC
	default y if POWER_LEGACY
	help
	  Note: This is a legacy option. Use SPL_DM_PMIC instead.

	  Enable support for power control in SPL. This includes support
	  for PMICs (Power-management Integrated Circuits) and some of the
	  features provided by PMICs. In particular, voltage regulators can
	  be used to enable/disable power and vary its voltage. That can be
	  useful in SPL to turn on boot peripherals and adjust CPU voltage
	  so that the clock speed can be increased. This enables the drivers
	  in drivers/power, drivers/power/pmic and drivers/power/regulator
	  as part of a build.

source "drivers/power/acpi_pmc/Kconfig"

source "drivers/power/domain/Kconfig"

source "drivers/power/pmic/Kconfig"

source "drivers/power/regulator/Kconfig"

choice
	prompt "Select Sunxi PMIC Variant"
	depends on ARCH_SUNXI
	default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
	default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_R40
	default AXP305_POWER if MACH_SUN50I_H616
	default AXP818_POWER if MACH_SUN8I_A83T
	default SUNXI_NO_PMIC if MACH_SUNXI_H3_H5 || MACH_SUN50I || MACH_SUN8I_V3S

config SUNXI_NO_PMIC
	bool "board without a pmic"
	---help---
	Select this for boards which do not use a PMIC.

config AXP152_POWER
	bool "axp152 pmic support"
	depends on MACH_SUN5I
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Select this to enable support for the axp152 pmic found on most
	A10s boards.

config AXP209_POWER
	bool "axp209 pmic support"
	depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_V3S
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Select this to enable support for the axp209 pmic found on most
	A10, A13 and A20 boards.

config AXP221_POWER
	bool "axp221 / axp223 pmic support"
	depends on MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_R40
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Select this to enable support for the axp221/axp223 pmic found on most
	A23 and A31 boards.

config AXP305_POWER
	bool "axp305 pmic support"
	depends on MACH_SUN50I_H616
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Select this to enable support for the axp305 pmic found on most
	H616 boards.

config AXP313_POWER
	bool "axp313 pmic support"
	depends on MACH_SUN50I_H616
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Select this to enable support for the AXP313 PMIC found on some
	H616 boards.

config AXP809_POWER
	bool "axp809 pmic support"
	depends on MACH_SUN9I
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Say y here to enable support for the axp809 pmic found on A80 boards.

config AXP818_POWER
	bool "axp818 pmic support"
	depends on MACH_SUN8I_A83T
	select AXP_PMIC_BUS
	select CMD_POWEROFF
	---help---
	Say y here to enable support for the axp818 pmic found on
	A83T dev board.

config SY8106A_POWER
	bool "SY8106A pmic support"
	depends on MACH_SUNXI_H3_H5
	---help---
	Select this to enable support for the SY8106A pmic found on some
	H3 boards.

endchoice

config AXP_DCDC1_VOLT
	int "axp pmic dcdc1 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 3300 if AXP818_POWER || MACH_SUN8I_R40
	default 3000 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
	---help---
	Set the voltage (mV) to program the axp pmic dcdc1 at, set to 0 to
	disable dcdc1. On A23 / A31 / A33 (axp221) boards dcdc1 is used for
	generic 3.3V IO voltage for external devices like the lcd-panal and
	sdcard interfaces, etc. On most boards dcdc1 is undervolted to 3.0V to
	save battery. On A31 devices dcdc1 is also used for VCC-IO. On A83T
	dcdc1 is used for VCC-IO, nand, usb0, sd , etc. On A80 dcdc1 normally
	powers some of the pingroups, NAND/eMMC, SD/MMC, and USB OTG.

config AXP_DCDC2_VOLT
	int "axp pmic dcdc2 voltage"
	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP313_POWER
	default 900 if AXP818_POWER
	default 1400 if AXP152_POWER || AXP209_POWER
	default 1000 if AXP313_POWER
	default 1200 if MACH_SUN6I
	default 1100 if MACH_SUN8I
	default 0 if MACH_SUN9I
	---help---
	Set the voltage (mV) to program the axp pmic dcdc2 at, set to 0 to
	disable dcdc2.
	On A10(s) / A13 / A20 boards dcdc2 is VDD-CPU and should be 1.4V.
	On A31 boards dcdc2 is used for VDD-GPU and should be 1.2V.
	On A23/A33 boards dcdc2 is used for VDD-SYS and should be 1.1V.
	On A80 boards dcdc2 powers the GPU and can be left off.
	On A83T boards dcdc2 is used for VDD-CPUA(cluster 0) and should be 0.9V.
	On R40 boards dcdc2 is VDD-CPU and should be 1.1V
	On boards using the AXP313 it's often VDD-CPU.

config AXP_DCDC3_VOLT
	int "axp pmic dcdc3 voltage"
	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP313_POWER
	default 900 if AXP809_POWER || AXP818_POWER
	default 1500 if AXP152_POWER
	default 1250 if AXP209_POWER
	default 1100 if AXP313_POWER
	default 1100 if MACH_SUN8I_R40
	default 1200 if MACH_SUN6I || MACH_SUN8I
	---help---
	Set the voltage (mV) to program the axp pmic dcdc3 at, set to 0 to
	disable dcdc3.
	On A10(s) / A13 / A20 boards with an axp209 dcdc3 is VDD-INT-DLL and
	should be 1.25V.
	On A10s boards with an axp152 dcdc3 is VCC-DRAM and should be 1.5V.
	On A23 / A31 / A33 boards dcdc3 is VDD-CPU and should be 1.2V.
	On A80 boards dcdc3 is used for VDD-CPUA(cluster 0) and should be 0.9V.
	On A83T boards dcdc3 is used for VDD-CPUB(cluster 1) and should be 0.9V.
	On R40 boards dcdc3 is VDD-SYS and VDD-GPU and should be 1.1V.
	On boards using the AXP313 it's often VDD-DRAM and should be 1.1V for LPDDR4.

config AXP_DCDC4_VOLT
	int "axp pmic dcdc4 voltage"
	depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP305_POWER
	default 1250 if AXP152_POWER
	default 1200 if MACH_SUN6I
	default 0 if MACH_SUN8I
	default 900 if MACH_SUN9I
	default 1500 if AXP305_POWER
	---help---
	Set the voltage (mV) to program the axp pmic dcdc4 at, set to 0 to
	disable dcdc4.
	On A10s boards with an axp152 dcdc4 is VDD-INT-DLL and should be 1.25V.
	On A31 boards dcdc4 is used for VDD-SYS and should be 1.2V.
	On A23 / A33 boards dcdc4 is unused and should be disabled.
	On A80 boards dcdc4 powers VDD-SYS, HDMI, USB OTG and should be 0.9V.
	On A83T boards dcdc4 is used for VDD-GPU.
	On H616 boards dcdcd is used for VCC-DRAM.

config AXP_DCDC5_VOLT
	int "axp pmic dcdc5 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 1500 if MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
	---help---
	Set the voltage (mV) to program the axp pmic dcdc5 at, set to 0 to
	disable dcdc5.
	On A23 / A31 / A33 / A80 / A83T / R40 boards dcdc5 is VCC-DRAM and
	should be 1.5V, 1.35V if DDR3L is used.

config AXP_ALDO1_VOLT
	int "axp pmic (a)ldo1 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 0 if MACH_SUN6I || MACH_SUN8I_R40
	default 1800 if MACH_SUN8I_A83T
	default 3000 if MACH_SUN8I || MACH_SUN9I
	---help---
	Set the voltage (mV) to program the axp pmic aldo1 at, set to 0 to
	disable aldo1.
	On A31 boards aldo1 is often used to power the wifi module.
	On A23 / A33 boards aldo1 is used for VCC-IO and should be 3.0V.
	On A80 boards aldo1 powers the USB hosts and should be 3.0V.
	On A83T / H8 boards aldo1 is used for MIPI CSI, DSI, HDMI, EFUSE, and
	should be 1.8V.

config AXP_ALDO2_VOLT
	int "axp pmic (a)ldo2 voltage"
	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 3000 if AXP152_POWER || AXP209_POWER
	default 0 if MACH_SUN6I || MACH_SUN9I
	default 1800 if MACH_SUN8I_A83T
	default 2500 if MACH_SUN8I
	---help---
	Set the voltage (mV) to program the axp pmic aldo2 at, set to 0 to
	disable aldo2.
	On A10(s) / A13 / A20 boards aldo2 is AVCC and should be 3.0V.
	On A31 boards aldo2 is typically unused and should be disabled.
	On A31 boards aldo2 may be used for LPDDR2 then it should be 1.8V.
	On A23 / A33 boards aldo2 is used for VDD-DLL and should be 2.5V.
	On A80 boards aldo2 powers PB pingroup and camera IO and can be left off.
	On A83T / H8 boards aldo2 powers VDD-DLL, VCC18-PLL, CPVDD, VDD18-ADC,
	LPDDR2, and the codec. It should be 1.8V.

config AXP_ALDO3_VOLT
	int "axp pmic (a)ldo3 voltage"
	depends on AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 0 if AXP209_POWER || MACH_SUN9I
	default 3000 if MACH_SUN6I || MACH_SUN8I
	---help---
	Set the voltage (mV) to program the axp pmic aldo3 at, set to 0 to
	disable aldo3.
	On A10(s) / A13 / A20 boards aldo3 should be 2.8V.
	On A23 / A31 / A33 / R40 boards aldo3 is VCC-PLL and AVCC and should
	be 3.0V.
	On A80 boards aldo3 is normally not used.
	On A83T / H8 boards aldo3 is AVCC, VCC-PL, and VCC-LED, and should be
	3.0V.

choice
	prompt "axp pmic (a)ldo3 voltage rate control"
	depends on AXP209_POWER
	default AXP_ALDO3_VOLT_SLOPE_NONE
	---help---
	The AXP can slowly ramp up voltage to reduce the inrush current when
	changing voltages.
	Note, this does not apply when enabling/disabling LDO3. See
	"axp pmic (a)ldo3 inrush quirk" below to enable a slew rate to limit
	inrush current on broken board designs.

config AXP_ALDO3_VOLT_SLOPE_NONE
	bool "No voltage slope"
	---help---
	Tries to reach the next voltage setting near instantaneously. Measurements
	indicate that this is about 0.0167 V/uS.

config AXP_ALDO3_VOLT_SLOPE_16
	bool "1.6 mV per uS"
	---help---
	Increases the voltage by 1.6 mV per uS until the final voltage has
	been reached. Note that the scaling is in 25 mV steps and thus
	the slew rate in reality is about 25 mV/31.250 uS.

config AXP_ALDO3_VOLT_SLOPE_08
	bool "0.8 mV per uS"
	---help---
	Increases the voltage by 0.8 mV per uS until the final voltage has
	been reached. Note that the scaling is in 25 mV steps however and thus
	the slew rate in reality is about 25 mV/15.625 uS.
	This is the slowest supported rate.

endchoice

config AXP_ALDO3_INRUSH_QUIRK
	bool "axp pmic (a)ldo3 inrush quirk"
	depends on AXP209_POWER
	---help---
	The reference design denotes a value of 4.7 uF for the output capacitor
	of LDO3. Some boards have too high capacitance causing 	an inrush current
	and resulting an AXP209 shutdown.

config AXP_ALDO4_VOLT
	int "axp pmic (a)ldo4 voltage"
	depends on AXP209_POWER
	default 0 if AXP209_POWER
	---help---
	Set the voltage (mV) to program the axp pmic aldo4 at, set to 0 to
	disable aldo4.
	On A10(s) / A13 / A20 boards aldo4 should be 2.8V.

config AXP_DLDO1_VOLT
	int "axp pmic dldo1 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic dldo1 at, set to 0 to
	disable dldo1. On sun6i (A31) boards with ethernet dldo1 is often used
	to power the ethernet phy. On A23, A33 and A80 boards this is often
	used to power the wifi.

config AXP_DLDO2_VOLT
	int "axp pmic dldo2 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 3000 if MACH_SUN9I
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic dldo2 at, set to 0 to
	disable dldo2.
	On A80 boards dldo2 normally powers the PL pins and should be 3.0V.

config AXP_DLDO3_VOLT
	int "axp pmic dldo3 voltage"
	depends on AXP221_POWER || AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic dldo3 at, set to 0 to
	disable dldo3.

config AXP_DLDO4_VOLT
	int "axp pmic dldo4 voltage"
	depends on AXP221_POWER || AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic dldo4 at, set to 0 to
	disable dldo4.

config AXP_ELDO1_VOLT
	int "axp pmic eldo1 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic eldo1 at, set to 0 to
	disable eldo1.

config AXP_ELDO2_VOLT
	int "axp pmic eldo2 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic eldo2 at, set to 0 to
	disable eldo2.

config AXP_ELDO3_VOLT
	int "axp pmic eldo3 voltage"
	depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 3000 if MACH_SUN9I
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic eldo3 at, set to 0 to
	disable eldo3. On some A31(s) tablets it might be used to supply
	1.2V for the SSD2828 chip (converter of parallel LCD interface
	into MIPI DSI).
	On A80 boards it powers the PM pingroup and should be 3.0V.

config AXP_FLDO1_VOLT
	int "axp pmic fldo1 voltage"
	depends on AXP818_POWER
	default 0 if MACH_SUN8I_A83T
	---help---
	Set the voltage (mV) to program the axp pmic fldo1 at, set to 0 to
	disable fldo1.
	On A83T / H8 boards fldo1 is VCC-HSIC and should be 1.2V if HSIC is
	used.

config AXP_FLDO2_VOLT
	int "axp pmic fldo2 voltage"
	depends on AXP818_POWER
	default 900 if MACH_SUN8I_A83T
	---help---
	Set the voltage (mV) to program the axp pmic fldo2 at, set to 0 to
	disable fldo2.
	On A83T / H8 boards fldo2 is VCC-CPUS and should be 0.9V.

config AXP_FLDO3_VOLT
	int "axp pmic fldo3 voltage"
	depends on AXP818_POWER
	default 0
	---help---
	Set the voltage (mV) to program the axp pmic fldo3 at, set to 0 to
	disable fldo3.

config AXP_SW_ON
	bool "axp pmic sw on"
	depends on AXP809_POWER || AXP818_POWER
	---help---
	Enable to turn on axp pmic sw.

config SY8106A_VOUT1_VOLT
	int "SY8106A pmic VOUT1 voltage"
	depends on SY8106A_POWER
	default 1200
	---help---
	Set the voltage (mV) to program the SY8106A pmic VOUT1. This
	is typically used to power the VDD-CPU and should be 1200mV.
	Values can range from 680mV till 1950mV.

config TPS6586X_POWER
	bool "Enable legacy driver for TI TPS6586x power management chip"

config TWL4030_POWER
	depends on OMAP34XX
	bool "Enable driver for TI TWL4030 power management chip"
	imply CMD_POWEROFF
	---help---
	The TWL4030 in a combination audio CODEC/power management with
	GPIO and it is commonly used with the OMAP3 family of processors

config TWL6030_POWER
	depends on OMAP44XX
	bool "Enable driver for TI TWL6030 power management chip"

config POWER_MT6323
	bool "Poweroff driver for mediatek mt6323"
	select CMD_POWEROFF
	help
	  This adds poweroff driver for mt6323
	  this pmic is used on mt7623 / Bananapi R2

config PALMAS_POWER
	bool "Palmas power support"
	depends on OMAP54XX

config POWER_FSL
	bool "Power control (legacy) for Freescale / NXP platforms"
	depends on POWER_LEGACY

config POWER_I2C
	bool "I2C-based power control for legacy power"
	depends on POWER_LEGACY
	help
	  Enable this to use the I2C driver designed for the legacy PMIC
	  interface.

	  Not to be used for new designs and existing ones should be moved to
	  the new PMIC interface based on driver model.

config POWER_SPI
	bool "SPI-based power control for legacy power_fsl driver"
	depends on POWER_FSL && !POWER_I2C

config SPL_POWER_I2C
	bool "I2C-based power control for legacy power"
	depends on SPL_POWER_LEGACY
	default y if POWER_I2C
	help
	  Enable this to use the I2C driver designed for the legacy PMIC
	  interface.

	  Not to be used for new designs and existing ones should be moved to
	  the new PMIC interface based on driver model.

choice
	prompt "PMIC chip"
	default POWER_FSL_MC13892
	depends on POWER_FSL && POWER_I2C

config POWER_FSL_MC13892
	bool "MC13892"

config POWER_FSL_MC34704
	bool "MC34704"

endchoice

endif
