diff --git a/components/esp_phy/include/esp_private/phy.h b/components/esp_phy/include/esp_private/phy.h index db622651822..b36202193e7 100644 --- a/components/esp_phy/include/esp_private/phy.h +++ b/components/esp_phy/include/esp_private/phy.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -267,6 +267,12 @@ void esp_phy_sleep_data_init(void); void esp_phy_sleep_data_deinit(void); #endif +/** + * @brief Wait for frequency hardware hop to complete + * + */ +void phy_wait_freq_hw_hop_done(void); + #ifdef __cplusplus } #endif diff --git a/components/esp_phy/lib b/components/esp_phy/lib index 6b304ed9f5b..59c1234e929 160000 --- a/components/esp_phy/lib +++ b/components/esp_phy/lib @@ -1 +1 @@ -Subproject commit 6b304ed9f5ba7f70b2bde6549f24f18f6b634f23 +Subproject commit 59c1234e929212aec0fdda75769b759951235536 diff --git a/components/esp_phy/linker_esp32hxx.lf b/components/esp_phy/linker_esp32hxx.lf index 303b90129d2..88b10f57394 100644 --- a/components/esp_phy/linker_esp32hxx.lf +++ b/components/esp_phy/linker_esp32hxx.lf @@ -60,6 +60,9 @@ entries: phy_reg:phy_ant_init (noflash) phy_reg:bt_filter_reg (noflash) phy_hw_freq:phy_en_hw_set_freq (noflash) + phy_api:phy_wait_freq_hw_hop_done (noflash) + phy_hw_freq:phy_wait_freq_set_busy (noflash) + phy_basic:phy_time_now (noflash) [mapping:esp_phy_hxx] archive: libesp_phy.a diff --git a/components/esp_phy/src/phy_common.c b/components/esp_phy/src/phy_common.c index 0b30d9564d7..17b77825d2a 100644 --- a/components/esp_phy/src/phy_common.c +++ b/components/esp_phy/src/phy_common.c @@ -385,3 +385,9 @@ void phy_wakeup_from_modem_state_extra_init(void) } #endif #endif + +__attribute__((weak)) void phy_wait_freq_hw_hop_done(void) +{ + ESP_LOGD(TAG, "phy_wait_freq_hw_hop_done is not implemented"); + return; +} diff --git a/components/esp_phy/src/phy_init.c b/components/esp_phy/src/phy_init.c index 1324dabacb6..4bab302fb30 100644 --- a/components/esp_phy/src/phy_init.c +++ b/components/esp_phy/src/phy_init.c @@ -440,6 +440,7 @@ void esp_phy_disable(esp_phy_modem_t modem) // Update WiFi MAC time before disable WiFi/BT common peripheral clock phy_update_wifi_mac_time(true, esp_timer_get_time()); #endif + phy_wait_freq_hw_hop_done(); // Disable WiFi/BT common peripheral clock. Do not disable clock for hardware RNG esp_phy_common_clock_disable(); } diff --git a/components/esp_phy/src/phy_init_esp32hxx.c b/components/esp_phy/src/phy_init_esp32hxx.c index c8a63e377b9..dcbca4f325d 100644 --- a/components/esp_phy/src/phy_init_esp32hxx.c +++ b/components/esp_phy/src/phy_init_esp32hxx.c @@ -153,6 +153,7 @@ void esp_phy_disable(esp_phy_modem_t modem) #endif phy_close_rf(); phy_xpd_tsens(); + phy_wait_freq_hw_hop_done(); #if SOC_MODEM_CLOCK_IS_INDEPENDENT modem_clock_module_disable(PERIPH_PHY_MODULE); #endif