[mapping:esp_pm]
archive: libesp_pm.a
entries:
    if PM_RTOS_IDLE_OPT = y:
        pm_impl:esp_pm_impl_idle_hook (noflash)
        pm_impl:esp_pm_impl_waiti (noflash)

    if PM_SLP_IRAM_OPT = y:
        pm_impl:esp_pm_impl_get_cpu_freq (noflash)

[mapping:esp_hw_support_pm]
archive: libesp_hw_support.a
entries:
    if PM_SLP_IRAM_OPT = y:
        sleep_modes:esp_light_sleep_start (noflash)
        sleep_modes:esp_sleep_enable_timer_wakeup (noflash)
        sleep_modes:timer_wakeup_prepare (noflash)
        sleep_modes:get_power_down_flags (noflash)
        esp_clk:esp_clk_slowclk_cal_set (noflash)
        esp_clk:esp_clk_slowclk_cal_get (noflash)
        esp_clk:esp_rtc_get_time_us (noflash)
        esp_clk:esp_clk_private_lock (noflash)
        esp_clk:esp_clk_private_unlock (noflash)
        if SOC_RTC_MEM_SUPPORTED = y:
            esp_clk:calc_checksum (noflash)
        if SOC_SYSTIMER_SUPPORTED = y:
            systimer (noflash)
        if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
            sleep_gpio:gpio_sleep_mode_config_apply (noflash)
        if SOC_PM_CPU_RETENTION_BY_RTCCNTL = y && (PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP = y || SOC_PM_SUPPORT_TAGMEM_PD = y):
            sleep_cpu:sleep_enable_cpu_retention (noflash)
        if PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP = y:
            sleep_cpu:cpu_domain_pd_allowed (noflash)
        if SOC_PM_SUPPORT_TOP_PD = y:
            sleep_clock:clock_domain_pd_allowed (noflash)
            sleep_system_peripheral:peripheral_domain_pd_allowed (noflash)
        sleep_modem:modem_domain_pd_allowed (noflash)
        sleep_modem:periph_inform_out_light_sleep_overhead (noflash)
        if IDF_TARGET_ESP32P4 = n: # TODO: IDF-6496
            sar_periph_ctrl:sar_periph_ctrl_power_disable (noflash)

[mapping:esp_system_pm]
archive: libesp_system.a
entries:
    if PM_RTOS_IDLE_OPT = y:
        freertos_hooks:esp_vApplicationIdleHook (noflash)
    if PM_SLP_IRAM_OPT = y:
        task_wdt:idle_hook_cb (noflash)
        task_wdt:task_wdt_timer_feed (noflash)
        task_wdt:find_entry_and_check_all_reset (noflash)
        task_wdt:find_entry_from_task_handle_and_check_all_reset (noflash)
        task_wdt:esp_task_wdt_reset (noflash)
        task_wdt:esp_task_wdt_reset_user (noflash)
        if ESP_TASK_WDT_USE_ESP_TIMER = y:
            task_wdt_impl_esp_timer:esp_task_wdt_impl_timer_feed (noflash)
        else:
            task_wdt_impl_timergroup:esp_task_wdt_impl_timer_feed (noflash)

[mapping:esp_timer_pm]
archive: libesp_timer.a
entries:
    if PM_SLP_IRAM_OPT = y:
        esp_timer_impl_common:esp_timer_impl_lock (noflash)
        esp_timer_impl_common:esp_timer_impl_unlock (noflash)
        if ESP_TIMER_IMPL_TG0_LAC = y:
            esp_timer_impl_lac:esp_timer_impl_advance (noflash)
            esp_timer_impl_lac:esp_timer_impl_set (noflash)
        elif ESP_TIMER_IMPL_SYSTIMER = y:
            esp_timer_impl_systimer:esp_timer_impl_advance (noflash)
            esp_timer_impl_systimer:esp_timer_impl_set (noflash)

[mapping:newlib_pm]
archive: libnewlib.a
entries:
    if PM_SLP_IRAM_OPT = y:
        esp_time_impl:esp_time_impl_set_boot_time (noflash)
        esp_time_impl:esp_time_impl_get_boot_time (noflash)
        esp_time_impl:esp_set_time_from_rtc (noflash)

[mapping:driver_pm]
archive: libesp_driver_gpio.a
entries:
    if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
        gpio:gpio_sleep_pupd_config_unapply (noflash)
        if PM_SLP_IRAM_OPT = y:
            gpio:gpio_sleep_pupd_config_apply (noflash)

[mapping:hal_pm]
archive: libhal.a
entries:
    if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
        if PM_SLP_IRAM_OPT = y:
            gpio_hal_workaround                                     (noflash)
        else:
            gpio_hal_workaround:gpio_hal_sleep_pupd_config_unapply  (noflash)
            gpio_hal_workaround:gpio_hal_sleep_mode_setup_wrapper   (noflash)
            gpio_hal_workaround:gpio_hal_fun_pupd_restore           (noflash)
    if SOC_PM_CPU_RETENTION_BY_RTCCNTL = y:
        if PM_SLP_IRAM_OPT = y && PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP = y:
            rtc_cntl_hal:rtc_cntl_hal_enable_cpu_retention (noflash)
        if PM_SLP_IRAM_OPT = y && PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP = y:
            rtc_cntl_hal:rtc_cntl_hal_enable_tagmem_retention (noflash)