2024-01-29 21:47:56 +08:00
/*
* SPDX - FileCopyrightText : 2024 Espressif Systems ( Shanghai ) CO LTD
*
* SPDX - License - Identifier : Apache - 2.0
*/
# pragma once
# include <stdint.h>
2024-09-19 11:54:00 +08:00
# include "soc_caps.h"
2024-01-29 21:47:56 +08:00
# ifdef __cplusplus
extern " C " {
# endif
2024-02-05 11:37:58 +08:00
typedef enum periph_retention_module {
SLEEP_RETENTION_MODULE_MIN = 0 ,
2024-09-26 19:58:20 +08:00
SLEEP_RETENTION_MODULE_NULL = SLEEP_RETENTION_MODULE_MIN , /* This module is for all peripherals that can't survive from PD_TOP to call init only. Shouldn't have any dependency. */
2024-02-05 11:37:58 +08:00
/* clock module, which includes system and modem */
SLEEP_RETENTION_MODULE_CLOCK_SYSTEM = 1 ,
/* digital peripheral module, which includes Interrupt Matrix, HP_SYSTEM,
2024-05-23 10:42:52 +08:00
* TEE , APM , UART , IOMUX , SPIMEM , SysTimer , etc . . */
SLEEP_RETENTION_MODULE_SYS_PERIPH = 2 ,
/* Timer Group by target*/
SLEEP_RETENTION_MODULE_TG0_WDT = 3 ,
SLEEP_RETENTION_MODULE_TG1_WDT = 4 ,
2024-11-28 21:02:32 +08:00
SLEEP_RETENTION_MODULE_TG0_TIMER0 = 5 ,
SLEEP_RETENTION_MODULE_TG0_TIMER1 = 6 ,
SLEEP_RETENTION_MODULE_TG1_TIMER0 = 7 ,
SLEEP_RETENTION_MODULE_TG1_TIMER1 = 8 ,
2024-09-20 12:09:06 +08:00
/* AHB_DMA by channel */
2024-11-28 21:02:32 +08:00
SLEEP_RETENTION_MODULE_AHB_DMA_CH0 = 9 ,
SLEEP_RETENTION_MODULE_AHB_DMA_CH1 = 10 ,
SLEEP_RETENTION_MODULE_AHB_DMA_CH2 = 11 ,
2024-09-20 12:09:06 +08:00
/* AXI_DMA by channel */
2024-11-28 21:02:32 +08:00
SLEEP_RETENTION_MODULE_AXI_DMA_CH0 = 12 ,
SLEEP_RETENTION_MODULE_AXI_DMA_CH1 = 13 ,
SLEEP_RETENTION_MODULE_AXI_DMA_CH2 = 14 ,
2024-09-30 12:54:33 +08:00
/* MISC Peripherals */
2024-11-28 21:02:32 +08:00
SLEEP_RETENTION_MODULE_UART0 = 15 ,
SLEEP_RETENTION_MODULE_UART1 = 16 ,
SLEEP_RETENTION_MODULE_UART2 = 17 ,
SLEEP_RETENTION_MODULE_UART3 = 18 ,
SLEEP_RETENTION_MODULE_UART4 = 19 ,
SLEEP_RETENTION_MODULE_RMT0 = 20 ,
SLEEP_RETENTION_MODULE_I2S0 = 21 ,
SLEEP_RETENTION_MODULE_I2S1 = 22 ,
SLEEP_RETENTION_MODULE_I2S2 = 23 ,
SLEEP_RETENTION_MODULE_I2C0 = 24 ,
SLEEP_RETENTION_MODULE_I2C1 = 25 ,
SLEEP_RETENTION_MODULE_ETM0 = 26 ,
SLEEP_RETENTION_MODULE_TWAI0 = 27 ,
SLEEP_RETENTION_MODULE_TWAI1 = 28 ,
SLEEP_RETENTION_MODULE_TWAI2 = 29 ,
SLEEP_RETENTION_MODULE_PARLIO0 = 30 ,
SLEEP_RETENTION_MODULE_GPSPI2 = 31 ,
SLEEP_RETENTION_MODULE_GPSPI3 = 32 ,
SLEEP_RETENTION_MODULE_LEDC = 33 ,
SLEEP_RETENTION_MODULE_MCPWM0 = 34 ,
SLEEP_RETENTION_MODULE_MCPWM1 = 35 ,
SLEEP_RETENTION_MODULE_PCNT0 = 36 ,
2024-09-13 21:56:02 +08:00
2024-09-19 11:54:00 +08:00
SLEEP_RETENTION_MODULE_MAX = SOC_PM_RETENTION_MODULE_NUM - 1
2024-02-05 11:37:58 +08:00
} periph_retention_module_t ;
2024-11-05 21:32:38 +08:00
# define is_top_domain_module(m) \
( ( ( m ) = = SLEEP_RETENTION_MODULE_NULL ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_CLOCK_SYSTEM ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_SYS_PERIPH ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG0_WDT ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG1_WDT ) ? true \
2024-11-28 21:02:32 +08:00
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG0_TIMER0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG0_TIMER1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG1_TIMER0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TG1_TIMER1 ) ? true \
2024-11-05 21:32:38 +08:00
: ( ( m ) = = SLEEP_RETENTION_MODULE_AHB_DMA_CH0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_AHB_DMA_CH1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_AHB_DMA_CH2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_AXI_DMA_CH0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_AXI_DMA_CH1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_AXI_DMA_CH2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_UART0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_UART1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_UART2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_UART3 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_UART4 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_RMT0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_I2S0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_I2S1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_I2S2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_I2C0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_I2C1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_ETM0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TWAI0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TWAI1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_TWAI2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_PARLIO0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_GPSPI2 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_GPSPI3 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_LEDC ) ? true \
2024-11-21 11:55:24 +08:00
: ( ( m ) = = SLEEP_RETENTION_MODULE_MCPWM0 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_MCPWM1 ) ? true \
: ( ( m ) = = SLEEP_RETENTION_MODULE_PCNT0 ) ? true \
2024-11-05 21:32:38 +08:00
: false )
2024-01-29 21:47:56 +08:00
# ifdef __cplusplus
}
# endif