i2c: Convert CONFIG_POWER_I2C et al to Kconfig
[platform/kernel/u-boot.git] / drivers / power / Kconfig
index 64e5bc2..f5681c9 100644 (file)
@@ -1,5 +1,36 @@
 menu "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"
+       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"
@@ -10,9 +41,10 @@ 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
+       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
+       default SUNXI_NO_PMIC if MACH_SUNXI_H3_H5 || MACH_SUN50I || MACH_SUN8I_V3S
 
 config SUNXI_NO_PMIC
        bool "board without a pmic"
@@ -22,6 +54,7 @@ config SUNXI_NO_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
@@ -29,7 +62,8 @@ config AXP152_POWER
 
 config AXP209_POWER
        bool "axp209 pmic support"
-       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
+       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
@@ -37,15 +71,26 @@ config AXP209_POWER
 
 config AXP221_POWER
        bool "axp221 / axp223 pmic support"
-       depends on MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33
+       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.
@@ -53,6 +98,7 @@ config AXP809_POWER
 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
@@ -70,7 +116,7 @@ endchoice
 config AXP_DCDC1_VOLT
        int "axp pmic dcdc1 voltage"
        depends on AXP221_POWER || AXP809_POWER || AXP818_POWER
-       default 3300 if 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
@@ -97,6 +143,7 @@ config AXP_DCDC2_VOLT
        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"
@@ -104,6 +151,7 @@ config AXP_DCDC3_VOLT
        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
@@ -114,14 +162,16 @@ config AXP_DCDC3_VOLT
        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
+       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.
@@ -130,6 +180,7 @@ config AXP_DCDC4_VOLT
        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"
@@ -138,13 +189,13 @@ config AXP_DCDC5_VOLT
        ---help---
        Set the voltage (mV) to program the axp pmic dcdc5 at, set to 0 to
        disable dcdc5.
-       On A23 / A31 / A33 / A80 / A83T boards dcdc5 is VCC-DRAM and
+       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
+       default 0 if MACH_SUN6I || MACH_SUN8I_R40
        default 1800 if MACH_SUN8I_A83T
        default 3000 if MACH_SUN8I || MACH_SUN9I
        ---help---
@@ -183,11 +234,54 @@ config AXP_ALDO3_VOLT
        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 boards aldo3 is VCC-PLL and AVCC and should be 3.0V.
+       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
@@ -291,7 +385,6 @@ config AXP_FLDO3_VOLT
 config AXP_SW_ON
        bool "axp pmic sw on"
        depends on AXP809_POWER || AXP818_POWER
-       default n
        ---help---
        Enable to turn on axp pmic sw.
 
@@ -304,4 +397,40 @@ config SY8106A_VOUT1_VOLT
        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
+
+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 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.
+
 endmenu