diff --git a/components/esp_hw_support/include/esp_private/esp_pau.h b/components/esp_hw_support/include/esp_private/esp_pau.h index a56f034fd58..0b17f68c5a2 100644 --- a/components/esp_hw_support/include/esp_private/esp_pau.h +++ b/components/esp_hw_support/include/esp_private/esp_pau.h @@ -25,7 +25,7 @@ extern "C" { */ void pau_regdma_set_entry_link_addr(pau_regdma_link_addr_t *link_entries); -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #if SOC_PM_PAU_REGDMA_LINK_MODEM /** * @brief Set the address of WiFi MAC REGDMA Link in modem state @@ -55,7 +55,6 @@ void pau_regdma_trigger_wifimac_link_backup(void); */ void pau_regdma_trigger_wifimac_link_restore(void); #endif -#endif #if SOC_PM_RETENTION_SW_TRIGGER_REGDMA /** @@ -102,6 +101,7 @@ void pau_regdma_trigger_extra_link_restore(void); */ bool pau_regdma_enable_aon_link_entry(bool enable); #endif +#endif #ifdef __cplusplus } diff --git a/components/esp_hw_support/include/esp_private/sleep_modem.h b/components/esp_hw_support/include/esp_private/sleep_modem.h index ae6e5213dd4..873295f7ae8 100644 --- a/components/esp_hw_support/include/esp_private/sleep_modem.h +++ b/components/esp_hw_support/include/esp_private/sleep_modem.h @@ -15,11 +15,11 @@ extern "C" { #endif -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #define SLEEP_MODEM_SKIP_I2C_MST_CLK_RETENTION (BIT(0)) #define SLEEP_MODEM_SKIP_WIFI_RETENTION (BIT(1)) #define SLEEP_MODEM_RESET_RETENTION (0) -#endif // SOC_PM_SUPPORT_PMU_MODEM_STATE +#endif // SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY typedef enum { SLEEP_MODEM_WIFI = 1, SLEEP_MODEM_BT = 2, @@ -89,7 +89,7 @@ void sleep_modem_mac_bb_power_down_prepare(void); void sleep_modem_mac_bb_power_up_prepare(void); #endif // SOC_PM_RETENTION_HAS_CLOCK_BUG && CONFIG_MAC_BB_PD -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY /** * @brief The retention action in the modem state of PHY module @@ -113,7 +113,7 @@ bool sleep_modem_phy_link_enabled(void); */ bool sleep_modem_phy_link_done(void); -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ /** * @brief Whether the current target allows Modem or the TOP power domain to be powered off during light sleep @@ -211,7 +211,7 @@ void esp_pm_register_light_sleep_default_params_config_callback(update_light_sle */ void esp_pm_unregister_light_sleep_default_params_config_callback(void); -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY /** * @brief Init phy link. * @@ -279,7 +279,7 @@ esp_err_t sleep_phy_link_deinit(void *link_head); * @param flags A bitmap to indicate the PHY link regdma description configuration flag */ void sleep_phy_link_config(void *link_context, uint32_t flags); -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ #ifdef __cplusplus } diff --git a/components/esp_hw_support/lowpower/CMakeLists.txt b/components/esp_hw_support/lowpower/CMakeLists.txt index da2cbc50940..da1a90483cc 100644 --- a/components/esp_hw_support/lowpower/CMakeLists.txt +++ b/components/esp_hw_support/lowpower/CMakeLists.txt @@ -35,7 +35,7 @@ if((CONFIG_SOC_PM_SUPPORT_MODEM_PD OR CONFIG_SOC_PM_SUPPORT_TOP_PD) AND CONFIG_S list(APPEND srcs "port/${target}/sleep_clock.c") endif() -if(CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE) +if(CONFIG_SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY) list(APPEND srcs "port/${target}/sleep_phy.c") endif() diff --git a/components/esp_hw_support/lowpower/port/esp32c5/sleep_phy.c b/components/esp_hw_support/lowpower/port/esp32c5/sleep_phy.c index 8bfc3c38444..6f73d8fd403 100644 --- a/components/esp_hw_support/lowpower/port/esp32c5/sleep_phy.c +++ b/components/esp_hw_support/lowpower/port/esp32c5/sleep_phy.c @@ -17,7 +17,7 @@ #include "esp_private/sleep_modem.h" #include "esp_private/sleep_retention.h" -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #define SARADC_TSENS_REG (0x6000e058) #define SARADC_TSENS_PU (BIT(22)) @@ -171,4 +171,4 @@ void sleep_phy_skip_wifi_reg(bool skip) } } -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ diff --git a/components/esp_hw_support/lowpower/port/esp32c6/sleep_phy.c b/components/esp_hw_support/lowpower/port/esp32c6/sleep_phy.c index afcc0bf3d1d..c0c15bb6594 100644 --- a/components/esp_hw_support/lowpower/port/esp32c6/sleep_phy.c +++ b/components/esp_hw_support/lowpower/port/esp32c6/sleep_phy.c @@ -16,7 +16,7 @@ #include "esp_private/sleep_modem.h" #include "esp_private/sleep_retention.h" -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #define SARADC_TSENS_REG (0x6000e058) #define SARADC_TSENS_PU (BIT(22)) @@ -180,4 +180,4 @@ void sleep_phy_skip_wifi_reg(bool skip) regdma_link_set_skip_flag(s_phy_skip_links.skip_link[i], skip, skip); } } -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ diff --git a/components/esp_hw_support/lowpower/port/esp32c61/sleep_phy.c b/components/esp_hw_support/lowpower/port/esp32c61/sleep_phy.c index b7d28af5418..fd1f949606d 100644 --- a/components/esp_hw_support/lowpower/port/esp32c61/sleep_phy.c +++ b/components/esp_hw_support/lowpower/port/esp32c61/sleep_phy.c @@ -16,7 +16,7 @@ #include "esp_private/sleep_modem.h" #include "esp_private/sleep_retention.h" -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #define SARADC_TSENS_REG (0x6000e058) #define SARADC_TSENS_PU (BIT(22)) @@ -174,4 +174,4 @@ void sleep_phy_skip_wifi_reg(bool skip) } } -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ diff --git a/components/esp_hw_support/port/pau_regdma.c b/components/esp_hw_support/port/pau_regdma.c index d9d85cd9cc2..3fa45c37b71 100644 --- a/components/esp_hw_support/port/pau_regdma.c +++ b/components/esp_hw_support/port/pau_regdma.c @@ -68,7 +68,7 @@ void pau_regdma_set_entry_link_addr(pau_regdma_link_addr_t *link_entries) pau_hal_set_regdma_entry_link_addr(PAU_instance()->hal, link_entries); } -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #if SOC_PM_PAU_REGDMA_LINK_MODEM void pau_regdma_set_modem_link_addr(void *link_addr) { @@ -87,6 +87,7 @@ void IRAM_ATTR pau_regdma_trigger_modem_link_restore(void) pau_hal_start_regdma_modem_link(PAU_instance()->hal, false); pau_hal_stop_regdma_modem_link(PAU_instance()->hal); } +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ #if SOC_PM_PAU_REGDMA_MODEM_WIFIMAC_WORKAROUND void IRAM_ATTR pau_regdma_trigger_wifimac_link_backup(void) @@ -101,7 +102,6 @@ void IRAM_ATTR pau_regdma_trigger_wifimac_link_restore(void) pau_hal_stop_regdma_wifimac_link(PAU_instance()->hal); } #endif -#endif #if SOC_PM_RETENTION_SW_TRIGGER_REGDMA void IRAM_ATTR pau_regdma_set_system_link_addr(void *link_addr) diff --git a/components/esp_hw_support/sleep_modem.c b/components/esp_hw_support/sleep_modem.c index a3da56c4df6..b7e5b05785a 100644 --- a/components/esp_hw_support/sleep_modem.c +++ b/components/esp_hw_support/sleep_modem.c @@ -129,7 +129,7 @@ void mac_bb_power_up_cb_execute(void) #endif ///CONFIG_MAC_BB_PD -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY typedef struct sleep_modem_config { _lock_t phy_link_lock; @@ -216,7 +216,7 @@ inline __attribute__((always_inline)) bool sleep_modem_phy_link_done(void) return (s_sleep_modem.phy_link_done == 1); } -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ bool modem_domain_pd_allowed(void) { diff --git a/components/esp_phy/src/phy_init.c b/components/esp_phy/src/phy_init.c index 84d16802299..accecc405d5 100644 --- a/components/esp_phy/src/phy_init.c +++ b/components/esp_phy/src/phy_init.c @@ -348,9 +348,11 @@ void esp_phy_enable(esp_phy_modem_t modem) #endif s_is_phy_calibrated = true; } else { +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #if SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP bool wifimac_link_is_sel = false; if (!pm_mac_modem_rf_already_enabled()) { +#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP */ if (sleep_modem_phy_link_enabled() && sleep_modem_phy_link_done()) { #if SOC_PM_PAU_REGDMA_LINK_IDX_PHY && SOC_PM_PAU_REGDMA_MODEM_WIFIMAC_WORKAROUND /* @@ -369,12 +371,14 @@ void esp_phy_enable(esp_phy_modem_t modem) } else { phy_wakeup_init(); } +#if SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP } else { phy_wakeup_from_modem_state_extra_init(); } +#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP */ #else phy_wakeup_init(); -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ #if SOC_PM_MODEM_RETENTION_BY_BACKUPDMA phy_digital_regs_load(); @@ -428,8 +432,10 @@ void esp_phy_disable(esp_phy_modem_t modem) #if SOC_PM_MODEM_RETENTION_BY_BACKUPDMA phy_digital_regs_store(); #endif +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #if SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP pm_mac_modem_clear_rf_power_state(); +#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP */ if (sleep_modem_phy_link_enabled()) { bool wifimac_link_is_sel = false; #if SOC_PM_PAU_REGDMA_LINK_IDX_PHY && SOC_PM_PAU_REGDMA_MODEM_WIFIMAC_WORKAROUND @@ -437,7 +443,7 @@ void esp_phy_disable(esp_phy_modem_t modem) #endif sleep_modem_do_phy_retention(false, wifimac_link_is_sel); } else -#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP */ +#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY */ { // Disable PHY and RF. phy_close_rf(); diff --git a/components/hal/include/hal/pau_hal.h b/components/hal/include/hal/pau_hal.h index 0b03b53a2dd..6ea1e9d7aa2 100644 --- a/components/hal/include/hal/pau_hal.h +++ b/components/hal/include/hal/pau_hal.h @@ -37,7 +37,7 @@ typedef struct { */ void pau_hal_set_regdma_entry_link_addr(pau_hal_context_t *hal, pau_regdma_link_addr_t *link_addr); -#if SOC_PM_SUPPORT_PMU_MODEM_STATE +#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY #if SOC_PM_PAU_REGDMA_LINK_MODEM /** * @brief Set regdma modem link address diff --git a/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in b/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in index e0dd804118f..25921537dc7 100644 --- a/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32c5/include/soc/Kconfig.soc_caps.in @@ -1707,6 +1707,10 @@ config SOC_PM_SUPPORT_RTC_PERIPH_PD bool default y +config SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY + bool + default y + config SOC_PM_SUPPORT_PMU_MODEM_STATE bool default y diff --git a/components/soc/esp32c5/include/soc/soc_caps.h b/components/soc/esp32c5/include/soc/soc_caps.h index d84702d527b..200cdbba4fb 100644 --- a/components/soc/esp32c5/include/soc/soc_caps.h +++ b/components/soc/esp32c5/include/soc/soc_caps.h @@ -654,6 +654,7 @@ #define SOC_PM_SUPPORT_MAC_BB_PD (1) #define SOC_PM_SUPPORT_RTC_PERIPH_PD (1) +#define SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY (1) #define SOC_PM_SUPPORT_PMU_MODEM_STATE (1) /* macro redefine for pass esp_wifi headers md5sum check */ #define MAC_SUPPORT_PMU_MODEM_STATE SOC_PM_SUPPORT_PMU_MODEM_STATE diff --git a/components/soc/esp32c6/include/soc/Kconfig.soc_caps.in b/components/soc/esp32c6/include/soc/Kconfig.soc_caps.in index e394af8d1ab..9d8e23b6954 100644 --- a/components/soc/esp32c6/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32c6/include/soc/Kconfig.soc_caps.in @@ -1463,6 +1463,10 @@ config SOC_PM_SUPPORT_RTC_PERIPH_PD bool default y +config SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY + bool + default y + config SOC_PM_SUPPORT_PMU_MODEM_STATE bool default y diff --git a/components/soc/esp32c6/include/soc/soc_caps.h b/components/soc/esp32c6/include/soc/soc_caps.h index 8e6c59ab12c..1f1cf87b0de 100644 --- a/components/soc/esp32c6/include/soc/soc_caps.h +++ b/components/soc/esp32c6/include/soc/soc_caps.h @@ -568,7 +568,8 @@ #define SOC_PM_SUPPORT_MAC_BB_PD (1) #define SOC_PM_SUPPORT_RTC_PERIPH_PD (1) -#define SOC_PM_SUPPORT_PMU_MODEM_STATE (1) +#define SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY (1) +#define SOC_PM_SUPPORT_PMU_MODEM_STATE (1) /* macro redefine for pass esp_wifi headers md5sum check */ #define MAC_SUPPORT_PMU_MODEM_STATE SOC_PM_SUPPORT_PMU_MODEM_STATE diff --git a/components/soc/esp32c61/include/soc/Kconfig.soc_caps.in b/components/soc/esp32c61/include/soc/Kconfig.soc_caps.in index 7073f2a13b5..2583ca353c5 100644 --- a/components/soc/esp32c61/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32c61/include/soc/Kconfig.soc_caps.in @@ -1195,6 +1195,10 @@ config SOC_PM_SUPPORT_RTC_PERIPH_PD bool default y +config SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY + bool + default y + config SOC_PM_SUPPORT_PMU_MODEM_STATE bool default y diff --git a/components/soc/esp32c61/include/soc/soc_caps.h b/components/soc/esp32c61/include/soc/soc_caps.h index 6fed4eca542..2fa51a4c45d 100644 --- a/components/soc/esp32c61/include/soc/soc_caps.h +++ b/components/soc/esp32c61/include/soc/soc_caps.h @@ -477,6 +477,7 @@ #define SOC_PM_SUPPORT_MAC_BB_PD (1) #define SOC_PM_SUPPORT_RTC_PERIPH_PD (1) +#define SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY (1) #define SOC_PM_SUPPORT_PMU_MODEM_STATE (1) /* macro redefine for pass esp_wifi headers md5sum check */ #define MAC_SUPPORT_PMU_MODEM_STATE SOC_PM_SUPPORT_PMU_MODEM_STATE