mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
feat(esp_hw_support): support esp32h21 retention link software trigger
This commit is contained in:
parent
727d0a687f
commit
93cdad7a3b
@ -28,12 +28,6 @@ if(NOT non_os_build)
|
|||||||
"periph_ctrl.c"
|
"periph_ctrl.c"
|
||||||
"revision.c"
|
"revision.c"
|
||||||
"rtc_module.c"
|
"rtc_module.c"
|
||||||
"sleep_modem.c"
|
|
||||||
"sleep_modes.c"
|
|
||||||
"sleep_console.c"
|
|
||||||
"sleep_usb.c"
|
|
||||||
"sleep_gpio.c"
|
|
||||||
"sleep_event.c"
|
|
||||||
"regi2c_ctrl.c"
|
"regi2c_ctrl.c"
|
||||||
"esp_gpio_reserve.c"
|
"esp_gpio_reserve.c"
|
||||||
"sar_periph_ctrl_common.c"
|
"sar_periph_ctrl_common.c"
|
||||||
@ -49,14 +43,23 @@ if(NOT non_os_build)
|
|||||||
if(CONFIG_SOC_ADC_SUPPORTED)
|
if(CONFIG_SOC_ADC_SUPPORTED)
|
||||||
list(APPEND srcs "adc_share_hw_ctrl.c")
|
list(APPEND srcs "adc_share_hw_ctrl.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CONFIG_SOC_ISP_SHARE_CSI_BRG)
|
if(CONFIG_SOC_ISP_SHARE_CSI_BRG)
|
||||||
list(APPEND srcs "mipi_csi_share_hw_ctrl.c")
|
list(APPEND srcs "mipi_csi_share_hw_ctrl.c")
|
||||||
endif()
|
endif()
|
||||||
if(CONFIG_SOC_PAU_SUPPORTED)
|
if(CONFIG_SOC_PAU_SUPPORTED)
|
||||||
list(APPEND srcs "sleep_retention.c"
|
list(APPEND srcs "sleep_retention.c")
|
||||||
"sleep_system_peripheral.c"
|
endif()
|
||||||
)
|
if(CONFIG_SOC_LIGHT_SLEEP_SUPPORTED)
|
||||||
|
list(APPEND srcs "sleep_modem.c"
|
||||||
|
"sleep_modes.c"
|
||||||
|
"sleep_console.c"
|
||||||
|
"sleep_usb.c"
|
||||||
|
"sleep_gpio.c"
|
||||||
|
"sleep_event.c"
|
||||||
|
)
|
||||||
|
if(CONFIG_SOC_PAU_SUPPORTED)
|
||||||
|
list(APPEND srcs "sleep_system_peripheral.c")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# [refactor-todo]
|
# [refactor-todo]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
idf_build_get_property(non_os_build NON_OS_BUILD)
|
idf_build_get_property(non_os_build NON_OS_BUILD)
|
||||||
|
|
||||||
if(non_os_build)
|
if(non_os_build OR NOT CONFIG_SOC_LIGHT_SLEEP_SUPPORTED)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -514,7 +514,9 @@ static void sleep_retention_entries_destroy(sleep_retention_module_t module)
|
|||||||
}
|
}
|
||||||
if (created_modules == 0) {
|
if (created_modules == 0) {
|
||||||
sleep_retention_entries_check_and_distroy_final_default();
|
sleep_retention_entries_check_and_distroy_final_default();
|
||||||
|
#if SOC_LIGHT_SLEEP_SUPPORTED
|
||||||
pmu_sleep_disable_regdma_backup();
|
pmu_sleep_disable_regdma_backup();
|
||||||
|
#endif
|
||||||
memset((void *)s_retention.lists, 0, sizeof(s_retention.lists));
|
memset((void *)s_retention.lists, 0, sizeof(s_retention.lists));
|
||||||
s_retention.highpri = (uint8_t)-1;
|
s_retention.highpri = (uint8_t)-1;
|
||||||
}
|
}
|
||||||
@ -641,8 +643,12 @@ esp_err_t sleep_retention_entries_create(const sleep_retention_entries_config_t
|
|||||||
if (err) goto error;
|
if (err) goto error;
|
||||||
err = sleep_retention_entries_create_wrapper(retent, num, priority, module);
|
err = sleep_retention_entries_create_wrapper(retent, num, priority, module);
|
||||||
if (err) goto error;
|
if (err) goto error;
|
||||||
|
#if SOC_LIGHT_SLEEP_SUPPORTED
|
||||||
pmu_sleep_enable_regdma_backup();
|
pmu_sleep_enable_regdma_backup();
|
||||||
|
#endif
|
||||||
|
#if SOC_LIGHT_SLEEP_SUPPORTED && SOC_DEEP_SLEEP_SUPPORTED
|
||||||
ESP_ERROR_CHECK(esp_deep_sleep_register_hook(&pmu_sleep_disable_regdma_backup));
|
ESP_ERROR_CHECK(esp_deep_sleep_register_hook(&pmu_sleep_disable_regdma_backup));
|
||||||
|
#endif
|
||||||
|
|
||||||
error:
|
error:
|
||||||
return err;
|
return err;
|
||||||
|
@ -44,8 +44,8 @@ components/esp_hw_support/test_apps/rtc_power_modes:
|
|||||||
|
|
||||||
components/esp_hw_support/test_apps/sleep_retention:
|
components/esp_hw_support/test_apps/sleep_retention:
|
||||||
enable:
|
enable:
|
||||||
- if: SOC_PAU_SUPPORTED == 1 and CONFIG_NAME != "xip_psram"
|
- if: SOC_PAU_SUPPORTED == 1 and SOC_LIGHT_SLEEP_SUPPORTED == 1 and CONFIG_NAME != "xip_psram"
|
||||||
- if: SOC_PAU_SUPPORTED == 1 and (SOC_SPIRAM_XIP_SUPPORTED == 1 and CONFIG_NAME == "xip_psram")
|
- if: SOC_PAU_SUPPORTED == 1 and SOC_LIGHT_SLEEP_SUPPORTED == 1 and (SOC_SPIRAM_XIP_SUPPORTED == 1 and CONFIG_NAME == "xip_psram")
|
||||||
|
|
||||||
components/esp_hw_support/test_apps/vad_wakeup:
|
components/esp_hw_support/test_apps/vad_wakeup:
|
||||||
disable:
|
disable:
|
||||||
|
@ -165,7 +165,7 @@ if(CONFIG_SOC_SDIO_SLAVE_SUPPORTED)
|
|||||||
list(APPEND srcs "${target_folder}/sdio_slave_periph.c")
|
list(APPEND srcs "${target_folder}/sdio_slave_periph.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CONFIG_SOC_PAU_SUPPORTED)
|
if(CONFIG_SOC_PAU_SUPPORTED AND CONFIG_SOC_LIGHT_SLEEP_SUPPORTED)
|
||||||
list(APPEND srcs "${target_folder}/system_retention_periph.c")
|
list(APPEND srcs "${target_folder}/system_retention_periph.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -43,6 +43,10 @@ config SOC_SPI_FLASH_SUPPORTED
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config SOC_PAU_SUPPORTED
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_XTAL_SUPPORT_32M
|
config SOC_XTAL_SUPPORT_32M
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
@ -671,6 +675,10 @@ config SOC_PM_PAU_LINK_NUM
|
|||||||
int
|
int
|
||||||
default 5
|
default 5
|
||||||
|
|
||||||
|
config SOC_PM_RETENTION_MODULE_NUM
|
||||||
|
int
|
||||||
|
default 32
|
||||||
|
|
||||||
config SOC_PM_PAU_REGDMA_LINK_CONFIGURABLE
|
config SOC_PM_PAU_REGDMA_LINK_CONFIGURABLE
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
89
components/soc/esp32h21/include/soc/retention_periph_defs.h
Normal file
89
components/soc/esp32h21/include/soc/retention_periph_defs.h
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "soc_caps.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum periph_retention_module {
|
||||||
|
SLEEP_RETENTION_MODULE_MIN = 0,
|
||||||
|
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. */
|
||||||
|
/* clock module, which includes system and modem */
|
||||||
|
SLEEP_RETENTION_MODULE_CLOCK_SYSTEM = 1,
|
||||||
|
SLEEP_RETENTION_MODULE_CLOCK_MODEM = 2,
|
||||||
|
/* digital peripheral module, which includes Interrupt Matrix, HP_SYSTEM,
|
||||||
|
* TEE, APM, UART, IOMUX, SPIMEM, SysTimer, etc.. */
|
||||||
|
SLEEP_RETENTION_MODULE_SYS_PERIPH = 3,
|
||||||
|
/* Timer Group by target*/
|
||||||
|
SLEEP_RETENTION_MODULE_TG0_WDT = 4,
|
||||||
|
SLEEP_RETENTION_MODULE_TG1_WDT = 5,
|
||||||
|
SLEEP_RETENTION_MODULE_TG0_TIMER0 = 6,
|
||||||
|
SLEEP_RETENTION_MODULE_TG1_TIMER0 = 7,
|
||||||
|
/* GDMA by channel */
|
||||||
|
SLEEP_RETENTION_MODULE_GDMA_CH0 = 8,
|
||||||
|
SLEEP_RETENTION_MODULE_GDMA_CH1 = 9,
|
||||||
|
SLEEP_RETENTION_MODULE_GDMA_CH2 = 10,
|
||||||
|
/* MISC Peripherals */
|
||||||
|
SLEEP_RETENTION_MODULE_ADC = 11,
|
||||||
|
SLEEP_RETENTION_MODULE_I2C0 = 12,
|
||||||
|
SLEEP_RETENTION_MODULE_I2C1 = 13,
|
||||||
|
SLEEP_RETENTION_MODULE_RMT0 = 14,
|
||||||
|
SLEEP_RETENTION_MODULE_UART0 = 15,
|
||||||
|
SLEEP_RETENTION_MODULE_UART1 = 16,
|
||||||
|
SLEEP_RETENTION_MODULE_I2S0 = 17,
|
||||||
|
SLEEP_RETENTION_MODULE_ETM0 = 18,
|
||||||
|
SLEEP_RETENTION_MODULE_TEMP_SENSOR = 19,
|
||||||
|
SLEEP_RETENTION_MODULE_TWAI0 = 20,
|
||||||
|
SLEEP_RETENTION_MODULE_PARLIO0 = 21,
|
||||||
|
SLEEP_RETENTION_MODULE_GPSPI2 = 22,
|
||||||
|
SLEEP_RETENTION_MODULE_LEDC = 23,
|
||||||
|
SLEEP_RETENTION_MODULE_PCNT0 = 24,
|
||||||
|
SLEEP_RETENTION_MODULE_MCPWM0 = 25,
|
||||||
|
|
||||||
|
/* Modem module, which includes BLE and 802.15.4 */
|
||||||
|
SLEEP_RETENTION_MODULE_BLE_MAC = 28,
|
||||||
|
SLEEP_RETENTION_MODULE_BT_BB = 29,
|
||||||
|
SLEEP_RETENTION_MODULE_802154_MAC = 30,
|
||||||
|
|
||||||
|
SLEEP_RETENTION_MODULE_MAX = SOC_PM_RETENTION_MODULE_NUM - 1
|
||||||
|
} periph_retention_module_t;
|
||||||
|
|
||||||
|
#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 \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_TG0_TIMER0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_TG1_TIMER0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_GDMA_CH0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_GDMA_CH1) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_GDMA_CH2) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_ADC) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_I2C0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_I2C1) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_RMT0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_UART0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_UART1) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_I2S0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_ETM0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_TEMP_SENSOR) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_TWAI0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_PARLIO0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_GPSPI2) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_LEDC) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_PCNT0) ? true \
|
||||||
|
: ((m) == SLEEP_RETENTION_MODULE_MCPWM0) ? true \
|
||||||
|
: false)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -74,7 +74,7 @@
|
|||||||
// #define SOC_RMT_SUPPORTED 1 //TODO: [ESP32H21] IDF-11622
|
// #define SOC_RMT_SUPPORTED 1 //TODO: [ESP32H21] IDF-11622
|
||||||
// #define SOC_AES_SUPPORTED 1 //TODO: [ESP32H21] IDF-11504
|
// #define SOC_AES_SUPPORTED 1 //TODO: [ESP32H21] IDF-11504
|
||||||
// #define SOC_SDIO_SLAVE_SUPPORTED 1
|
// #define SOC_SDIO_SLAVE_SUPPORTED 1
|
||||||
// #define SOC_PAU_SUPPORTED 1
|
#define SOC_PAU_SUPPORTED 1
|
||||||
// #define SOC_LIGHT_SLEEP_SUPPORTED 1 //TODO: [ESP32H21] IDF-11517, IDF-11520
|
// #define SOC_LIGHT_SLEEP_SUPPORTED 1 //TODO: [ESP32H21] IDF-11517, IDF-11520
|
||||||
// #define SOC_DEEP_SLEEP_SUPPORTED 1 //TODO: [ESP32H21] IDF-11515
|
// #define SOC_DEEP_SLEEP_SUPPORTED 1 //TODO: [ESP32H21] IDF-11515
|
||||||
// #define SOC_MODEM_CLOCK_SUPPORTED 1
|
// #define SOC_MODEM_CLOCK_SUPPORTED 1
|
||||||
@ -529,6 +529,7 @@
|
|||||||
#define SOC_PM_SUPPORT_VDDSDIO_PD (1)
|
#define SOC_PM_SUPPORT_VDDSDIO_PD (1)
|
||||||
#define SOC_PM_SUPPORT_TOP_PD (1)
|
#define SOC_PM_SUPPORT_TOP_PD (1)
|
||||||
#define SOC_PM_PAU_LINK_NUM (5)
|
#define SOC_PM_PAU_LINK_NUM (5)
|
||||||
|
#define SOC_PM_RETENTION_MODULE_NUM (32)
|
||||||
#define SOC_PM_PAU_REGDMA_LINK_CONFIGURABLE (1)
|
#define SOC_PM_PAU_REGDMA_LINK_CONFIGURABLE (1)
|
||||||
#define SOC_PM_CPU_RETENTION_BY_SW (1)
|
#define SOC_PM_CPU_RETENTION_BY_SW (1)
|
||||||
#define SOC_PM_MODEM_RETENTION_BY_REGDMA (1)
|
#define SOC_PM_MODEM_RETENTION_BY_REGDMA (1)
|
||||||
|
@ -31,7 +31,7 @@ extern const ledc_signal_conn_t ledc_periph_signal[2];
|
|||||||
extern const ledc_signal_conn_t ledc_periph_signal[1];
|
extern const ledc_signal_conn_t ledc_periph_signal[1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SOC_PAU_SUPPORTED
|
#if SOC_PAU_SUPPORTED && SOC_LEDC_SUPPORT_SLEEP_RETENTION
|
||||||
|
|
||||||
#if SOC_LIGHT_SLEEP_SUPPORTED
|
#if SOC_LIGHT_SLEEP_SUPPORTED
|
||||||
#if SOC_PHY_SUPPORTED
|
#if SOC_PHY_SUPPORTED
|
||||||
|
Loading…
x
Reference in New Issue
Block a user