interrupt-controller: intc_esp32c3: make logs optional

Allowing cleaner debug experience and preventing unwanted
outputs during debug.

Signed-off-by: Felipe Neves <felipe.neves@espressif.com>
diff --git a/drivers/interrupt_controller/Kconfig.esp32c3 b/drivers/interrupt_controller/Kconfig.esp32c3
index 1022dec..365b16f 100644
--- a/drivers/interrupt_controller/Kconfig.esp32c3
+++ b/drivers/interrupt_controller/Kconfig.esp32c3
@@ -8,3 +8,13 @@
 	help
 	  Enables the esp32c3 interrupt controller driver to handle ISR
 	  management at SoC level.
+
+config INTC_ESP32C3_DECISIONS_LOG
+	bool "Enables Espressif's interrupt allocator logging"
+	depends on INTC_ESP32C3
+	select LOG
+	help
+	  Enable this option to visualize information on decisions made by the
+	  interrupt allocator. This has no impact on the interrupt allocator usage
+	  but may be valuable for debugging purposes. When enabled, messages are
+	  print to the serial console.
diff --git a/drivers/interrupt_controller/intc_esp32c3.c b/drivers/interrupt_controller/intc_esp32c3.c
index 4883841..78e53e3 100644
--- a/drivers/interrupt_controller/intc_esp32c3.c
+++ b/drivers/interrupt_controller/intc_esp32c3.c
@@ -21,6 +21,17 @@
 #include <logging/log.h>
 LOG_MODULE_REGISTER(intc_esp32c3, CONFIG_LOG_DEFAULT_LEVEL);
 
+/*
+ * Define this to debug the choices made when allocating the interrupt. This leads to much debugging
+ * output within a critical region, which can lead to weird effects like e.g. the interrupt watchdog
+ * being triggered, that is why it is separate from the normal LOG* scheme.
+ */
+#ifdef CONFIG_INTC_ESP32C3_DECISIONS_LOG
+# define INTC_LOG(...) LOG_INF(__VA_ARGS__)
+#else
+# define INTC_LOG(...) do {} while (0)
+#endif
+
 #define ESP32C3_INTC_DEFAULT_PRIORITY   15
 #define ESP32C3_INTC_DEFAULT_THRESHOLD  1
 #define ESP32C3_INTC_DISABLED_SLOT      31
@@ -37,7 +48,7 @@
 	__asm__ volatile("csrr %0, mcause" : "=r" (mcause));
 	mcause &= SOC_MCAUSE_EXP_MASK;
 
-	LOG_DBG("Spurious interrupt, mcause: %ld, source %d", mcause, soc_intr_get_next_source());
+	INTC_LOG("Spurious interrupt, mcause: %ld, source %d", mcause, soc_intr_get_next_source());
 }
 
 static uint32_t esp_intr_find_irq_for_source(uint32_t source)
@@ -48,13 +59,13 @@
 	uint32_t irq = (source / ESP32C3_INTC_SRCS_PER_IRQ);
 
 	if (irq > ESP32C3_INTC_AVAILABLE_IRQS) {
-		LOG_DBG("Clamping the source: %d no more IRQs available", source);
+		INTC_LOG("Clamping the source: %d no more IRQs available", source);
 		irq = ESP32C3_INTC_AVAILABLE_IRQS;
 	} else if (irq == 0) {
 		irq = 1;
 	}
 
-	LOG_DBG("Found IRQ: %d for source: %d", irq, source);
+	INTC_LOG("Found IRQ: %d for source: %d", irq, source);
 
 	return irq;
 }
@@ -118,7 +129,7 @@
 		esp_intr_enabled_mask[1] |= (1 << (source - 32));
 	}
 
-	LOG_DBG("Enabled isrs -- 0: 0x%X -- 1: 0x%X",
+	INTC_LOG("Enabled ISRs -- 0: 0x%X -- 1: 0x%X",
 		esp_intr_enabled_mask[0], esp_intr_enabled_mask[1]);
 
 	irq_unlock(key);
@@ -145,7 +156,7 @@
 		esp_intr_enabled_mask[1] &= ~(1 << (source - 32));
 	}
 
