diff --git a/board/sunxi/board.c b/board/sunxi/board.c index c697d815634..6299804038b 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -632,6 +632,9 @@ void sunxi_board_init(void) defined CONFIG_AXP818_POWER power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); #endif +#if defined CONFIG_AXP818_POWER + power_failed |= axp_set_dcdc6(CONFIG_AXP_DCDC6_VOLT); +#endif #if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \ defined CONFIG_AXP818_POWER diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 2768c280bb1..09be149b7bf 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -149,6 +149,16 @@ config AXP_DCDC5_VOLT 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_DCDC6_VOLT + int "axp pmic dcdc6 voltage" + depends on AXP818_POWER + default 900 if MACH_SUN8I + ---help--- + Set the voltage (mV) to program the axp pmic dcdc6 at, set to 0 to + disable dcdc5. + On A83T boards dcdc6 is used for SYS, USB0, HDMI and + should be 0.9V. + config AXP_ALDO1_VOLT int "axp pmic (a)ldo1 voltage" depends on AXP221_POWER || AXP809_POWER || AXP818_POWER diff --git a/drivers/power/axp818.c b/drivers/power/axp818.c index 623193e5407..2b732705db4 100644 --- a/drivers/power/axp818.c +++ b/drivers/power/axp818.c @@ -109,6 +109,28 @@ int axp_set_dcdc5(unsigned int mvolt) AXP818_OUTPUT_CTRL1_DCDC5_EN); } +int axp_set_dcdc6(unsigned int mvolt) +{ + int ret; + u8 cfg; + + if (mvolt >= 1120) + cfg = 50 + axp818_mvolt_to_cfg(mvolt, 1120, 1520, 20); + else + cfg = axp818_mvolt_to_cfg(mvolt, 600, 1100, 10); + + if (mvolt == 0) + return pmic_bus_clrbits(AXP818_OUTPUT_CTRL1, + AXP818_OUTPUT_CTRL1_DCDC6_EN); + + ret = pmic_bus_write(AXP818_DCDC6_CTRL, cfg); + if (ret) + return ret; + + return pmic_bus_setbits(AXP818_OUTPUT_CTRL1, + AXP818_OUTPUT_CTRL1_DCDC6_EN); +} + int axp_set_aldo(int aldo_num, unsigned int mvolt) { int ret; diff --git a/include/axp_pmic.h b/include/axp_pmic.h index 10091d0bb27..b03f898240c 100644 --- a/include/axp_pmic.h +++ b/include/axp_pmic.h @@ -27,6 +27,7 @@ int axp_set_dcdc2(unsigned int mvolt); int axp_set_dcdc3(unsigned int mvolt); int axp_set_dcdc4(unsigned int mvolt); int axp_set_dcdc5(unsigned int mvolt); +int axp_set_dcdc6(unsigned int mvolt); int axp_set_aldo1(unsigned int mvolt); int axp_set_aldo2(unsigned int mvolt); int axp_set_aldo3(unsigned int mvolt);