mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
change(esp_hw_support): optimize pmu_sleep RAM cost
This commit is contained in:
@@ -47,7 +47,13 @@ entries:
|
|||||||
pmu_init (noflash)
|
pmu_init (noflash)
|
||||||
pmu_param (noflash)
|
pmu_param (noflash)
|
||||||
if SOC_LIGHT_SLEEP_SUPPORTED = y:
|
if SOC_LIGHT_SLEEP_SUPPORTED = y:
|
||||||
pmu_sleep (noflash)
|
if SPIRAM_FLASH_LOAD_TO_PSRAM = y || PM_SLP_IRAM_OPT = y:
|
||||||
|
pmu_sleep (noflash)
|
||||||
|
else:
|
||||||
|
if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE != y:
|
||||||
|
pmu_sleep:pmu_sleep_start (noflash)
|
||||||
|
pmu_sleep:pmu_sleep_finish (noflash)
|
||||||
|
pmu_sleep:pmu_sleep_get_wakup_retention_cost (noflash)
|
||||||
if PM_SLEEP_CLK_ICG_ENABLE = y && PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP != y:
|
if PM_SLEEP_CLK_ICG_ENABLE = y && PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP != y:
|
||||||
pmu_sleep_clock_icg:pmu_sleep_clock_icg_config (noflash)
|
pmu_sleep_clock_icg:pmu_sleep_clock_icg_config (noflash)
|
||||||
if IDF_TARGET_ESP32H4 = y && BT_LE_MODEM_STATE_ENABLED = y:
|
if IDF_TARGET_ESP32H4 = y && BT_LE_MODEM_STATE_ENABLED = y:
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ void pmu_sleep_enable_regdma_backup(void)
|
|||||||
pmu_hal_hp_set_sleep_active_backup_enable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_active_backup_enable(PMU_instance()->hal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pmu_sleep_disable_regdma_backup(void)
|
IRAM_ATTR void pmu_sleep_disable_regdma_backup(void)
|
||||||
{
|
{
|
||||||
assert(PMU_instance()->hal);
|
assert(PMU_instance()->hal);
|
||||||
pmu_hal_hp_set_sleep_active_backup_disable(PMU_instance()->hal);
|
pmu_hal_hp_set_sleep_active_backup_disable(PMU_instance()->hal);
|
||||||
|
|||||||
@@ -341,7 +341,7 @@ void pmu_sleep_init(const pmu_sleep_config_t *config, bool dslp)
|
|||||||
pmu_sleep_param_init(PMU_instance(), &config->param, dslp);
|
pmu_sleep_param_init(PMU_instance(), &config->param, dslp);
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR uint32_t pmu_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp_mem_inf_fpu, bool dslp)
|
uint32_t pmu_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp_mem_inf_fpu, bool dslp)
|
||||||
{
|
{
|
||||||
if (!dslp) {
|
if (!dslp) {
|
||||||
#if !BOOTLOADER_BUILD && CONFIG_SPIRAM
|
#if !BOOTLOADER_BUILD && CONFIG_SPIRAM
|
||||||
@@ -381,7 +381,7 @@ IRAM_ATTR uint32_t pmu_sleep_get_reject_cause(void)
|
|||||||
return pmu_ll_hp_get_reject_cause(PMU_instance()->hal->dev);
|
return pmu_ll_hp_get_reject_cause(PMU_instance()->hal->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR bool pmu_sleep_finish(bool dslp)
|
bool pmu_sleep_finish(bool dslp)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_IDF_ENV_FPGA
|
#ifndef CONFIG_IDF_ENV_FPGA
|
||||||
// Wait eFuse memory update done.
|
// Wait eFuse memory update done.
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32c5/rom/rtc.h"
|
#include "esp32c5/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -73,7 +74,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32c6/rom/rtc.h"
|
#include "esp32c6/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -73,7 +74,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32c61/rom/rtc.h"
|
#include "esp32c61/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -73,7 +74,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32h2/rom/rtc.h"
|
#include "esp32h2/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -73,7 +74,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32h21/rom/rtc.h"
|
#include "esp32h21/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -73,7 +74,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
#include "soc/lp_aon_struct.h"
|
#include "soc/lp_aon_struct.h"
|
||||||
#include "hal/misc.h"
|
#include "hal/misc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp32h4/rom/rtc.h"
|
#include "esp32h4/rom/rtc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -80,7 +81,7 @@ static inline uint32_t lp_aon_ll_ext1_get_wakeup_pins(void)
|
|||||||
* Set the flag to inform
|
* Set the flag to inform
|
||||||
* @param true: deepsleep false: lightsleep
|
* @param true: deepsleep false: lightsleep
|
||||||
*/
|
*/
|
||||||
static inline void lp_aon_ll_inform_wakeup_type(bool dslp)
|
FORCE_INLINE_ATTR void lp_aon_ll_inform_wakeup_type(bool dslp)
|
||||||
{
|
{
|
||||||
if (dslp) {
|
if (dslp) {
|
||||||
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
REG_SET_BIT(RTC_SLEEP_MODE_REG, BIT(0)); /* Tell rom to run deep sleep wake stub */
|
||||||
|
|||||||
Reference in New Issue
Block a user