forked from espressif/esp-idf
feat(pm): support sleep_gpio for esp32c5
This commit is contained in:
@@ -146,7 +146,6 @@ if(NOT BOOTLOADER_BUILD)
|
||||
if(CONFIG_IDF_TARGET_ESP32C5)
|
||||
list(REMOVE_ITEM srcs
|
||||
"sleep_wake_stub.c" # TODO: [ESP32C5] IDF-8638
|
||||
"sleep_gpio.c" # TODO: [ESP32C5] IDF-8638
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -182,6 +181,10 @@ if(CONFIG_COMPILER_STATIC_ANALYZER AND CMAKE_C_COMPILER_ID STREQUAL "GNU") # TOD
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE "-fno-analyzer")
|
||||
endif()
|
||||
|
||||
if(CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND OR CONFIG_PM_SLP_DISABLE_GPIO)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u esp_sleep_gpio_include")
|
||||
endif()
|
||||
|
||||
if(NOT BOOTLOADER_BUILD)
|
||||
if(CONFIG_SPIRAM)
|
||||
idf_component_optional_requires(PRIVATE esp_psram)
|
||||
|
@@ -130,10 +130,10 @@ menu "Hardware Settings"
|
||||
config ESP_SLEEP_GPIO_RESET_WORKAROUND
|
||||
bool "light sleep GPIO reset workaround"
|
||||
default y if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 || \
|
||||
IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32H2
|
||||
IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32H2 || IDF_TARGET_ESP32C5
|
||||
select PM_SLP_DISABLE_GPIO if FREERTOS_USE_TICKLESS_IDLE
|
||||
help
|
||||
esp32c2, esp32c3, esp32s3, esp32c6 and esp32h2 will reset at wake-up if GPIO is received
|
||||
esp32c2, esp32c3, esp32s3, esp32c5, esp32c6 and esp32h2 will reset at wake-up if GPIO is received
|
||||
a small electrostatic pulse during light sleep, with specific condition
|
||||
|
||||
- GPIO needs to be configured as input-mode only
|
||||
|
@@ -61,7 +61,6 @@ void esp_sleep_config_gpio_isolate(void)
|
||||
gpio_sleep_set_pull_mode(gpio_num, GPIO_FLOATING);
|
||||
}
|
||||
}
|
||||
|
||||
#if CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND && CONFIG_SPIRAM
|
||||
int32_t mspi_io_cs1_io_num = esp_mspi_get_io(ESP_MSPI_IO_CS1);
|
||||
if (GPIO_IS_VALID_GPIO(mspi_io_cs1_io_num)) {
|
||||
@@ -152,6 +151,7 @@ IRAM_ATTR void esp_sleep_isolate_digital_gpio(void)
|
||||
}
|
||||
#endif //SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP && !SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP
|
||||
|
||||
#if SOC_DEEP_SLEEP_SUPPORTED
|
||||
void esp_deep_sleep_wakeup_io_reset(void)
|
||||
{
|
||||
#if SOC_PM_SUPPORT_EXT1_WAKEUP
|
||||
@@ -185,6 +185,7 @@ void esp_deep_sleep_wakeup_io_reset(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND || CONFIG_PM_SLP_DISABLE_GPIO
|
||||
ESP_SYSTEM_INIT_FN(esp_sleep_startup_init, SECONDARY, BIT(0), 105)
|
||||
@@ -200,4 +201,9 @@ ESP_SYSTEM_INIT_FN(esp_sleep_startup_init, SECONDARY, BIT(0), 105)
|
||||
esp_sleep_enable_gpio_switch(true);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
void esp_sleep_gpio_include(void)
|
||||
{
|
||||
// Linker hook function, exists to make the linker examine this file
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user