Skip to content

Commit edc2bd8

Browse files
committed
Merge branch 'bugfix/esp_rom_clic_thresh_bug_v5.3' into 'release/v5.3'
fix(rom): fixed esprv_int_set_threshold on C5/C61 (v5.3) See merge request espressif/esp-idf!31490
2 parents a70355b + 171e0a2 commit edc2bd8

File tree

5 files changed

+16
-3
lines changed

5 files changed

+16
-3
lines changed

components/esp_rom/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ if(CONFIG_HAL_WDT_USE_ROM_IMPL)
6969
list(APPEND sources "patches/esp_rom_wdt.c")
7070
endif()
7171

72-
if(CONFIG_ESP_ROM_CLIC_INT_TYPE_PATCH)
72+
if(CONFIG_ESP_ROM_CLIC_INT_TYPE_PATCH OR CONFIG_ESP_ROM_CLIC_INT_THRESH_PATCH)
7373
list(APPEND sources "patches/esp_rom_clic.c")
7474
endif()
7575

components/esp_rom/esp32c5/mp/esp32c5/Kconfig.soc_caps.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,7 @@ config ESP_ROM_HAS_VERSION
8282
config ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB
8383
bool
8484
default y
85+
86+
config ESP_ROM_CLIC_INT_THRESH_PATCH
87+
bool
88+
default y

components/esp_rom/esp32c5/mp/esp32c5/esp_rom_caps.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,4 @@
2828
#define ESP_ROM_RAM_APP_NEEDS_MMU_INIT (1) // ROM doesn't init cache MMU when it's a RAM APP, needs MMU hal to init
2929
#define ESP_ROM_HAS_VERSION (1) // ROM has version/eco information
3030
#define ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB (1) // ROM supports the HP core to jump to the RTC memory to execute stub code after waking up from deepsleep.
31+
#define ESP_ROM_CLIC_INT_THRESH_PATCH (1) // ROM version of esprv_intc_int_set_threshold incorrectly assumes lowest MINTTHRESH is 0x1F, should be 0xF

components/esp_rom/esp32c5/mp/esp32c5/ld/esp32c5.rom.ld

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@ gpio_pad_hold = 0x40000740;
276276

277277
/* Functions */
278278
esprv_intc_int_set_priority = 0x40000744;
279-
esprv_intc_int_set_threshold = 0x40000748;
280279
esprv_intc_int_enable = 0x4000074c;
281280
esprv_intc_int_disable = 0x40000750;
282281
esprv_intc_int_set_type = 0x40000754;

components/esp_rom/patches/esp_rom_clic.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/*
2-
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
66

77
#include "esp_rom_caps.h"
88
#include "soc/clic_reg.h"
99
#include "riscv/interrupt.h"
10+
#include "riscv/rv_utils.h"
1011

1112
#if ESP_ROM_CLIC_INT_TYPE_PATCH
1213

@@ -20,3 +21,11 @@ void esprv_int_set_type(int rv_int_num, enum intr_type type)
2021
REG_SET_FIELD(CLIC_INT_CTRL_REG(rv_int_num + CLIC_EXT_INTR_NUM_OFFSET), CLIC_INT_ATTR_TRIG, type);
2122
}
2223
#endif
24+
25+
#if ESP_ROM_CLIC_INT_THRESH_PATCH
26+
void esprv_int_set_threshold(int priority_threshold)
27+
{
28+
/* ROM functions assume minimum MINTTHRESH is 0x1F, but it is actually 0xF */
29+
rv_utils_set_intlevel(priority_threshold);
30+
}
31+
#endif //ESP_ROM_CLIC_INT_THRESH_PATCH

0 commit comments

Comments
 (0)