From 6e99fee43efa256bdac3b38864206c94bd9ae3c8 Mon Sep 17 00:00:00 2001 From: Sughosh Ganu Date: Tue, 20 Feb 2024 14:17:57 +0530 Subject: [PATCH] feat(st): add a function to clear the FWU trial state counter Add an API stm32_clear_fwu_trial_boot_cnt() function to clear the trial state counter. This is called in the corner case scenario when the active index is in an Invalid state, thus needing a reset of the trial state counter. Change-Id: I2980135da88d0d947c222655c7958b51eb572d69 Signed-off-by: Sughosh Ganu --- plat/st/common/include/stm32mp_common.h | 1 + plat/st/stm32mp1/stm32mp1_private.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/plat/st/common/include/stm32mp_common.h b/plat/st/common/include/stm32mp_common.h index 0ff60929f..a1ed1addd 100644 --- a/plat/st/common/include/stm32mp_common.h +++ b/plat/st/common/include/stm32mp_common.h @@ -142,6 +142,7 @@ void stm32_display_board_info(uint32_t board_id); void stm32mp1_fwu_set_boot_idx(void); uint32_t stm32_get_and_dec_fwu_trial_boot_cnt(void); void stm32_set_max_fwu_trial_boot_cnt(void); +void stm32_clear_fwu_trial_boot_cnt(void); #endif /* PSA_FWU_SUPPORT */ #endif /* STM32MP_COMMON_H */ diff --git a/plat/st/stm32mp1/stm32mp1_private.c b/plat/st/stm32mp1/stm32mp1_private.c index 0e6951316..f098eb37e 100644 --- a/plat/st/stm32mp1/stm32mp1_private.c +++ b/plat/st/stm32mp1/stm32mp1_private.c @@ -714,4 +714,13 @@ void stm32_set_max_fwu_trial_boot_cnt(void) TAMP_BOOT_FWU_INFO_CNT_MSK); clk_disable(RTCAPB); } + +void stm32_clear_fwu_trial_boot_cnt(void) +{ + uintptr_t bkpr_fwu_cnt = tamp_bkpr(TAMP_BOOT_FWU_INFO_REG_ID); + + clk_enable(RTCAPB); + mmio_clrbits_32(bkpr_fwu_cnt, TAMP_BOOT_FWU_INFO_CNT_MSK); + clk_disable(RTCAPB); +} #endif /* PSA_FWU_SUPPORT */