diff --git a/components/bt/porting_btdm/controller/btdm_common/src/btdm_coex.c b/components/bt/porting_btdm/controller/btdm_common/src/btdm_coex.c index 7fbf1392769..14899cb6c4f 100644 --- a/components/bt/porting_btdm/controller/btdm_common/src/btdm_coex.c +++ b/components/bt/porting_btdm/controller/btdm_common/src/btdm_coex.c @@ -6,6 +6,7 @@ #include #include "sdkconfig.h" #include "btdm_coex.h" +#include "esp_attr.h" #if CONFIG_SW_COEXIST_ENABLE #include "private/esp_coexist_internal.h" @@ -150,7 +151,7 @@ wr_btdm_coex_iso_stop(uint16_t handle) #endif /* CONFIG_SW_COEXIST_ENABLE */ } -uint16_t +uint16_t IRAM_ATTR wr_btdm_coex_iso_protect_frame_thres_get(void) { #if CONFIG_SW_COEXIST_ENABLE && CONFIG_BT_LE_ISO_SUPPORT diff --git a/components/esp_coex/include/esp_coex_i154.h b/components/esp_coex/include/esp_coex_i154.h index f817e901400..ee20845770a 100644 --- a/components/esp_coex/include/esp_coex_i154.h +++ b/components/esp_coex/include/esp_coex_i154.h @@ -1,11 +1,13 @@ /* - * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #ifndef __COEXIST_I154_H__ #define __COEXIST_I154_H__ +#include + /** * @brief 802.15.4 coex event */ @@ -63,4 +65,10 @@ void esp_coex_ieee802154_status_enable(void); */ void esp_coex_ieee802154_status_disable(void); +/** + * @brief Configure the 802.15.4 force Rx state + * @param enable true to enable, false to disable + */ +void esp_coex_ieee802154_force_rx_enable(bool enable); + #endif diff --git a/components/esp_coex/lib b/components/esp_coex/lib index 3c490f8059e..ddc56fa524a 160000 --- a/components/esp_coex/lib +++ b/components/esp_coex/lib @@ -1 +1 @@ -Subproject commit 3c490f8059e0a7eeedda30aaa1e4b3afad06f632 +Subproject commit ddc56fa524a38df3098d2f36475fbe3eefe9b4f4 diff --git a/components/esp_rom/esp32s31/ld/esp32s31.rom.coexist.ld b/components/esp_rom/esp32s31/ld/esp32s31.rom.coexist.ld index e81d51a2197..2de188dc536 100644 --- a/components/esp_rom/esp32s31/ld/esp32s31.rom.coexist.ld +++ b/components/esp_rom/esp32s31/ld/esp32s31.rom.coexist.ld @@ -35,7 +35,7 @@ coex_hw_timer_set = 0x2f800c24; coex_schm_interval_set = 0x2f800c28; coex_schm_lock = 0x2f800c2c; coex_schm_unlock = 0x2f800c30; -coex_status_get = 0x2f800c34; +//coex_status_get = 0x2f800c34; coex_wifi_release = 0x2f800c38; esp_coex_ble_conn_dynamic_prio_get = 0x2f800c3c; /* Data (.data, .bss, .rodata) */ diff --git a/components/ieee802154/driver/esp_ieee802154_dev.c b/components/ieee802154/driver/esp_ieee802154_dev.c index 97c117c29a8..b3b796804c9 100644 --- a/components/ieee802154/driver/esp_ieee802154_dev.c +++ b/components/ieee802154/driver/esp_ieee802154_dev.c @@ -925,12 +925,19 @@ esp_err_t ieee802154_mac_init(void) ESP_RETURN_ON_FALSE(ieee802154_sleep_init() == ESP_OK, ESP_FAIL, IEEE802154_TAG, "IEEE802154 MAC sleep init failed"); +#if CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE + esp_coex_ieee802154_force_rx_enable(true); +#endif + return ret; } esp_err_t ieee802154_mac_deinit(void) { esp_err_t ret = ESP_OK; +#if CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE + esp_coex_ieee802154_force_rx_enable(false); +#endif if (s_ieee802154_isr_handle) { ret = esp_intr_free(s_ieee802154_isr_handle); s_ieee802154_isr_handle = NULL;