*/
esp_err_t rtc_gpio_hold_dis(gpio_num_t gpio_num);
+/**
+ * @brief Helper function to disconnect internal circuits from an RTC IO
+ * This function disables input, output, pullup, pulldown, and enables
+ * hold feature for an RTC IO.
+ * Use this function if an RTC IO needs to be disconnected from internal
+ * circuits in deep sleep, to minimize leakage current.
+ *
+ * In particular, for ESP32-WROVER module, call
+ * rtc_gpio_isolate(GPIO_NUM_12) before entering deep sleep, to reduce
+ * deep sleep current.
+ *
+ * @param gpio_num GPIO number (e.g. GPIO_NUM_12).
+ * @return
+ * - ESP_OK on success
+ * - ESP_ERR_INVALID_ARG if GPIO is not an RTC IO
+ */
+esp_err_t rtc_gpio_isolate(gpio_num_t gpio_num);
+
/**
* @brief Disable force hold signal for all RTC IOs
*
return ESP_OK;
}
+esp_err_t rtc_gpio_isolate(gpio_num_t gpio_num)
+{
+ if (rtc_gpio_desc[gpio_num].reg == 0) {
+ return ESP_ERR_INVALID_ARG;
+ }
+
+ rtc_gpio_pullup_dis(gpio_num);
+ rtc_gpio_pulldown_dis(gpio_num);
+ rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED);
+ rtc_gpio_hold_en(gpio_num);
+
+ return ESP_OK;
+}
void rtc_gpio_force_hold_dis_all()
{