Merge branch 'fix/fix_tg_retention_failure' into 'master'

fix(esp_driver_gptimer): do gptimer retention by timer unit rather than timer group

Closes PM-233 and IDFCI-2427

See merge request espressif/esp-idf!35284
This commit is contained in:
Wu Zheng Hui
2024-12-02 16:44:05 +08:00
17 changed files with 315 additions and 225 deletions

View File

@@ -24,39 +24,42 @@ typedef enum periph_retention_module {
/* Timer Group by target*/
SLEEP_RETENTION_MODULE_TG0_WDT = 3,
SLEEP_RETENTION_MODULE_TG1_WDT = 4,
SLEEP_RETENTION_MODULE_TG0_TIMER = 5,
SLEEP_RETENTION_MODULE_TG1_TIMER = 6,
SLEEP_RETENTION_MODULE_TG0_TIMER0 = 5,
SLEEP_RETENTION_MODULE_TG0_TIMER1 = 6,
SLEEP_RETENTION_MODULE_TG1_TIMER0 = 7,
SLEEP_RETENTION_MODULE_TG1_TIMER1 = 8,
/* AHB_DMA by channel */
SLEEP_RETENTION_MODULE_AHB_DMA_CH0 = 7,
SLEEP_RETENTION_MODULE_AHB_DMA_CH1 = 8,
SLEEP_RETENTION_MODULE_AHB_DMA_CH2 = 9,
SLEEP_RETENTION_MODULE_AHB_DMA_CH0 = 9,
SLEEP_RETENTION_MODULE_AHB_DMA_CH1 = 10,
SLEEP_RETENTION_MODULE_AHB_DMA_CH2 = 11,
/* AXI_DMA by channel */
SLEEP_RETENTION_MODULE_AXI_DMA_CH0 = 10,
SLEEP_RETENTION_MODULE_AXI_DMA_CH1 = 11,
SLEEP_RETENTION_MODULE_AXI_DMA_CH2 = 12,
SLEEP_RETENTION_MODULE_AXI_DMA_CH0 = 12,
SLEEP_RETENTION_MODULE_AXI_DMA_CH1 = 13,
SLEEP_RETENTION_MODULE_AXI_DMA_CH2 = 14,
/* MISC Peripherals */
SLEEP_RETENTION_MODULE_UART0 = 13,
SLEEP_RETENTION_MODULE_UART1 = 14,
SLEEP_RETENTION_MODULE_UART2 = 15,
SLEEP_RETENTION_MODULE_UART3 = 16,
SLEEP_RETENTION_MODULE_UART4 = 17,
SLEEP_RETENTION_MODULE_RMT0 = 18,
SLEEP_RETENTION_MODULE_I2S0 = 19,
SLEEP_RETENTION_MODULE_I2S1 = 20,
SLEEP_RETENTION_MODULE_I2S2 = 21,
SLEEP_RETENTION_MODULE_I2C0 = 22,
SLEEP_RETENTION_MODULE_I2C1 = 23,
SLEEP_RETENTION_MODULE_ETM0 = 24,
SLEEP_RETENTION_MODULE_TWAI0 = 25,
SLEEP_RETENTION_MODULE_TWAI1 = 26,
SLEEP_RETENTION_MODULE_TWAI2 = 27,
SLEEP_RETENTION_MODULE_PARLIO0 = 28,
SLEEP_RETENTION_MODULE_GPSPI2 = 29,
SLEEP_RETENTION_MODULE_GPSPI3 = 30,
SLEEP_RETENTION_MODULE_LEDC = 31,
SLEEP_RETENTION_MODULE_MCPWM0 = 32,
SLEEP_RETENTION_MODULE_MCPWM1 = 33,
SLEEP_RETENTION_MODULE_PCNT0 = 34,
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,
SLEEP_RETENTION_MODULE_MAX = SOC_PM_RETENTION_MODULE_NUM - 1
} periph_retention_module_t;
@@ -67,8 +70,10 @@ typedef enum periph_retention_module {
: ((m) == SLEEP_RETENTION_MODULE_SYS_PERIPH) ? true \
: ((m) == SLEEP_RETENTION_MODULE_TG0_WDT) ? true \
: ((m) == SLEEP_RETENTION_MODULE_TG1_WDT) ? true \
: ((m) == SLEEP_RETENTION_MODULE_TG0_TIMER) ? true \
: ((m) == SLEEP_RETENTION_MODULE_TG1_TIMER) ? true \
: ((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 \
: ((m) == SLEEP_RETENTION_MODULE_AHB_DMA_CH0) ? true \
: ((m) == SLEEP_RETENTION_MODULE_AHB_DMA_CH1) ? true \
: ((m) == SLEEP_RETENTION_MODULE_AHB_DMA_CH2) ? true \