Sfoglia il codice sorgente

Merge branch 'bugfix/confirmed_bugfix_from_baidu_proj_4.0' into 'release/v4.0'

Fix BT controller dead issue caused by clk overflow [backport v4.0]

See merge request espressif/esp-idf!10546
Jiang Jiang Jian 5 anni fa
parent
commit
e2cd3495a1

+ 41 - 0
components/bt/Kconfig

@@ -77,6 +77,47 @@ menu "Bluetooth"
             default 1 if BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
             default 0
 
+        menuconfig BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
+            bool "PCM Signal Config (Role and Polar)"
+            depends on BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM
+            default y
+
+        choice BTDM_CTRL_PCM_ROLE
+            prompt "PCM Role"
+            depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
+            help
+                PCM role can be configured as PCM master or PCM slave
+
+            config BTDM_CTRL_PCM_ROLE_MASTER
+                bool "PCM Master"
+            config BTDM_CTRL_PCM_ROLE_SLAVE
+                bool "PCM Slave"
+        endchoice
+
+        choice BTDM_CTRL_PCM_POLAR
+            prompt "PCM Polar"
+            depends on BTDM_CTRL_PCM_ROLE_EDGE_CONFIG
+            help
+                PCM polarity can be configured as Falling Edge or Rising Edge
+
+            config BTDM_CTRL_PCM_POLAR_FALLING_EDGE
+                bool "Falling Edge"
+            config BTDM_CTRL_PCM_POLAR_RISING_EDGE
+                bool "Rising Edge"
+        endchoice
+
+        config BTDM_CTRL_PCM_ROLE_EFF
+            int
+            default 0 if BTDM_CTRL_PCM_ROLE_MASTER
+            default 1 if BTDM_CTRL_PCM_ROLE_SLAVE
+            default 0
+
+        config BTDM_CTRL_PCM_POLAR_EFF
+            int
+            default 0 if BTDM_CTRL_PCM_POLAR_FALLING_EDGE
+            default 1 if BTDM_CTRL_PCM_POLAR_RISING_EDGE
+            default 0
+
         config BTDM_CTRL_AUTO_LATENCY
             bool "Auto latency"
             depends on BTDM_CTRL_MODE_BTDM

+ 1 - 1
components/bt/controller/lib

@@ -1 +1 @@
-Subproject commit 6cd3e6546e4b068370d0b4e662cc1ff47d11f11a
+Subproject commit a8fe3aa2ea21ee8e53bde132d977ac44159af3da

+ 5 - 1
components/bt/include/esp_bt.h

@@ -25,7 +25,7 @@
 extern "C" {
 #endif
 
-#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL  0x20200611
+#define ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL  0x20200622
 
 /**
  * @brief Bluetooth mode for controller enable/disable
@@ -149,6 +149,8 @@ the adv packet will be discarded until the memory is restored. */
     .bt_legacy_auth_vs_evt = BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF,         \
     .bt_max_sync_conn = CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF,         \
     .ble_sca = CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF,             \
+    .pcm_role = CONFIG_BTDM_CTRL_PCM_ROLE_EFF,                             \
+    .pcm_polar = CONFIG_BTDM_CTRL_PCM_POLAR_EFF,                           \
     .magic = ESP_BT_CONTROLLER_CONFIG_MAGIC_VAL,                           \
 };
 
@@ -188,6 +190,8 @@ typedef struct {
      */
     uint8_t bt_max_sync_conn;               /*!< BR/EDR maximum ACL connection numbers. Effective in menuconfig */
     uint8_t ble_sca;                        /*!< BLE low power crystal accuracy index */
+    uint8_t pcm_role;                       /*!< PCM role (master & slave)*/
+    uint8_t pcm_polar;                      /*!< PCM polar trig (falling clk edge & rising clk edge) */
     uint32_t magic;                         /*!< Magic number */
 } esp_bt_controller_config_t;
 

+ 4 - 0
components/esp_rom/esp32/ld/esp32.rom.ld

@@ -111,6 +111,8 @@ PROVIDE ( hci_fc_env = 0x3ffb9340 );
 PROVIDE ( jd_decomp = 0x400613e8 );
 PROVIDE ( jd_prepare = 0x40060fa8 );
 PROVIDE ( ke_env = 0x3ffb93cc );
+PROVIDE ( ke_handler_search = 0x4001a430 );
+PROVIDE ( ke_task_env = 0x3ffb81d4 );
 PROVIDE ( lb_default_handler = 0x3ff982b8 );
 PROVIDE ( lb_default_state_tab_p_get = 0x4001c198 );
 PROVIDE ( lb_env = 0x3ffb9424 );
@@ -656,6 +658,7 @@ PROVIDE ( ld_acl_rx_sync2 = 0x4002fd8c );
 PROVIDE ( ld_acl_rx_no_sync = 0x4002fe78 );
 PROVIDE ( ld_acl_clk_isr = 0x40030cf8 );
 PROVIDE ( ld_acl_rsw_frm_cbk = 0x40033bb0 );
+PROVIDE ( ld_acl_sco_rsvd_check = 0x4002fa94 );
 PROVIDE ( ld_sco_modify = 0x40031778 );
 PROVIDE ( lm_cmd_cmp_send = 0x40051838 );
 PROVIDE ( ld_sco_frm_cbk = 0x400349dc );
@@ -663,6 +666,7 @@ PROVIDE ( ld_acl_sniff_frm_cbk = 0x4003482c );
 PROVIDE ( ld_inq_end = 0x4003ab48 );
 PROVIDE ( ld_inq_sched = 0x4003aba4 );
 PROVIDE ( ld_inq_frm_cbk = 0x4003ae4c );
+PROVIDE ( ld_pscan_frm_cbk = 0x4003ebe4 );
 PROVIDE ( r_ld_acl_active_hop_types_get = 0x40036e10 );
 PROVIDE ( r_ld_acl_afh_confirm = 0x40036d40 );
 PROVIDE ( r_ld_acl_afh_prepare = 0x40036c84 );