mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 18:57:19 +02:00
Merge branch 'change/change_regdma_power_issue_macro_v5.2' into 'release/v5.2'
change(pm): change macro SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG (backport v5.2) See merge request espressif/esp-idf!27992
This commit is contained in:
@ -43,7 +43,7 @@ void pau_regdma_trigger_modem_link_backup(void);
|
|||||||
void pau_regdma_trigger_modem_link_restore(void);
|
void pau_regdma_trigger_modem_link_restore(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
/**
|
/**
|
||||||
* @brief Set the address of system REGDMA Link in active state
|
* @brief Set the address of system REGDMA Link in active state
|
||||||
* @param link_addr linked lists address
|
* @param link_addr linked lists address
|
||||||
|
@ -122,7 +122,7 @@ void sleep_retention_do_extra_retention(bool backup_or_restore);
|
|||||||
*/
|
*/
|
||||||
uint32_t sleep_retention_get_modules(void);
|
uint32_t sleep_retention_get_modules(void);
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
/**
|
/**
|
||||||
* @brief Software trigger REGDMA to do system linked list retention
|
* @brief Software trigger REGDMA to do system linked list retention
|
||||||
*
|
*
|
||||||
|
@ -62,7 +62,7 @@ void pau_regdma_trigger_modem_link_restore(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
void IRAM_ATTR pau_regdma_set_system_link_addr(void *link_addr)
|
void IRAM_ATTR pau_regdma_set_system_link_addr(void *link_addr)
|
||||||
{
|
{
|
||||||
/* ESP32H2 use software to trigger REGDMA to restore instead of PMU,
|
/* ESP32H2 use software to trigger REGDMA to restore instead of PMU,
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "soc/pcr_reg.h"
|
#include "soc/pcr_reg.h"
|
||||||
#include "modem/modem_syscon_reg.h"
|
#include "modem/modem_syscon_reg.h"
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
#include "modem/modem_lpcon_reg.h"
|
#include "modem/modem_lpcon_reg.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -54,13 +54,13 @@ void sleep_clock_system_retention_deinit(void)
|
|||||||
esp_err_t sleep_clock_modem_retention_init(void)
|
esp_err_t sleep_clock_modem_retention_init(void)
|
||||||
{
|
{
|
||||||
#define N_REGS_SYSCON() (((MODEM_SYSCON_MEM_CONF_REG - MODEM_SYSCON_TEST_CONF_REG) / 4) + 1)
|
#define N_REGS_SYSCON() (((MODEM_SYSCON_MEM_CONF_REG - MODEM_SYSCON_TEST_CONF_REG) / 4) + 1)
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
#define N_REGS_LPCON() (((MODEM_LPCON_MEM_CONF_REG - MODEM_LPCON_TEST_CONF_REG) / 4) + 1)
|
#define N_REGS_LPCON() (((MODEM_LPCON_MEM_CONF_REG - MODEM_LPCON_TEST_CONF_REG) / 4) + 1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const static sleep_retention_entries_config_t modem_regs_retention[] = {
|
const static sleep_retention_entries_config_t modem_regs_retention[] = {
|
||||||
[0] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_MODEMSYSCON_LINK(0), MODEM_SYSCON_TEST_CONF_REG, MODEM_SYSCON_TEST_CONF_REG, N_REGS_SYSCON(), 0, 0), .owner = ENTRY(0) | ENTRY(1) }, /* MODEM SYSCON */
|
[0] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_MODEMSYSCON_LINK(0), MODEM_SYSCON_TEST_CONF_REG, MODEM_SYSCON_TEST_CONF_REG, N_REGS_SYSCON(), 0, 0), .owner = ENTRY(0) | ENTRY(1) }, /* MODEM SYSCON */
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
[1] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_MODEMLPCON_LINK(0), MODEM_LPCON_TEST_CONF_REG, MODEM_LPCON_TEST_CONF_REG, N_REGS_LPCON(), 0, 0), .owner = ENTRY(0) | ENTRY(1) } /* MODEM LPCON */
|
[1] = { .config = REGDMA_LINK_CONTINUOUS_INIT(REGDMA_MODEMLPCON_LINK(0), MODEM_LPCON_TEST_CONF_REG, MODEM_LPCON_TEST_CONF_REG, N_REGS_LPCON(), 0, 0), .owner = ENTRY(0) | ENTRY(1) } /* MODEM LPCON */
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -103,7 +103,7 @@
|
|||||||
#include "esp_private/sleep_clock.h"
|
#include "esp_private/sleep_clock.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
#include "esp_private/sleep_retention.h"
|
#include "esp_private/sleep_retention.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -660,7 +660,7 @@ static esp_err_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags, esp_sleep_mode_t m
|
|||||||
// Will switch to XTAL turn down MSPI speed
|
// Will switch to XTAL turn down MSPI speed
|
||||||
mspi_timing_change_speed_mode_cache_safe(true);
|
mspi_timing_change_speed_mode_cache_safe(true);
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
if (!deep_sleep && (pd_flags & PMU_SLEEP_PD_TOP)) {
|
if (!deep_sleep && (pd_flags & PMU_SLEEP_PD_TOP)) {
|
||||||
sleep_retention_do_system_retention(true);
|
sleep_retention_do_system_retention(true);
|
||||||
}
|
}
|
||||||
@ -892,7 +892,7 @@ static esp_err_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags, esp_sleep_mode_t m
|
|||||||
|
|
||||||
if (!deep_sleep) {
|
if (!deep_sleep) {
|
||||||
s_config.ccount_ticks_record = esp_cpu_get_cycle_count();
|
s_config.ccount_ticks_record = esp_cpu_get_cycle_count();
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
if (pd_flags & PMU_SLEEP_PD_TOP) {
|
if (pd_flags & PMU_SLEEP_PD_TOP) {
|
||||||
sleep_retention_do_system_retention(false);
|
sleep_retention_do_system_retention(false);
|
||||||
}
|
}
|
||||||
|
@ -515,7 +515,7 @@ void IRAM_ATTR sleep_retention_do_extra_retention(bool backup_or_restore)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
void IRAM_ATTR sleep_retention_do_system_retention(bool backup_or_restore)
|
void IRAM_ATTR sleep_retention_do_system_retention(bool backup_or_restore)
|
||||||
{
|
{
|
||||||
#define SYSTEM_LINK_NUM (0)
|
#define SYSTEM_LINK_NUM (0)
|
||||||
|
@ -55,7 +55,7 @@ void pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_rest
|
|||||||
void pau_hal_stop_regdma_modem_link(pau_hal_context_t *hal);
|
void pau_hal_stop_regdma_modem_link(pau_hal_context_t *hal);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
/**
|
/**
|
||||||
* @brief Set regdma system link address
|
* @brief Set regdma system link address
|
||||||
*
|
*
|
||||||
@ -102,7 +102,7 @@ void pau_hal_start_regdma_extra_link(pau_hal_context_t *hal, bool backup_or_rest
|
|||||||
*/
|
*/
|
||||||
void pau_hal_stop_regdma_extra_link(pau_hal_context_t *hal);
|
void pau_hal_stop_regdma_extra_link(pau_hal_context_t *hal);
|
||||||
|
|
||||||
#if SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
/**
|
/**
|
||||||
* @brief Enable or disable PAU module clock
|
* @brief Enable or disable PAU module clock
|
||||||
*
|
*
|
||||||
|
@ -1231,7 +1231,7 @@ config SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG
|
config SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@
|
|||||||
#define SOC_PM_CPU_RETENTION_BY_SW (1)
|
#define SOC_PM_CPU_RETENTION_BY_SW (1)
|
||||||
#define SOC_PM_MODEM_RETENTION_BY_REGDMA (1)
|
#define SOC_PM_MODEM_RETENTION_BY_REGDMA (1)
|
||||||
#define SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY (1) /*!<Supports CRC only the stub code in RTC memory */
|
#define SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY (1) /*!<Supports CRC only the stub code in RTC memory */
|
||||||
#define SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG (1)
|
#define SOC_PM_RETENTION_SW_TRIGGER_REGDMA (1) /*!< In esp32H2, regdma will power off when entering sleep */
|
||||||
|
|
||||||
/*-------------------------- CLOCK SUBSYSTEM CAPS ----------------------------------------*/
|
/*-------------------------- CLOCK SUBSYSTEM CAPS ----------------------------------------*/
|
||||||
#define SOC_CLK_RC_FAST_SUPPORT_CALIBRATION (1)
|
#define SOC_CLK_RC_FAST_SUPPORT_CALIBRATION (1)
|
||||||
|
Reference in New Issue
Block a user