mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
feat(modem): add phy retention related api
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -25,25 +25,58 @@ extern "C" {
|
||||
*/
|
||||
void pau_regdma_set_entry_link_addr(pau_regdma_link_addr_t *link_entries);
|
||||
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY
|
||||
#if SOC_PM_PAU_REGDMA_LINK_MODEM
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
/**
|
||||
* @brief Set the address of WiFi MAC REGDMA Link in modem state
|
||||
* @brief Set the address of modem REGDMA Link in modem state
|
||||
* @param link_addr linked lists address
|
||||
*/
|
||||
void pau_regdma_set_modem_link_addr(void *link_addr);
|
||||
#endif // SOC_PM_PAU_REGDMA_LINK_MODEM
|
||||
|
||||
/**
|
||||
* @brief Software trigger regdma to perform modem link backup
|
||||
*
|
||||
* @param blocking software waits for regdma to complete
|
||||
*/
|
||||
void pau_regdma_trigger_modem_link_backup(void);
|
||||
void pau_regdma_trigger_modem_link_backup(bool blocking);
|
||||
|
||||
/**
|
||||
* @brief Software trigger regdma to perform modem link restore
|
||||
*
|
||||
* @param blocking software waits for regdma to complete
|
||||
*/
|
||||
void pau_regdma_trigger_modem_link_restore(void);
|
||||
#endif
|
||||
void pau_regdma_trigger_modem_link_restore(bool blocking);
|
||||
|
||||
/**
|
||||
* @brief Completion process of regdma for modem link retention
|
||||
*
|
||||
*/
|
||||
void pau_regdma_modem_link_complete(void);
|
||||
|
||||
/**
|
||||
* @brief Enable pau done interrupt
|
||||
*
|
||||
*/
|
||||
void pau_regdma_done_int_enable(void);
|
||||
|
||||
/**
|
||||
* @brief Disable pau done interrupt
|
||||
*
|
||||
*/
|
||||
void pau_regdma_done_int_disable(void);
|
||||
|
||||
/**
|
||||
* @brief Check pau done interrupt status
|
||||
*
|
||||
*/
|
||||
bool pau_get_regdma_done_status(void);
|
||||
|
||||
/**
|
||||
* @brief Clear pau done interrupt status
|
||||
*
|
||||
*/
|
||||
void pau_clear_regdma_done_status(void);
|
||||
|
||||
#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE */
|
||||
|
||||
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||
/**
|
||||
@@ -90,7 +123,6 @@ void pau_regdma_trigger_extra_link_restore(void);
|
||||
*/
|
||||
bool pau_regdma_enable_aon_link_entry(bool enable);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -10,16 +10,17 @@
|
||||
#include "sdkconfig.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_sleep.h"
|
||||
#include "esp_attr.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
#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_REGDMA_TRIGGERED_PHY
|
||||
#endif // SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
typedef enum {
|
||||
SLEEP_MODEM_WIFI = 1,
|
||||
SLEEP_MODEM_BT = 2,
|
||||
@@ -90,9 +91,14 @@ void sleep_modem_mac_bb_power_up_prepare(void);
|
||||
#endif // SOC_PM_RETENTION_HAS_CLOCK_BUG && CONFIG_MAC_BB_PD
|
||||
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY
|
||||
/**
|
||||
* @brief Phy retention completes
|
||||
*
|
||||
*/
|
||||
void sleep_modem_phy_retention_complete(void);
|
||||
|
||||
/**
|
||||
* @brief The retention action in the modem state of PHY module
|
||||
* @brief The retention action of PHY module
|
||||
*
|
||||
* @param restore true for restore the PHY context, false for backup the PHY context
|
||||
*/
|
||||
@@ -210,7 +216,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_REGDMA_TRIGGERED_PHY
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
/**
|
||||
* @brief Init phy link.
|
||||
*
|
||||
@@ -278,7 +284,7 @@ esp_err_t sleep_phy_link_deinit(void *link_context);
|
||||
* @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_REGDMA_TRIGGERED_PHY */
|
||||
#endif /* SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY | SOC_PM_SUPPORT_PMU_MODEM_STATE */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -276,6 +276,22 @@ void sleep_retention_do_extra_retention(bool backup_or_restore);
|
||||
void sleep_retention_do_system_retention(bool backup_or_restore);
|
||||
#endif
|
||||
|
||||
#if SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE
|
||||
/**
|
||||
* @brief Software trigger REGDMA to do phy linked list retention
|
||||
*
|
||||
* @param backup_or_restore true for backup register context to memory
|
||||
* or false for restore to register from memory
|
||||
* @param blocking Software wait for REGDMA to complete
|
||||
*/
|
||||
void sleep_retention_do_phy_retention(bool backup_or_restore, bool blocking);
|
||||
|
||||
/**
|
||||
* @brief Completion process of REGDMA for PHY linked list retention
|
||||
*
|
||||
*/
|
||||
void sleep_retention_phy_retention_complete(void);
|
||||
#endif /*SOC_PM_SUPPORT_REGDMA_TRIGGERED_PHY || SOC_PM_SUPPORT_PMU_MODEM_STATE */
|
||||
#endif // SOC_PAU_SUPPORTED
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user