fix(esp_phy): check hw freq hop done before disabling common clock

This commit is contained in:
zwx
2026-05-14 11:13:33 +08:00
parent 7ff718a988
commit ea556dd1da
6 changed files with 19 additions and 2 deletions
+7 -1
View File
@@ -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 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -267,6 +267,12 @@ void esp_phy_sleep_data_init(void);
void esp_phy_sleep_data_deinit(void); void esp_phy_sleep_data_deinit(void);
#endif #endif
/**
* @brief Wait for frequency hardware hop to complete
*
*/
void phy_wait_freq_hw_hop_done(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+3
View File
@@ -60,6 +60,9 @@ entries:
phy_reg:phy_ant_init (noflash) phy_reg:phy_ant_init (noflash)
phy_reg:bt_filter_reg (noflash) phy_reg:bt_filter_reg (noflash)
phy_hw_freq:phy_en_hw_set_freq (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] [mapping:esp_phy_hxx]
archive: libesp_phy.a archive: libesp_phy.a
+6
View File
@@ -385,3 +385,9 @@ void phy_wakeup_from_modem_state_extra_init(void)
} }
#endif #endif
#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;
}
+1
View File
@@ -440,6 +440,7 @@ void esp_phy_disable(esp_phy_modem_t modem)
// Update WiFi MAC time before disable WiFi/BT common peripheral clock // Update WiFi MAC time before disable WiFi/BT common peripheral clock
phy_update_wifi_mac_time(true, esp_timer_get_time()); phy_update_wifi_mac_time(true, esp_timer_get_time());
#endif #endif
phy_wait_freq_hw_hop_done();
// Disable WiFi/BT common peripheral clock. Do not disable clock for hardware RNG // Disable WiFi/BT common peripheral clock. Do not disable clock for hardware RNG
esp_phy_common_clock_disable(); esp_phy_common_clock_disable();
} }
@@ -153,6 +153,7 @@ void esp_phy_disable(esp_phy_modem_t modem)
#endif #endif
phy_close_rf(); phy_close_rf();
phy_xpd_tsens(); phy_xpd_tsens();
phy_wait_freq_hw_hop_done();
#if SOC_MODEM_CLOCK_IS_INDEPENDENT #if SOC_MODEM_CLOCK_IS_INDEPENDENT
modem_clock_module_disable(PERIPH_PHY_MODULE); modem_clock_module_disable(PERIPH_PHY_MODULE);
#endif #endif