mirror of
https://github.com/apache/nuttx.git
synced 2026-05-29 04:19:37 +08:00
risc-v/esp32c3: Fix detection of CPU reset by Watchdog Timer
This commit fixes an issue where some peripheral clocks are being disabled during CPU reset on ESP32-C3. Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
This commit is contained in:
committed by
Xiang Xiao
parent
15f599059c
commit
1d15196df7
@@ -307,13 +307,13 @@ enum reset_reason_e
|
|||||||
TG1WDT_SYS_RESET = 8, /* Timer Group1 Watch dog reset digital core */
|
TG1WDT_SYS_RESET = 8, /* Timer Group1 Watch dog reset digital core */
|
||||||
RTCWDT_SYS_RESET = 9, /* RTC Watch dog Reset digital core */
|
RTCWDT_SYS_RESET = 9, /* RTC Watch dog Reset digital core */
|
||||||
INTRUSION_RESET = 10, /* Instrusion tested to reset CPU */
|
INTRUSION_RESET = 10, /* Instrusion tested to reset CPU */
|
||||||
TG0WDT_CPU_RESET = 11, /* Time Group0 reset CPU */
|
TG0WDT_CPU_RESET = 11, /* Timer Group0 reset CPU */
|
||||||
RTC_SW_CPU_RESET = 12, /* Software reset CPU */
|
RTC_SW_CPU_RESET = 12, /* Software reset CPU */
|
||||||
RTCWDT_CPU_RESET = 13, /* RTC Watch dog Reset CPU */
|
RTCWDT_CPU_RESET = 13, /* RTC Watch dog Reset CPU */
|
||||||
RTCWDT_BROWN_OUT_RESET = 15, /* Reset when the vdd voltage is not stable */
|
RTCWDT_BROWN_OUT_RESET = 15, /* Reset when the vdd voltage is not stable */
|
||||||
RTCWDT_RTC_RESET = 16, /* RTC Watch dog reset digital core and rtc module */
|
RTCWDT_RTC_RESET = 16, /* RTC Watch dog reset digital core and rtc module */
|
||||||
TG1WDT_CPU_RESET = 17, /* Time Group1 reset CPU */
|
TG1WDT_CPU_RESET = 17, /* Timer Group1 reset CPU */
|
||||||
SUPER_WDT_RESET = 18, /* super watchdog reset digital core and rtc module */
|
SUPER_WDT_RESET = 18, /* Super watchdog reset digital core and rtc module */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* RTC FAST_CLK frequency values */
|
/* RTC FAST_CLK frequency values */
|
||||||
@@ -2380,9 +2380,8 @@ void IRAM_ATTR esp32c3_perip_clk_init(void)
|
|||||||
* UART, I2S and bring them to known state.
|
* UART, I2S and bring them to known state.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((rst_reas >= TG0WDT_CPU_RESET &&
|
if ((rst_reas == TG0WDT_CPU_RESET || rst_reas == RTC_SW_CPU_RESET ||
|
||||||
rst_reas <= TG0WDT_CPU_RESET &&
|
rst_reas == RTCWDT_CPU_RESET || rst_reas == TG1WDT_CPU_RESET))
|
||||||
rst_reas != RTCWDT_BROWN_OUT_RESET))
|
|
||||||
{
|
{
|
||||||
common_perip_clk = ~getreg32(SYSTEM_PERIP_CLK_EN0_REG);
|
common_perip_clk = ~getreg32(SYSTEM_PERIP_CLK_EN0_REG);
|
||||||
hwcrypto_perip_clk = ~getreg32(SYSTEM_PERIP_CLK_EN1_REG);
|
hwcrypto_perip_clk = ~getreg32(SYSTEM_PERIP_CLK_EN1_REG);
|
||||||
|
|||||||
Reference in New Issue
Block a user