Skip to content

Commit e5e8fb5

Browse files
martinjaegerkartben
authored andcommitted
drivers: interrupt_controller: esp32c6: reserve IRQ 1 for WiFi
IRQ 1 is reserved for WiFi in ESP-IDF, which is used as the basis for the Espressif HAL in Zephyr. If IRQ 1 is used by Zephyr and too many other peripherals (e.g. multiple UARTs) are enabled, WiFi stops working. Marking IRQ 1 as "not available" seems to fix the issue. Fixes #82874 Signed-off-by: Martin Jäger <[email protected]>
1 parent 1f4ca01 commit e5e8fb5

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

drivers/interrupt_controller/intc_esp32c3.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,20 @@ LOG_MODULE_REGISTER(intc_esp32c3, CONFIG_LOG_DEFAULT_LEVEL);
4949
#define ESP32C6_INTC_SRCS_PER_IRQ 2
5050
#define ESP32C6_INTC_AVAILABLE_IRQS 31
5151

52-
/* For ESP32C6 only CPU peripheral interrupts number
53-
* 1, 2, 5, 6, 8 ~ 31 are available.
54-
* IRQ 31 is reserved for disabled interrupts
52+
/* Interrupt overview for ESP32C6:
53+
* - 0, 3, 4, and 7 are used by the CPU for core-local interrupts (CLINT)
54+
* - 1 is used for Wi-Fi in Espressif HAL
55+
* - 2, 5, 6, 8 .. 31 are available for Zephyr
56+
* - 31 is reserved for disabled interrupts
5557
*/
5658
static uint8_t esp_intr_irq_alloc[ESP32C6_INTC_AVAILABLE_IRQS][ESP32C6_INTC_SRCS_PER_IRQ] = {
5759
[0] = {IRQ_NA, IRQ_NA},
60+
[1] = {IRQ_NA, IRQ_NA},
61+
[2] = {IRQ_FREE, IRQ_FREE},
5862
[3] = {IRQ_NA, IRQ_NA},
5963
[4] = {IRQ_NA, IRQ_NA},
64+
[5 ... 6] = {IRQ_FREE, IRQ_FREE},
6065
[7] = {IRQ_NA, IRQ_NA},
61-
[1 ... 2] = {IRQ_FREE, IRQ_FREE},
62-
[5 ... 6] = {IRQ_FREE, IRQ_FREE},
6366
[8 ... 30] = {IRQ_FREE, IRQ_FREE}
6467
};
6568
#endif

0 commit comments

Comments
 (0)