]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
sunxi: board: simplify early PMIC setup conditions
authorAndre Przywara <andre.przywara@arm.com>
Sun, 27 Jun 2021 00:13:09 +0000 (01:13 +0100)
committerAndre Przywara <andre.przywara@arm.com>
Sun, 12 Nov 2023 12:03:42 +0000 (12:03 +0000)
So far we have a convoluted #ifdef mesh that guards the early AXP PMIC
setup in board.c. That combination of &&, || and negations is very hard
to read, maintain and especially to extend.

Fortunately we have those same conditions already modelled in the
Kconfig file, so they are actually redundant. On top of that the real
reason we have those preprocessor guards in the first place is about the
symbols that are *conditionally* defined: without #ifdefs the build
would break because of them being undefined for many boards.

To simplify this, just change the guards to actually look at the symbols
needed, so CONFIG_AXP_xxx_VOLT instead of CONFIG_AXPyyy_POWER.
This drastically improves the readability of this code, and makes adding
PMIC support a pure Kconfig matter.

Doing this revealed one bug in Kconfig: there is no axp_set_dcdc4() for
the AXP818, even though CONFIG_AXP_DCDC4_VOLT includes that PMIC.
Since the AXP818 wasn't included when calling axp_set_dcdc4() in board.c,
this wasn't an issue, but becomes one now, so also remove the AXP818 from
the DCDC4 Kconfig symbol.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
board/sunxi/board.c
drivers/power/Kconfig

index 39ecbe988f7b4fa045a9164ee7ba68a438562221..02fc3eef0030828d66c9ed65abd73230847bd293 100644 (file)
@@ -581,50 +581,46 @@ void sunxi_board_init(void)
                }
        }
 
-#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \
-       defined CONFIG_AXP818_POWER
+#ifdef CONFIG_AXP_DCDC1_VOLT
        power_failed |= axp_set_dcdc1(CONFIG_AXP_DCDC1_VOLT);
+       power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT);
 #endif
-#if !defined(CONFIG_AXP305_POWER)
+#ifdef CONFIG_AXP_DCDC2_VOLT
        power_failed |= axp_set_dcdc2(CONFIG_AXP_DCDC2_VOLT);
        power_failed |= axp_set_dcdc3(CONFIG_AXP_DCDC3_VOLT);
 #endif
-#if !defined(CONFIG_AXP209_POWER) && !defined(CONFIG_AXP818_POWER)
+#ifdef CONFIG_AXP_DCDC4_VOLT
        power_failed |= axp_set_dcdc4(CONFIG_AXP_DCDC4_VOLT);
 #endif
-#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \
-       defined CONFIG_AXP818_POWER
-       power_failed |= axp_set_dcdc5(CONFIG_AXP_DCDC5_VOLT);
-#endif
 
-#if defined CONFIG_AXP221_POWER || defined CONFIG_AXP809_POWER || \
-       defined CONFIG_AXP818_POWER
+#ifdef CONFIG_AXP_ALDO1_VOLT
        power_failed |= axp_set_aldo1(CONFIG_AXP_ALDO1_VOLT);
 #endif
-#if !defined(CONFIG_AXP305_POWER)
+#ifdef CONFIG_AXP_ALDO2_VOLT
        power_failed |= axp_set_aldo2(CONFIG_AXP_ALDO2_VOLT);
 #endif
-#if !defined(CONFIG_AXP152_POWER) && !defined(CONFIG_AXP305_POWER)
+#ifdef CONFIG_AXP_ALDO3_VOLT
        power_failed |= axp_set_aldo3(CONFIG_AXP_ALDO3_VOLT);
 #endif
-#ifdef CONFIG_AXP209_POWER
+#ifdef CONFIG_AXP_ALDO4_VOLT
        power_failed |= axp_set_aldo4(CONFIG_AXP_ALDO4_VOLT);
 #endif
 
-#if defined(CONFIG_AXP221_POWER) || defined(CONFIG_AXP809_POWER) || \
-       defined(CONFIG_AXP818_POWER)
+#ifdef CONFIG_AXP_DLDO1_VOLT
        power_failed |= axp_set_dldo(1, CONFIG_AXP_DLDO1_VOLT);
        power_failed |= axp_set_dldo(2, CONFIG_AXP_DLDO2_VOLT);
-#if !defined CONFIG_AXP809_POWER
+#endif
+#ifdef CONFIG_AXP_DLDO3_VOLT
        power_failed |= axp_set_dldo(3, CONFIG_AXP_DLDO3_VOLT);
        power_failed |= axp_set_dldo(4, CONFIG_AXP_DLDO4_VOLT);
 #endif
+#ifdef CONFIG_AXP_ELDO1_VOLT
        power_failed |= axp_set_eldo(1, CONFIG_AXP_ELDO1_VOLT);
        power_failed |= axp_set_eldo(2, CONFIG_AXP_ELDO2_VOLT);
        power_failed |= axp_set_eldo(3, CONFIG_AXP_ELDO3_VOLT);
 #endif
 
-#ifdef CONFIG_AXP818_POWER
+#ifdef CONFIG_AXP_FLDO1_VOLT
        power_failed |= axp_set_fldo(1, CONFIG_AXP_FLDO1_VOLT);
        power_failed |= axp_set_fldo(2, CONFIG_AXP_FLDO2_VOLT);
        power_failed |= axp_set_fldo(3, CONFIG_AXP_FLDO3_VOLT);
@@ -633,7 +629,7 @@ void sunxi_board_init(void)
 #if defined CONFIG_AXP809_POWER || defined CONFIG_AXP818_POWER
        power_failed |= axp_set_sw(IS_ENABLED(CONFIG_AXP_SW_ON));
 #endif
-#endif
+#endif /* CONFIG_AXPxxx_POWER */
        printf("DRAM:");
        gd->ram_size = sunxi_dram_init();
        printf(" %d MiB\n", (int)(gd->ram_size >> 20));
index 7f3b990d2315d6ccb0a481d870a69765d230895f..83cb31c937afa03cc5701eda621be900c68772e4 100644 (file)
@@ -180,7 +180,7 @@ config AXP_DCDC3_VOLT
 
 config AXP_DCDC4_VOLT
        int "axp pmic dcdc4 voltage"
-       depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER || AXP305_POWER
+       depends on AXP152_POWER || AXP221_POWER || AXP809_POWER || AXP305_POWER
        default 1250 if AXP152_POWER
        default 1200 if MACH_SUN6I
        default 0 if MACH_SUN8I