diff options
| author | Dario Binacchi <[email protected]> | 2026-01-18 11:48:43 +0100 |
|---|---|---|
| committer | Patrice Chotard <[email protected]> | 2026-01-29 10:47:57 +0100 |
| commit | 07cd29b175d405f904b3f638b75eb9006e5ecba0 (patch) | |
| tree | f7c3f7a8b10509c00797eb6fe6c629dbf28bb357 | |
| parent | a370c2b4063b739e4d95192a6efb16f28a30f2e1 (diff) | |
board: stm32mp2: read boot index from backup register
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 <[email protected]>
Reviewed-by: Patrice Chotard <[email protected]>
| -rw-r--r-- | arch/arm/mach-stm32mp/include/mach/stm32.h | 4 | ||||
| -rw-r--r-- | board/st/stm32mp2/stm32mp2.c | 21 |
2 files changed, 25 insertions, 0 deletions
diff --git a/arch/arm/mach-stm32mp/include/mach/stm32.h b/arch/arm/mach-stm32mp/include/mach/stm32.h index 2bf50c755cb..90f06a052d3 100644 --- a/arch/arm/mach-stm32mp/include/mach/stm32.h +++ b/arch/arm/mach-stm32mp/include/mach/stm32.h @@ -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 */ diff --git a/board/st/stm32mp2/stm32mp2.c b/board/st/stm32mp2/stm32mp2.c index 7bc7d2a608f..43bc583378e 100644 --- a/board/st/stm32mp2/stm32mp2.c +++ b/board/st/stm32mp2/stm32mp2.c @@ -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 */ |
