From b5e5cdd851fe10945c4e13add6bdfe5deb032be2 Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Fri, 25 Oct 2024 19:42:00 +0200 Subject: [PATCH] arch/arm/stm32h7: add workaround for Renode Add an option to disable busy wait PWR_CSR1_ACTVOSRDY during boot which doesn't work with Renode simulation --- arch/arm/src/stm32h7/Kconfig | 7 +++++++ arch/arm/src/stm32h7/stm32h7x3xx_rcc.c | 2 ++ arch/arm/src/stm32h7/stm32h7x7xx_rcc.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/arch/arm/src/stm32h7/Kconfig b/arch/arm/src/stm32h7/Kconfig index 15ba5312c5..ff2b0444f9 100644 --- a/arch/arm/src/stm32h7/Kconfig +++ b/arch/arm/src/stm32h7/Kconfig @@ -318,6 +318,13 @@ config STM32H7_PWR_LDO_SUPPLY endchoice # "STM32 H7 Power Supply Selection" +config STM32H7_PWR_IGNORE_ACTVOSRDY + bool "Ignore PWR_CSR1_ACTVOSRDY bit" + default n + ---help--- + This option disable busy wait for PWR_CSR1_ACTVOSRDY during boot. + This is workaround for Renode simulation that doesn't implement this feature. + config STM32H7_IO_CONFIG_A bool default n diff --git a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c index 51031027ae..917badee51 100644 --- a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c @@ -926,11 +926,13 @@ void stm32_stdclockconfig(void) { } +#ifndef CONFIG_STM32H7_PWR_IGNORE_ACTVOSRDY /* See Reference manual Section 5.4.1, System supply startup */ while ((getreg32(STM32_PWR_CSR1) & PWR_CSR1_ACTVOSRDY) == 0) { } +#endif #if STM32_VOS_OVERDRIVE && (STM32_PWR_VOS_SCALE == PWR_D3CR_VOS_SCALE_1) /* Over-drive support for VOS1 */ diff --git a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c index f1d9702a19..27a0eb7596 100644 --- a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c @@ -890,11 +890,13 @@ void stm32_stdclockconfig(void) { } +#ifndef CONFIG_STM32H7_PWR_IGNORE_ACTVOSRDY /* See Reference manual Section 5.4.1, System supply startup */ while ((getreg32(STM32_PWR_CSR1) & PWR_CSR1_ACTVOSRDY) == 0) { } +#endif #if STM32_VOS_OVERDRIVE && (STM32_PWR_VOS_SCALE == PWR_D3CR_VOS_SCALE_1) /* Over-drive support for VOS1 */