menu "Power"

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 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
	default 900 if AXP818_POWER
	default 1400 if AXP152_POWER || AXP209_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

config AXP_DCDC3_VOLT
	int "axp pmic dcdc3 voltage"
	depends on AXP152_POWER || AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
	default 900 if AXP809_POWER || AXP818_POWER
	default 1500 if AXP152_POWER
	default 1250 if AXP209_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.

config AXP_DCDC4_VOLT
	int "axp pmic dcdc4 voltage"
	depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP818_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 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 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

endmenu
