From 6d3b4cd61c8a517d664a361add79c16812cbcbcd Mon Sep 17 00:00:00 2001 From: Lionel Debieve <lionel.debieve@st.com> Date: Thu, 12 Nov 2020 10:44:51 +0100 Subject: [PATCH] reset: stm32mp1_reset: add system reset management Add the system reset management into the stm32mp reset driver. Signed-off-by: Lionel Debieve <lionel.debieve@st.com> Change-Id: I748f10de2398e1323160f479f99e92abd2f65dca Reviewed-on: https://gerrit.st.com/c/mpu/oe/st/tf-a/+/184412 Reviewed-by: CITOOLS <smet-aci-reviews@lists.codex.cro.st.com> Reviewed-by: Gabriel FERNANDEZ <gabriel.fernandez@st.com> Reviewed-by: Yann GAUTIER <yann.gautier@st.com> --- drivers/st/reset/stm32mp1_reset.c | 13 +++++++++++++ include/drivers/st/stm32mp_reset.h | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/drivers/st/reset/stm32mp1_reset.c b/drivers/st/reset/stm32mp1_reset.c index 287d398ab..a803923fc 100644 --- a/drivers/st/reset/stm32mp1_reset.c +++ b/drivers/st/reset/stm32mp1_reset.c @@ -83,3 +83,16 @@ void stm32mp_reset_assert_deassert_to_mcu(bool assert_not_deassert) mmio_setbits_32(rcc_base + RCC_MP_GCR, RCC_MP_GCR_BOOT_MCU); } } + +void __dead2 stm32mp_system_reset(void) +{ + uintptr_t rcc_base = stm32mp_rcc_base(); + + mmio_setbits_32(rcc_base + RCC_MP_GRSTCSETR, + RCC_MP_GRSTCSETR_MPSYSRST); + + /* Loop in case system reset is not immediately caught */ + for ( ; ; ) { + ; + } +} diff --git a/include/drivers/st/stm32mp_reset.h b/include/drivers/st/stm32mp_reset.h index 397079801..8c43c0b5b 100644 --- a/include/drivers/st/stm32mp_reset.h +++ b/include/drivers/st/stm32mp_reset.h @@ -54,4 +54,9 @@ static inline void stm32mp_reset_release(uint32_t reset_id) */ void stm32mp_reset_assert_deassert_to_mcu(bool assert_not_deassert); +/* + * Manage system reset control + */ +void __dead2 stm32mp_system_reset(void); + #endif /* STM32MP_RESET_H */ -- GitLab