[PATCH] power: pmic: sunxi: guard DCDC5 separately

Chen-Yu Tsai wens at csie.org
Mon Dec 16 15:59:57 CET 2024


On Mon, Dec 16, 2024 at 6:14 AM Andre Przywara <andre.przywara at arm.com> wrote:
>
> 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")
> Reported-by: Leon Anavi <leon.anavi at konsulko.com>
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Reviewed-by: Chen-Yu Tsai <wens at csie.org>

> ---
>  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);
> --
> 2.46.2
>


More information about the U-Boot mailing list