-	LOG_DBG("Enabled isrs -- 0: 0x%X -- 1: 0x%X",
+	INTC_LOG("Enabled ISRs -- 0: 0x%X -- 1: 0x%X",
 		esp_intr_enabled_mask[0], esp_intr_enabled_mask[1]);
 
 	irq_unlock(key);
@@ -171,7 +182,7 @@
 		esp_intr_enabled_mask[1] |= (1 << (source - 32));
 	}
 
-	LOG_DBG("Enabled isrs -- 0: 0x%X -- 1: 0x%X",
+	INTC_LOG("Enabled ISRs -- 0: 0x%X -- 1: 0x%X",
 		esp_intr_enabled_mask[0], esp_intr_enabled_mask[1]);
 
 	irq_enable(irq);
@@ -182,7 +193,7 @@
 
 uint32_t esp_intr_get_enabled_intmask(int status_mask_number)
 {
-	LOG_DBG("Enabled isrs -- 0: 0x%X -- 1: 0x%X",
+	INTC_LOG("Enabled ISRs -- 0: 0x%X -- 1: 0x%X",
 		esp_intr_enabled_mask[0], esp_intr_enabled_mask[1]);
 
 	if (status_mask_number == 0) {
diff --git a/include/drivers/interrupt_controller/intc_esp32c3.h b/include/drivers/interrupt_controller/intc_esp32c3.h
index 761f1df..d548444 100644
--- a/include/drivers/interrupt_controller/intc_esp32c3.h
+++ b/include/drivers/interrupt_controller/intc_esp32c3.h
@@ -13,7 +13,6 @@
 /*
  * Interrupt allocation flags - These flags can be used to specify
  * which interrupt qualities the code calling esp_intr_alloc* needs.
- *
  */
 
 /* Keep the LEVELx values as they are here; they match up with (1<<level) */
diff --git a/include/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h b/include/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h
index 64e524c..f5e2cd6 100644
--- a/include/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h
+++ b/include/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h
@@ -7,67 +7,67 @@
 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INTERRUPT_CONTROLLER_ESP32C3_INTMUX_H_
 #define ZEPHYR_INCLUDE_DT_BINDINGS_INTERRUPT_CONTROLLER_ESP32C3_INTMUX_H_
 
-#define WIFI_MAC_INTR_SOURCE				0	/**< interrupt of WiFi MAC, level*/
-#define WIFI_MAC_NMI_SOURCE					1	/**< interrupt of WiFi MAC, NMI, use if MAC have bug to fix in NMI*/
-#define WIFI_PWR_INTR_SOURCE				2	/**< */
-#define WIFI_BB_INTR_SOURCE					3	/**< interrupt of WiFi BB, level, we can do some calibartion*/
-#define BT_MAC_INTR_SOURCE					4	/**< will be cancelled*/
-#define BT_BB_INTR_SOURCE					5	/**< interrupt of BT BB, level*/
-#define BT_BB_NMI_SOURCE					6	/**< interrupt of BT BB, NMI, use if BB have bug to fix in NMI*/
-#define RWBT_INTR_SOURCE					7	/**< interrupt of RWBT, level*/
-#define RWBLE_INTR_SOURCE					8	/**< interrupt of RWBLE, level*/
-#define RWBT_NMI_SOURCE						9	/**< interrupt of RWBT, NMI, use if RWBT have bug to fix in NMI*/
-#define RWBLE_NMI_SOURCE					10	/**< interrupt of RWBLE, NMI, use if RWBT have bug to fix in NMI*/
-#define I2C_MASTER_SOURCE					11	/**< interrupt of I2C Master, level*/
-#define SLC0_INTR_SOURCE					12	/**< interrupt of SLC0, level*/
-#define SLC1_INTR_SOURCE					13	/**< interrupt of SLC1, level*/
-#define APB_CTRL_INTR_SOURCE				14	/**< interrupt of APB ctrl, ?*/
-#define UHCI0_INTR_SOURCE					15	/**< interrupt of UHCI0, level*/
-#define GPIO_INTR_SOURCE					16	/**< interrupt of GPIO, level*/
-#define GPIO_NMI_SOURCE						17	/**< interrupt of GPIO, NMI*/
-#define SPI1_INTR_SOURCE					18	/**< interrupt of SPI1, level, SPI1 is for flash read/write, do not use this*/
-#define SPI2_INTR_SOURCE					19	/**< interrupt of SPI2, level*/
-#define I2S1_INTR_SOURCE					20	/**< interrupt of I2S1, level*/
-#define UART0_INTR_SOURCE					21	/**< interrupt of UART0, level*/
-#define UART1_INTR_SOURCE					22	/**< interrupt of UART1, level*/
-#define LEDC_INTR_SOURCE					23	/**< interrupt of LED PWM, level*/
-#define EFUSE_INTR_SOURCE					24	/**< interrupt of efuse, level, not likely to use*/
-#define TWAI_INTR_SOURCE					25	/**< interrupt of can, level*/
-#define USB_INTR_SOURCE						26	/**< interrupt of USB, level*/
-#define RTC_CORE_INTR_SOURCE				27	/**< interrupt of rtc core, level, include rtc watchdog*/
-#define RMT_INTR_SOURCE						28	/**< interrupt of remote controller, level*/
-#define I2C_EXT0_INTR_SOURCE				29	/**< interrupt of I2C controller1, level*/
-#define TIMER1_INTR_SOURCE					30
-#define TIMER2_INTR_SOURCE					31
-#define TG0_T0_LEVEL_INTR_SOURCE			32	/**< interrupt of TIMER_GROUP0, TIMER0, level*/
-#define TG0_WDT_LEVEL_INTR_SOURCE			33	/**< interrupt of TIMER_GROUP0, WATCH DOG, level*/
-#define TG1_T0_LEVEL_INTR_SOURCE			34	/**< interrupt of TIMER_GROUP1, TIMER0, level*/
-#define TG1_WDT_LEVEL_INTR_SOURCE			35	/**< interrupt of TIMER_GROUP1, WATCHDOG, level*/
-#define CACHE_IA_INTR_SOURCE				36	/**< interrupt of Cache Invalied Access, LEVEL*/
-#define SYSTIMER_TARGET0_EDGE_INTR_SOURCE	37	/**< interrupt of system timer 0, EDGE*/
-#define SYSTIMER_TARGET1_EDGE_INTR_SOURCE	38	/**< interrupt of system timer 1, EDGE*/
-#define SYSTIMER_TARGET2_EDGE_INTR_SOURCE	39	/**< interrupt of system timer 2, EDGE*/
-#define SPI_MEM_REJECT_CACHE_INTR_SOURCE	40	/**< interrupt of SPI0 Cache access and SPI1 access rejected, LEVEL*/
-#define ICACHE_PRELOAD0_INTR_SOURCE			41	/**< interrupt of ICache perload operation, LEVEL*/
-#define ICACHE_SYNC0_INTR_SOURCE			42	/**< interrupt of instruction cache sync done, LEVEL*/
-#define APB_ADC_INTR_SOURCE					43	/**< interrupt of APB ADC, LEVEL*/
-#define DMA_CH0_INTR_SOURCE					44	/**< interrupt of general DMA channel 0, LEVEL*/
-#define DMA_CH1_INTR_SOURCE					45	/**< interrupt of general DMA channel 1, LEVEL*/
-#define DMA_CH2_INTR_SOURCE					46	/**< interrupt of general DMA channel 2, LEVEL*/
-#define RSA_INTR_SOURCE						47	/**< interrupt of RSA accelerator, level*/
-#define AES_INTR_SOURCE						48	/**< interrupt of AES accelerator, level*/
-#define SHA_INTR_SOURCE						49	/**< interrupt of SHA accelerator, level*/
-#define FROM_CPU_INTR0_SOURCE				50	/**< interrupt0 generated from a CPU, level*/ /* Used for FreeRTOS */
-#define FROM_CPU_INTR1_SOURCE				51	/**< interrupt1 generated from a CPU, level*/ /* Used for FreeRTOS */
-#define FROM_CPU_INTR2_SOURCE				52	/**< interrupt2 generated from a CPU, level*/ /* Used for DPORT Access */
-#define FROM_CPU_INTR3_SOURCE				53	/**< interrupt3 generated from a CPU, level*/ /* Used for DPORT Access */
-#define ASSIST_DEBUG_INTR_SOURCE			54	/**< interrupt of Assist debug module, LEVEL*/
-#define DMA_APBPERI_PMS_INTR_SOURCE			55
-#define CORE0_IRAM0_PMS_INTR_SOURCE			56
-#define CORE0_DRAM0_PMS_INTR_SOURCE			57
-#define CORE0_PIF_PMS_INTR_SOURCE			58
-#define CORE0_PIF_PMS_SIZE_INTR_SOURCE		59
-#define BAK_PMS_VIOLATE_INTR_SOURCE			60
-#define CACHE_CORE0_ACS_INTR_SOURCE			61
+#define WIFI_MAC_INTR_SOURCE                0
+#define WIFI_MAC_NMI_SOURCE                 1
+#define WIFI_PWR_INTR_SOURCE                2
+#define WIFI_BB_INTR_SOURCE                 3
+#define BT_MAC_INTR_SOURCE                  4
+#define BT_BB_INTR_SOURCE                   5
+#define BT_BB_NMI_SOURCE                    6
+#define RWBT_INTR_SOURCE                    7
+#define RWBLE_INTR_SOURCE                   8
+#define RWBT_NMI_SOURCE                     9
+#define RWBLE_NMI_SOURCE                    10
+#define I2C_MASTER_SOURCE                   11
+#define SLC0_INTR_SOURCE                    12
+#define SLC1_INTR_SOURCE                    13
+#define APB_CTRL_INTR_SOURCE                14
+#define UHCI0_INTR_SOURCE                   15
+#define GPIO_INTR_SOURCE                    16
+#define GPIO_NMI_SOURCE                     17
+#define SPI1_INTR_SOURCE                    18
+#define SPI2_INTR_SOURCE                    19
+#define I2S1_INTR_SOURCE                    20
+#define UART0_INTR_SOURCE                   21
+#define UART1_INTR_SOURCE                   22
+#define LEDC_INTR_SOURCE                    23
+#define EFUSE_INTR_SOURCE                   24
+#define TWAI_INTR_SOURCE                    25
+#define USB_INTR_SOURCE                     26
+#define RTC_CORE_INTR_SOURCE                27
+#define RMT_INTR_SOURCE                     28
+#define I2C_EXT0_INTR_SOURCE                29
+#define TIMER1_INTR_SOURCE                  30
+#define TIMER2_INTR_SOURCE                  31
+#define TG0_T0_LEVEL_INTR_SOURCE            32
+#define TG0_WDT_LEVEL_INTR_SOURCE           33
+#define TG1_T0_LEVEL_INTR_SOURCE            34
+#define TG1_WDT_LEVEL_INTR_SOURCE           35
+#define CACHE_IA_INTR_SOURCE                36
+#define SYSTIMER_TARGET0_EDGE_INTR_SOURCE   37
+#define SYSTIMER_TARGET1_EDGE_INTR_SOURCE   38
+#define SYSTIMER_TARGET2_EDGE_INTR_SOURCE   39
+#define SPI_MEM_REJECT_CACHE_INTR_SOURCE    40
+#define ICACHE_PRELOAD0_INTR_SOURCE         41
+#define ICACHE_SYNC0_INTR_SOURCE            42
+#define APB_ADC_INTR_SOURCE                 43
+#define DMA_CH0_INTR_SOURCE                 44
+#define DMA_CH1_INTR_SOURCE                 45
+#define DMA_CH2_INTR_SOURCE                 46
+#define RSA_INTR_SOURCE                     47
+#define AES_INTR_SOURCE                     48
+#define SHA_INTR_SOURCE                     49
+#define FROM_CPU_INTR0_SOURCE               50
+#define FROM_CPU_INTR1_SOURCE               51
+#define FROM_CPU_INTR2_SOURCE               52
+#define FROM_CPU_INTR3_SOURCE               53
+#define ASSIST_DEBUG_INTR_SOURCE            54
+#define DMA_APBPERI_PMS_INTR_SOURCE         55
+#define CORE0_IRAM0_PMS_INTR_SOURCE         56
+#define CORE0_DRAM0_PMS_INTR_SOURCE         57
+#define CORE0_PIF_PMS_INTR_SOURCE           58
+#define CORE0_PIF_PMS_SIZE_INTR_SOURCE      59
+#define BAK_PMS_VIOLATE_INTR_SOURCE         60
+#define CACHE_CORE0_ACS_INTR_SOURCE         61
 
 #endif