fix(esp_hw_support): set pau entry backup configuration with link update

This commit is contained in:
wuzhenghui 2024-05-23 20:07:56 +08:00
parent 1854036f92
commit 2ab144dc3a
No known key found for this signature in database
GPG Key ID: 3EFEDECDEBA39BB9
2 changed files with 4 additions and 13 deletions

View File

@ -247,19 +247,6 @@ void pmu_sleep_init(const pmu_sleep_config_t *config, bool dslp)
} }
pmu_sleep_analog_init(PMU_instance(), &config->analog, dslp); pmu_sleep_analog_init(PMU_instance(), &config->analog, dslp);
pmu_sleep_param_init(PMU_instance(), &config->param, dslp); pmu_sleep_param_init(PMU_instance(), &config->param, dslp);
// When light sleep (PD_TOP), the PAU will power down. so need use LP_SYS_BACKUP_DMA_CFG2_REG to store recover link address.
if (!dslp && PMU.hp_sys[PMU_MODE_HP_SLEEP].dig_power.top_pd_en) {
if (PMU.hp_sys[PMU_MODE_HP_SLEEP].backup.hp_active2sleep_backup_en ||
PMU.hp_sys[PMU_MODE_HP_ACTIVE].backup.hp_sleep2active_backup_en) {
uint32_t link_sel = PMU.hp_sys[PMU_MODE_HP_SLEEP].backup.hp_active2sleep_backup_mode & 0x3;
uint32_t link_addr = REG_READ(PAU_REGDMA_LINK_0_ADDR_REG + link_sel * 4);
lp_sys_ll_set_pau_link_addr(link_addr);
pmu_sleep_enable_regdma_backup();
}
} else {
pmu_sleep_disable_regdma_backup();
}
} }
void pmu_sleep_increase_ldo_volt(void) { void pmu_sleep_increase_ldo_volt(void) {

View File

@ -20,6 +20,10 @@ void pau_hal_set_regdma_entry_link_addr(pau_hal_context_t *hal, pau_regdma_link_
pau_ll_set_regdma_link2_addr(hal->dev, (*link_addr)[2]); pau_ll_set_regdma_link2_addr(hal->dev, (*link_addr)[2]);
/* The link 3 of REGDMA is reserved, PMU state switching will not use /* The link 3 of REGDMA is reserved, PMU state switching will not use
* REGDMA link 3 */ * REGDMA link 3 */
// When light sleep (PD_TOP), the PAU will power down. so need use LP_SYS_BACKUP_DMA_CFG2_REG
// to store recover link address. We always use link0 as the default retention entry.
lp_sys_ll_set_pau_link_addr((uint32_t)(*link_addr)[0]);
} }
void IRAM_ATTR pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_restore) void IRAM_ATTR pau_hal_start_regdma_modem_link(pau_hal_context_t *hal, bool backup_or_restore)