From 1dadb246a3b29f752ecbead792cd0c8d90fade4c Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Sun, 15 Dec 2024 00:22:48 +0000 Subject: [PATCH] power: pmic: sunxi: guard DCDC5 separately So far all sunxi boards programming the DCDC1 power rail on the AXP PMIC also set the DCDC5 rail, so we could handle both with the same DCDC1 guard. Some boards using the AXP313 will need to set DCDC1 now as well, and since the AXP313 only has three buck converters, there will be no DCDC5, so this trick is not going to work anymore. Don't try to be too clever, and just protect programming the two DCDC rails with two separate guards. This has the interesting side effect of fixing operation on A80 boards, using the AXP809 PMIC. Apparently programming DCDC5 right after DCDC1, but before the other three rails caused some glitch, which made the board hang during Linux boot, during the PSCI handler in U-Boot. Just keeping the old setup order (DCDC1,2,3,4,5) will make those boards boot to the Linux prompt again. Fixes: ffb02942fab024d4a9b6a ("sunxi: board: simplify early PMIC setup conditions") Signed-off-by: Andre Przywara Reviewed-by: Chen-Yu Tsai --- board/sunxi/board.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/board/sunxi/board.c b/board/sunxi/board.c index 824c322a0dc..9c340908a96 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -577,7 +577,6 @@ void sunxi_board_init(void) #ifdef CONFIG_AXP_DCDC1_VOLT power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT); - power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); #endif #ifdef CONFIG_AXP_DCDC2_VOLT power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT); @@ -586,6 +585,9 @@ void sunxi_board_init(void) #ifdef CONFIG_AXP_DCDC4_VOLT power_failed |= axp_set_dcdc4(CONFIG_AXP_DCDC4_VOLT); #endif +#ifdef CONFIG_AXP_DCDC5_VOLT + power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT); +#endif #ifdef CONFIG_AXP_ALDO1_VOLT power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT);