]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
board: stm32mp2: read boot index from backup register
authorDario Binacchi <dario.binacchi@amarulasolutions.com>
Sun, 18 Jan 2026 10:48:43 +0000 (11:48 +0100)
committerPatrice Chotard <patrice.chotard@foss.st.com>
Thu, 29 Jan 2026 09:47:57 +0000 (10:47 +0100)
Following the 'commit 95b5a7de30f6 ("FWU: STM32MP1: Add support to
read boot index from backup register")', this patch enables reading
the boot index from backup registers on STM32MP2 platforms.

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
arch/arm/mach-stm32mp/include/mach/stm32.h
board/st/stm32mp2/stm32mp2.c

index 2bf50c755cbd28006e767f6aeedbf6d09d05c4d7..90f06a052d3f5a1e535afd51073190d1115c2909 100644 (file)
@@ -188,8 +188,12 @@ enum forced_boot_mode {
 /* TAMP registers x = 0 to 127 : hardcoded description, waiting NVMEM node in DT */
 #define TAMP_BACKUP_REGISTER(x)                (STM32_TAMP_BASE + 0x100 + 4 * (x))
 
+#define TAMP_FWU_BOOT_INFO_REG         TAMP_BACKUP_REGISTER(48)
 /* TAMP registers zone 3 RIF 1 (RW) at 96*/
 #define TAMP_BOOT_CONTEXT              TAMP_BACKUP_REGISTER(96)
+
+#define TAMP_FWU_BOOT_IDX_MASK         GENMASK(3, 0)
+#define TAMP_FWU_BOOT_IDX_OFFSET       0
 #endif /* defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X) */
 
 /* offset used for BSEC driver: misc_read and misc_write */
index 7bc7d2a608fd845ddf7c947d65f0f8f08ad3789d..43bc583378e629e99acbc77f93a5909fcb8f3336 100644 (file)
@@ -188,3 +188,24 @@ void board_quiesce_devices(void)
 {
        led_boot_off();
 }
+
+#if defined(CONFIG_FWU_MULTI_BANK_UPDATE)
+
+#include <fwu.h>
+
+/**
+ * fwu_plat_get_bootidx() - Get the value of the boot index
+ * @boot_idx: Boot index value
+ *
+ * Get the value of the bank(partition) from which the platform
+ * has booted. This value is passed to U-Boot from the earlier
+ * stage bootloader which loads and boots all the relevant
+ * firmware images
+ *
+ */
+void fwu_plat_get_bootidx(uint *boot_idx)
+{
+       *boot_idx = (readl(TAMP_FWU_BOOT_INFO_REG) >>
+                   TAMP_FWU_BOOT_IDX_OFFSET) & TAMP_FWU_BOOT_IDX_MASK;
+}
+#endif /* CONFIG_FWU_MULTI_BANK_UPDATE */