]> granicus.if.org Git - esp-idf/commitdiff
component/bt : fix interrupt number conflict
authorTian Hao <tianhao@espressif.com>
Thu, 15 Jun 2017 09:20:25 +0000 (17:20 +0800)
committerTian Hao <tianhao@espressif.com>
Thu, 15 Jun 2017 11:41:54 +0000 (19:41 +0800)
1. the typical problem is when push keyboard on serial tool, the bluetooth may stop.

components/esp32/cpu_start.c
components/esp32/intr_alloc.c
components/soc/esp32/include/soc/soc.h

index dc29d3dd185b215c79a92641efa657fac5f93a60..e70613619ea687f0edf64e2b3b4ee64cb669c696 100644 (file)
@@ -207,6 +207,17 @@ void IRAM_ATTR call_start_cpu1()
 }
 #endif //!CONFIG_FREERTOS_UNICORE
 
+static void intr_matrix_clear(void)
+{
+    //Clear all the interrupt matrix register
+    for (int i = ETS_WIFI_MAC_INTR_SOURCE; i <= ETS_CACHE_IA_INTR_SOURCE; i++) {
+        intr_matrix_set(0, i, ETS_INVALID_INUM);
+#if !CONFIG_FREERTOS_UNICORE
+        intr_matrix_set(1, i, ETS_INVALID_INUM);
+#endif
+    }
+}
+
 void start_cpu0_default(void)
 {
     esp_setup_syscall_table();
@@ -220,6 +231,7 @@ void start_cpu0_default(void)
     trax_start_trace(TRAX_DOWNCOUNT_WORDS);
 #endif
     esp_clk_init();
+    intr_matrix_clear();
 #ifndef CONFIG_CONSOLE_UART_NONE
     uart_div_modify(CONFIG_CONSOLE_UART_NUM, (rtc_clk_apb_freq_get() << 4) / CONFIG_CONSOLE_UART_BAUDRATE);
 #endif
index b35973144c22df9957e0f0a7162f94ef1e59c801..9686cc7eef23ffd5371de18c2363632715a534be 100644 (file)
@@ -96,7 +96,7 @@ const static int_desc_t int_desc[32]={
     { 1, INTTP_LEVEL, {INTDESC_NORMAL, INTDESC_NORMAL} }, //2
     { 1, INTTP_LEVEL, {INTDESC_NORMAL, INTDESC_NORMAL} }, //3
     { 1, INTTP_LEVEL, {INTDESC_RESVD,  INTDESC_NORMAL} }, //4
-    { 1, INTTP_LEVEL, {INTDESC_RESVD,  INTDESC_NORMAL} }, //5
+    { 1, INTTP_LEVEL, {INTDESC_RESVD,  INTDESC_RESVD } }, //5
     { 1, INTTP_NA,    {INT6RES,        INT6RES       } }, //6
     { 1, INTTP_NA,    {INTDESC_SPECIAL,INTDESC_SPECIAL}}, //7
     { 1, INTTP_LEVEL, {INTDESC_RESVD,  INTDESC_RESVD } }, //8
index 218cdf96d7b6a3f7754f1dd093f5c65923f9ed1d..60a930a8d6652f06e38e52d719b82dd8c003d6df 100644 (file)
 #define ETS_UART1_INUM                          5
 //Other interrupt number should be managed by the user
 
+//Invalid interrupt for number interrupt matrix
+#define ETS_INVALID_INUM                        6
 
 #endif /* _ESP32_SOC_H_ */