stpmic1: program pmic to keep only the debug unit on
authorPatrick Delaunay <patrick.delaunay@st.com>
Tue, 30 Jul 2019 17:16:20 +0000 (19:16 +0200)
committerPatrice Chotard <patrice.chotard@st.com>
Tue, 27 Aug 2019 07:36:56 +0000 (09:36 +0200)
Depending on backup register value, we maintain the debug unit
powered-on for debugging purpose.
Only BUCK1 is required for powering the debug unit, so revert
the setting for all the other power lanes, except BUCK3 that
has to be always on.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
arch/arm/mach-stm32mp/include/mach/stm32.h
board/st/stm32mp1/spl.c
include/power/stpmic1.h

index 1d4b5482acc1add895fd8dd9207083ce356c7580..b3e9ccc5d327bc370bbbbba9488eb0ecc2d2bb77 100644 (file)
@@ -94,6 +94,7 @@ enum boot_device {
 #define TAMP_BOOT_DEVICE_MASK          GENMASK(7, 4)
 #define TAMP_BOOT_INSTANCE_MASK                GENMASK(3, 0)
 #define TAMP_BOOT_FORCED_MASK          GENMASK(7, 0)
+#define TAMP_BOOT_DEBUG_ON             BIT(16)
 
 enum forced_boot_mode {
        BOOT_NORMAL = 0x00,
index e19be0f7701feef1133dabd358bc0cd586dc6572..e65ff288ea1b40995d9f78c62e2423cb0b45f0d9 100644 (file)
@@ -27,5 +27,19 @@ void spl_board_init(void)
                                STPMIC1_BUCKS_MRST_CR,
                                STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
                                STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
+
+       /* Check if debug is enabled to program PMIC according to the bit */
+       if ((readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_DEBUG_ON) && !ret) {
+               printf("Keep debug unit ON\n");
+
+               pmic_clrsetbits(dev, STPMIC1_BUCKS_MRST_CR,
+                               STPMIC1_MRST_BUCK_DEBUG,
+                               STPMIC1_MRST_BUCK_DEBUG);
+
+               if (STPMIC1_MRST_LDO_DEBUG)
+                       pmic_clrsetbits(dev, STPMIC1_LDOS_MRST_CR,
+                                       STPMIC1_MRST_LDO_DEBUG,
+                                       STPMIC1_MRST_LDO_DEBUG);
+       }
 #endif
 }
index 0e6721d852afd31a57ad3192a6508df0fb25c781..d90a1a9c93983101ce817e6ef61dda276dfd12ce 100644 (file)
 
 /* BUCKS_MRST_CR */
 #define STPMIC1_MRST_BUCK(buck)                BIT(buck)
-#define STPMIC1_MRST_BUCK_ALL          GENMASK(3, 0)
+#define STPMIC1_MRST_BUCK_DEBUG                (STPMIC1_MRST_BUCK(STPMIC1_BUCK1) | \
+                                        STPMIC1_MRST_BUCK(STPMIC1_BUCK3))
 
 /* LDOS_MRST_CR */
 #define STPMIC1_MRST_LDO(ldo)          BIT(ldo)
-#define STPMIC1_MRST_LDO_ALL           GENMASK(6, 0)
+#define STPMIC1_MRST_LDO_DEBUG         0
 
 /* BUCKx_MAIN_CR (x=1...4) */
 #define STPMIC1_BUCK_ENA               BIT(0)