@@ -92,6 +92,27 @@ void IRAM_ATTR esp_system_reset_modules_on_exit(void)
9292 CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN1_REG , HP_SYS_CLKRST_REG_RST_EN_UART4_CORE );
9393 CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_ADC );
9494
95+ // Reset crypto peripherals. This ensures a clean state for the crypto peripherals after a CPU restart
96+ // and hence avoiding any possibility with crypto failure in ROM security workflows.
97+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_CRYPTO );
98+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_AES );
99+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_DS );
100+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_ECC );
101+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_ECDSA );
102+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_HMAC );
103+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_KM );
104+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_RSA );
105+ SET_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_SHA );
106+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_CRYPTO );
107+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_AES );
108+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_DS );
109+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_ECC );
110+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_ECDSA );
111+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_HMAC );
112+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_KM );
113+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_RSA );
114+ CLEAR_PERI_REG_MASK (HP_SYS_CLKRST_HP_RST_EN2_REG , HP_SYS_CLKRST_REG_RST_EN_SHA );
115+
95116#if CONFIG_ESP32P4_REV_MIN_FULL <= 100
96117 // enable soc clk and reset parent crypto
97118 SET_PERI_REG_MASK (HP_SYS_CLKRST_SOC_CLK_CTRL1_REG , HP_SYS_CLKRST_REG_CRYPTO_SYS_CLK_EN );
0 commit comments