forked from espressif/esp-idf
bugfix: no need to do retention in deepsleep
This commit is contained in:
@@ -20,23 +20,32 @@
|
|||||||
#define HP(state) (PMU_MODE_HP_ ## state)
|
#define HP(state) (PMU_MODE_HP_ ## state)
|
||||||
#define LP(state) (PMU_MODE_LP_ ## state)
|
#define LP(state) (PMU_MODE_LP_ ## state)
|
||||||
|
|
||||||
|
|
||||||
|
static bool s_pmu_sleep_regdma_backup_enabled;
|
||||||
|
|
||||||
void pmu_sleep_enable_regdma_backup(void)
|
void pmu_sleep_enable_regdma_backup(void)
|
||||||
{
|
{
|
||||||
assert(PMU_instance()->hal);
|
if(!s_pmu_sleep_regdma_backup_enabled){
|
||||||
/* entry 0, 1, 2 is used by pmu HP_SLEEP and HP_ACTIVE, HP_SLEEP
|
assert(PMU_instance()->hal);
|
||||||
* and HP_MODEM or HP_MODEM and HP_ACTIVE states switching,
|
/* entry 0, 1, 2 is used by pmu HP_SLEEP and HP_ACTIVE, HP_SLEEP
|
||||||
* respectively. entry 3 is reserved, not used yet! */
|
* and HP_MODEM or HP_MODEM and HP_ACTIVE states switching,
|
||||||
pmu_hal_hp_set_sleep_active_backup_enable(PMU_instance()->hal);
|
* respectively. entry 3 is reserved, not used yet! */
|
||||||
pmu_hal_hp_set_sleep_modem_backup_enable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_active_backup_enable(PMU_instance()->hal);
|
||||||
pmu_hal_hp_set_modem_active_backup_enable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_modem_backup_enable(PMU_instance()->hal);
|
||||||
|
pmu_hal_hp_set_modem_active_backup_enable(PMU_instance()->hal);
|
||||||
|
s_pmu_sleep_regdma_backup_enabled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pmu_sleep_disable_regdma_backup(void)
|
void pmu_sleep_disable_regdma_backup(void)
|
||||||
{
|
{
|
||||||
assert(PMU_instance()->hal);
|
if(s_pmu_sleep_regdma_backup_enabled){
|
||||||
pmu_hal_hp_set_sleep_active_backup_disable(PMU_instance()->hal);
|
assert(PMU_instance()->hal);
|
||||||
pmu_hal_hp_set_sleep_modem_backup_disable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_active_backup_disable(PMU_instance()->hal);
|
||||||
pmu_hal_hp_set_modem_active_backup_disable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_modem_backup_disable(PMU_instance()->hal);
|
||||||
|
pmu_hal_hp_set_modem_active_backup_disable(PMU_instance()->hal);
|
||||||
|
s_pmu_sleep_regdma_backup_enabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t pmu_sleep_calculate_hw_wait_time(uint32_t pd_flags, uint32_t slowclk_period, uint32_t fastclk_period)
|
uint32_t pmu_sleep_calculate_hw_wait_time(uint32_t pd_flags, uint32_t slowclk_period, uint32_t fastclk_period)
|
||||||
|
@@ -9,9 +9,11 @@
|
|||||||
#include <sys/lock.h>
|
#include <sys/lock.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
||||||
|
#include "esp_err.h"
|
||||||
#include "esp_attr.h"
|
#include "esp_attr.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_heap_caps.h"
|
#include "esp_heap_caps.h"
|
||||||
|
#include "esp_sleep.h"
|
||||||
#include "soc/soc_caps.h"
|
#include "soc/soc_caps.h"
|
||||||
#include "esp_private/esp_regdma.h"
|
#include "esp_private/esp_regdma.h"
|
||||||
#include "esp_private/esp_pau.h"
|
#include "esp_private/esp_pau.h"
|
||||||
@@ -433,6 +435,7 @@ esp_err_t sleep_retention_entries_create(const sleep_retention_entries_config_t
|
|||||||
err = sleep_retention_entries_create_wrapper(retent, num, priority, module);
|
err = sleep_retention_entries_create_wrapper(retent, num, priority, module);
|
||||||
if (err) goto error;
|
if (err) goto error;
|
||||||
pmu_sleep_enable_regdma_backup();
|
pmu_sleep_enable_regdma_backup();
|
||||||
|
ESP_ERROR_CHECK(esp_deep_sleep_register_hook(&pmu_sleep_disable_regdma_backup));
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return err;
|
return err;
|
||||||
|
Reference in New Issue
Block a user