| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*
- * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #pragma once
- #include <stdint.h>
- #include "soc/soc_caps.h"
- #include "hal/gpio_types.h"
- #include "hal/rtc_cntl_ll.h"
- #if !CONFIG_IDF_TARGET_ESP32C3 && !CONFIG_IDF_TARGET_ESP32H2 && !CONFIG_IDF_TARGET_ESP32C2
- #include "hal/rtc_io_ll.h"
- #endif
- typedef struct rtc_cntl_sleep_retent {
- #if SOC_PM_SUPPORT_CPU_PD
- void *cpu_pd_mem; /* Internal ram address for cpu retention */
- #endif // SOC_PM_SUPPORT_CPU_PD
- #if SOC_PM_SUPPORT_TAGMEM_PD
- struct {
- void *link_addr; /* Internal ram address for tagmem retention */
- struct {
- uint32_t start_point: 8, /* the row of start for i-cache tag memory */
- vld_size: 8, /* valid size of i-cache tag memory, unit: 4 i-cache tagmem blocks */
- size: 8, /* i-cache tag memory size, unit: 4 i-cache tagmem blocks */
- enable: 1; /* enable or disable i-cache tagmem retention */
- } icache;
- struct {
- uint32_t start_point: 9, /* the row of start for d-cache tag memory */
- vld_size: 9, /* valid size of d-cache tag memory, unit: 4 d-cache tagmem blocks */
- size: 9, /* d-cache tag memory size, unit: 4 d-cache tagmem blocks */
- enable: 1; /* enable or disable d-cache tagmem retention */
- } dcache;
- } tagmem;
- #endif // SOC_PM_SUPPORT_TAGMEM_PD
- } rtc_cntl_sleep_retent_t;
- #define RTC_HAL_DMA_LINK_NODE_SIZE (16)
- #if SOC_PM_SUPPORT_EXT_WAKEUP
- #define rtc_hal_ext1_get_wakeup_pins() rtc_cntl_ll_ext1_get_wakeup_pins()
- #define rtc_hal_ext1_set_wakeup_pins(mask, mode) rtc_cntl_ll_ext1_set_wakeup_pins(mask, mode)
- #define rtc_hal_ext1_clear_wakeup_pins() rtc_cntl_ll_ext1_clear_wakeup_pins()
- #endif
- #if SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP
- #define rtc_hal_gpio_get_wakeup_pins() rtc_cntl_ll_gpio_get_wakeup_pins()
- #define rtc_hal_gpio_clear_wakeup_pins() rtc_cntl_ll_gpio_clear_wakeup_pins()
- #define rtc_hal_gpio_set_wakeup_pins() rtc_cntl_ll_gpio_set_wakeup_pins()
- #endif
- #define rtc_hal_set_wakeup_timer(ticks) rtc_cntl_ll_set_wakeup_timer(ticks)
- void * rtc_cntl_hal_dma_link_init(void *elem, void *buff, int size, void *next);
- #if SOC_PM_SUPPORT_CPU_PD
- void rtc_cntl_hal_enable_cpu_retention(void *addr);
- void rtc_cntl_hal_disable_cpu_retention(void *addr);
- #endif
- #if SOC_PM_SUPPORT_TAGMEM_PD
- void rtc_cntl_hal_enable_tagmem_retention(void *addr);
- void rtc_cntl_hal_disable_tagmem_retention(void *addr);
- #endif
- /*
- * Enable wakeup from ULP coprocessor.
- */
- #define rtc_hal_ulp_wakeup_enable() rtc_cntl_ll_ulp_wakeup_enable()
- #define rtc_hal_ulp_int_clear() rtc_cntl_ll_ulp_int_clear()
|