From 22c48ff2b7d2e5b61963f61f301de2658d1643ab Mon Sep 17 00:00:00 2001 From: Song Ruo Jing Date: Tue, 14 Apr 2026 19:04:32 +0800 Subject: [PATCH] fix(gpio): Revert the fix for RTCIO config should be written if LPIO clk exists revert the main logic in acb49e952066f8b9dccc40bbd4bfb0babe3a5ac1 The fix causes deep sleep wakeup IO unable to reset back to GPIO after waking up from deep sleep. --- components/esp_driver_gpio/src/gpio.c | 3 +++ components/esp_driver_gpio/src/rtc_io.c | 17 +++++------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/components/esp_driver_gpio/src/gpio.c b/components/esp_driver_gpio/src/gpio.c index 7a794f2a1db..9a72682200b 100644 --- a/components/esp_driver_gpio/src/gpio.c +++ b/components/esp_driver_gpio/src/gpio.c @@ -457,6 +457,9 @@ esp_err_t gpio_config_as_analog(gpio_num_t gpio_num) #if SOC_RTCIO_INPUT_OUTPUT_SUPPORTED if (rtc_gpio_is_valid_gpio(gpio_num)) { rtc_gpio_deinit(gpio_num); + rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); + rtc_gpio_pullup_dis(gpio_num); + rtc_gpio_pulldown_dis(gpio_num); } #endif return ESP_OK; diff --git a/components/esp_driver_gpio/src/rtc_io.c b/components/esp_driver_gpio/src/rtc_io.c index 48926b0bcb4..567b06e362c 100644 --- a/components/esp_driver_gpio/src/rtc_io.c +++ b/components/esp_driver_gpio/src/rtc_io.c @@ -64,19 +64,12 @@ esp_err_t rtc_gpio_deinit(gpio_num_t gpio_num) { ESP_RETURN_ON_FALSE(rtc_gpio_is_valid_gpio(gpio_num), ESP_ERR_INVALID_ARG, RTCIO_TAG, "RTCIO number error"); RTCIO_ENTER_CRITICAL(); - if (io_mux_is_lp_io_in_use(gpio_num)) { - // Select GPIO as Digital GPIO - rtcio_hal_function_select(rtc_io_number_get(gpio_num), RTCIO_LL_FUNC_DIGITAL); -#if SOC_RTCIO_INPUT_OUTPUT_SUPPORTED - // Disable any configuration of the RTC IO that may affect the GPIO behavior - rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED); - rtc_gpio_pullup_dis(gpio_num); - rtc_gpio_pulldown_dis(gpio_num); + // Select GPIO as Digital GPIO + rtcio_hal_function_select(rtc_io_number_get(gpio_num), RTCIO_LL_FUNC_DIGITAL); + // TODO: IDF-14951 Turning off the lp io clock might affect other lp peripherals. Temporary disabled. +#if SOC_LP_IO_CLOCK_IS_INDEPENDENT && !CONFIG_IDF_TARGET_ESP32H4 + io_mux_force_disable_lp_io_clock(gpio_num); #endif -#if SOC_LP_IO_CLOCK_IS_INDEPENDENT - io_mux_force_disable_lp_io_clock(gpio_num); -#endif - } RTCIO_EXIT_CRITICAL(); return ESP_OK;