mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-24 01:25:36 +00:00
fix(gpio): fix ESP32 GPIO sleep mode handling
The previous workaround does not work, the backup/restore should apply to RTC IO registers. Also moved the workaround to sleep_gpio.c to avoid gpio hal using kconfig.
This commit is contained in:
@@ -1,13 +1,4 @@
|
|||||||
menu "ESP-Driver:GPIO Configurations"
|
menu "ESP-Driver:GPIO Configurations"
|
||||||
config GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
bool "Support light sleep GPIO pullup/pulldown configuration for ESP32"
|
|
||||||
depends on IDF_TARGET_ESP32
|
|
||||||
help
|
|
||||||
This option is intended to fix the bug that ESP32 is not able to switch to configured
|
|
||||||
pullup/pulldown mode in sleep.
|
|
||||||
If this option is selected, chip will automatically emulate the behaviour of switching,
|
|
||||||
and about 450B of source codes would be placed into IRAM.
|
|
||||||
|
|
||||||
config GPIO_CTRL_FUNC_IN_IRAM
|
config GPIO_CTRL_FUNC_IN_IRAM
|
||||||
bool "Place GPIO control functions into IRAM"
|
bool "Place GPIO control functions into IRAM"
|
||||||
default n
|
default n
|
||||||
|
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "sdkconfig.h"
|
|
||||||
#include "esp_types.h"
|
#include "esp_types.h"
|
||||||
#include "soc/soc_caps.h"
|
#include "soc/soc_caps.h"
|
||||||
#include "soc/io_mux_reg.h"
|
#include "soc/io_mux_reg.h"
|
||||||
@@ -16,30 +15,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
/**
|
|
||||||
* @brief Emulate ESP32S2 behaviour to backup FUN_PU, FUN_PD information
|
|
||||||
*
|
|
||||||
* @note Need to be called before sleep.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* - ESP_OK Success
|
|
||||||
* - ESP_ERR_INVALID_ARG GPIO number error
|
|
||||||
*/
|
|
||||||
esp_err_t gpio_sleep_pupd_config_apply(gpio_num_t gpio_num);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Emulate ESP32S2 behaviour to restore FUN_PU, FUN_PD information
|
|
||||||
*
|
|
||||||
* @note Need to be called after sleep.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
* - ESP_OK Success
|
|
||||||
* - ESP_ERR_INVALID_ARG GPIO number error
|
|
||||||
*/
|
|
||||||
esp_err_t gpio_sleep_pupd_config_unapply(gpio_num_t gpio_num);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Configure a pin to perform GPIO function or an IOMUX function
|
* @brief Configure a pin to perform GPIO function or an IOMUX function
|
||||||
*
|
*
|
||||||
|
@@ -1011,22 +1011,6 @@ esp_err_t gpio_sleep_sel_dis(gpio_num_t gpio_num)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
esp_err_t gpio_sleep_pupd_config_apply(gpio_num_t gpio_num)
|
|
||||||
{
|
|
||||||
GPIO_CHECK(GPIO_IS_VALID_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
|
||||||
gpio_hal_sleep_pupd_config_apply(gpio_context.gpio_hal, gpio_num);
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t gpio_sleep_pupd_config_unapply(gpio_num_t gpio_num)
|
|
||||||
{
|
|
||||||
GPIO_CHECK(GPIO_IS_VALID_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
|
||||||
gpio_hal_sleep_pupd_config_unapply(gpio_context.gpio_hal, gpio_num);
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
#endif // CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
|
|
||||||
#if SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && SOC_DEEP_SLEEP_SUPPORTED
|
#if SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && SOC_DEEP_SLEEP_SUPPORTED
|
||||||
esp_err_t gpio_deep_sleep_wakeup_enable(gpio_num_t gpio_num, gpio_int_type_t intr_type)
|
esp_err_t gpio_deep_sleep_wakeup_enable(gpio_num_t gpio_num, gpio_int_type_t intr_type)
|
||||||
{
|
{
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -18,8 +18,7 @@ extern "C" {
|
|||||||
* This file contains declarations of GPIO related functions in sleep modes.
|
* This file contains declarations of GPIO related functions in sleep modes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Save GPIO pull-up and pull-down configuration information in the wake-up state
|
* @brief Save GPIO pull-up and pull-down configuration information in the wake-up state
|
||||||
*
|
*
|
||||||
@@ -29,7 +28,7 @@ extern "C" {
|
|||||||
* of all GPIO pull-up and pull-down resistors and disable the pull-up and
|
* of all GPIO pull-up and pull-down resistors and disable the pull-up and
|
||||||
* pull-down resistors of GPIO before the system enters sleep.
|
* pull-down resistors of GPIO before the system enters sleep.
|
||||||
*/
|
*/
|
||||||
void gpio_sleep_mode_config_apply(void);
|
void esp_sleep_gpio_pupd_config_workaround_apply(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Restore GPIO pull-up and pull-down configuration information in the wake-up state
|
* @brief Restore GPIO pull-up and pull-down configuration information in the wake-up state
|
||||||
@@ -37,9 +36,9 @@ void gpio_sleep_mode_config_apply(void);
|
|||||||
* In light sleep mode, after the system wakes up, it needs to restore all GPIO
|
* In light sleep mode, after the system wakes up, it needs to restore all GPIO
|
||||||
* pull-up and pull-down configurations before the last sleep.
|
* pull-up and pull-down configurations before the last sleep.
|
||||||
*/
|
*/
|
||||||
void gpio_sleep_mode_config_unapply(void);
|
void esp_sleep_gpio_pupd_config_workaround_unapply(void);
|
||||||
|
|
||||||
#endif // CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
#endif // CONFIG_IDF_TARGET_ESP32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Call once in startup to disable the wakeup IO pins and release their holding state after waking up from Deep-sleep
|
* @brief Call once in startup to disable the wakeup IO pins and release their holding state after waking up from Deep-sleep
|
||||||
|
@@ -34,21 +34,64 @@
|
|||||||
|
|
||||||
static const char *TAG = "sleep_gpio";
|
static const char *TAG = "sleep_gpio";
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
void gpio_sleep_mode_config_apply(void)
|
/* On ESP32, for IOs with RTC functionality, setting SLP_PU, SLP_PD couldn't change IO status
|
||||||
|
* from FUN_PU, FUN_PD to SLP_PU, SLP_PD at sleep.
|
||||||
|
*/
|
||||||
|
typedef struct gpio_slp_mode_cfg {
|
||||||
|
volatile uint32_t fun_pu;
|
||||||
|
volatile uint32_t fun_pd;
|
||||||
|
} gpio_slp_mode_cfg_t;
|
||||||
|
|
||||||
|
static DRAM_ATTR gpio_slp_mode_cfg_t gpio_cfg = {};
|
||||||
|
|
||||||
|
void esp_sleep_gpio_pupd_config_workaround_apply(void)
|
||||||
{
|
{
|
||||||
|
/* Record fun_pu and fun_pd state in bitmap */
|
||||||
for (gpio_num_t gpio_num = GPIO_NUM_0; gpio_num < GPIO_NUM_MAX; gpio_num++) {
|
for (gpio_num_t gpio_num = GPIO_NUM_0; gpio_num < GPIO_NUM_MAX; gpio_num++) {
|
||||||
if (GPIO_IS_VALID_GPIO(gpio_num)) {
|
int rtcio_num = rtc_io_num_map[gpio_num];
|
||||||
gpio_sleep_pupd_config_apply(gpio_num);
|
if (rtcio_num >= 0 && gpio_ll_sleep_sel_is_enabled(&GPIO, gpio_num)) {
|
||||||
|
if (rtcio_ll_is_pullup_enabled(rtcio_num)) {
|
||||||
|
gpio_cfg.fun_pu |= BIT(rtcio_num);
|
||||||
|
} else {
|
||||||
|
gpio_cfg.fun_pu &= ~BIT(rtcio_num);
|
||||||
|
}
|
||||||
|
if (rtcio_ll_is_pulldown_enabled(rtcio_num)) {
|
||||||
|
gpio_cfg.fun_pd |= BIT(rtcio_num);
|
||||||
|
} else {
|
||||||
|
gpio_cfg.fun_pd &= ~BIT(rtcio_num);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpio_ll_sleep_pullup_is_enabled(&GPIO, gpio_num)) {
|
||||||
|
rtcio_ll_pullup_enable(rtcio_num);
|
||||||
|
} else {
|
||||||
|
rtcio_ll_pullup_disable(rtcio_num);
|
||||||
|
}
|
||||||
|
if (gpio_ll_sleep_pulldown_is_enabled(&GPIO, gpio_num)) {
|
||||||
|
rtcio_ll_pulldown_enable(rtcio_num);
|
||||||
|
} else {
|
||||||
|
rtcio_ll_pulldown_disable(rtcio_num);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR void gpio_sleep_mode_config_unapply(void)
|
void esp_sleep_gpio_pupd_config_workaround_unapply(void)
|
||||||
{
|
{
|
||||||
|
/* Restore fun_pu and fun_pd state from bitmap */
|
||||||
for (gpio_num_t gpio_num = GPIO_NUM_0; gpio_num < GPIO_NUM_MAX; gpio_num++) {
|
for (gpio_num_t gpio_num = GPIO_NUM_0; gpio_num < GPIO_NUM_MAX; gpio_num++) {
|
||||||
if (GPIO_IS_VALID_GPIO(gpio_num)) {
|
int rtcio_num = rtc_io_num_map[gpio_num];
|
||||||
gpio_sleep_pupd_config_unapply(gpio_num);
|
if (rtcio_num >= 0 && gpio_ll_sleep_sel_is_enabled(&GPIO, gpio_num)) {
|
||||||
|
if (gpio_cfg.fun_pu & BIT(rtcio_num)) {
|
||||||
|
rtcio_ll_pullup_enable(rtcio_num);
|
||||||
|
} else {
|
||||||
|
rtcio_ll_pullup_disable(rtcio_num);
|
||||||
|
}
|
||||||
|
if (gpio_cfg.fun_pd & BIT(rtcio_num)) {
|
||||||
|
rtcio_ll_pulldown_enable(rtcio_num);
|
||||||
|
} else {
|
||||||
|
rtcio_ll_pulldown_disable(rtcio_num);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -733,8 +733,8 @@ static SLEEP_FN_ATTR void misc_modules_sleep_prepare(uint32_t sleep_flags, bool
|
|||||||
# endif
|
# endif
|
||||||
mac_bb_power_down_cb_execute();
|
mac_bb_power_down_cb_execute();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
gpio_sleep_mode_config_apply();
|
esp_sleep_gpio_pupd_config_workaround_apply();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP && SOC_PM_CPU_RETENTION_BY_RTCCNTL
|
#if CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP && SOC_PM_CPU_RETENTION_BY_RTCCNTL
|
||||||
sleep_enable_cpu_retention();
|
sleep_enable_cpu_retention();
|
||||||
@@ -801,8 +801,8 @@ static SLEEP_FN_ATTR void misc_modules_wake_prepare(uint32_t sleep_flags)
|
|||||||
#if CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP && SOC_PM_CPU_RETENTION_BY_RTCCNTL
|
#if CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP && SOC_PM_CPU_RETENTION_BY_RTCCNTL
|
||||||
sleep_disable_cpu_retention();
|
sleep_disable_cpu_retention();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
gpio_sleep_mode_config_unapply();
|
esp_sleep_gpio_pupd_config_workaround_unapply();
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
mac_bb_power_up_cb_execute();
|
mac_bb_power_up_cb_execute();
|
||||||
|
@@ -86,8 +86,6 @@ menu "Power Management"
|
|||||||
you can call 'gpio_sleep_sel_dis' to disable this feature on those pins.
|
you can call 'gpio_sleep_sel_dis' to disable this feature on those pins.
|
||||||
You can also keep this feature on and call 'gpio_sleep_set_direction' and 'gpio_sleep_set_pull_mode'
|
You can also keep this feature on and call 'gpio_sleep_set_direction' and 'gpio_sleep_set_pull_mode'
|
||||||
to have a different GPIO configuration at sleep.
|
to have a different GPIO configuration at sleep.
|
||||||
Warning: If you want to enable this option on ESP32, you should enable `GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL`
|
|
||||||
at first, otherwise you will not be able to switch pullup/pulldown mode.
|
|
||||||
|
|
||||||
config PM_SLP_DEFAULT_PARAMS_OPT
|
config PM_SLP_DEFAULT_PARAMS_OPT
|
||||||
bool
|
bool
|
||||||
|
@@ -23,8 +23,9 @@ entries:
|
|||||||
if ESP_PHY_MAC_BB_PD = y:
|
if ESP_PHY_MAC_BB_PD = y:
|
||||||
sleep_modem:mac_bb_power_down_cb_execute (noflash)
|
sleep_modem:mac_bb_power_down_cb_execute (noflash)
|
||||||
sleep_modem:mac_bb_power_up_cb_execute (noflash)
|
sleep_modem:mac_bb_power_up_cb_execute (noflash)
|
||||||
if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
|
if IDF_TARGET_ESP32 = y:
|
||||||
sleep_gpio:gpio_sleep_mode_config_apply (noflash)
|
sleep_gpio:esp_sleep_gpio_pupd_config_workaround_apply (noflash)
|
||||||
|
sleep_gpio:esp_sleep_gpio_pupd_config_workaround_unapply (noflash)
|
||||||
if SOC_PM_SUPPORT_TOP_PD = y:
|
if SOC_PM_SUPPORT_TOP_PD = y:
|
||||||
sleep_clock:clock_domain_pd_allowed (noflash)
|
sleep_clock:clock_domain_pd_allowed (noflash)
|
||||||
sleep_system_peripheral:peripheral_domain_pd_allowed (noflash)
|
sleep_system_peripheral:peripheral_domain_pd_allowed (noflash)
|
||||||
@@ -80,24 +81,9 @@ entries:
|
|||||||
esp_time_impl:esp_time_impl_get_boot_time (noflash)
|
esp_time_impl:esp_time_impl_get_boot_time (noflash)
|
||||||
esp_time_impl:esp_set_time_from_rtc (noflash)
|
esp_time_impl:esp_set_time_from_rtc (noflash)
|
||||||
|
|
||||||
[mapping:driver_pm]
|
|
||||||
archive: libesp_driver_gpio.a
|
|
||||||
entries:
|
|
||||||
if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
|
|
||||||
gpio:gpio_sleep_pupd_config_unapply (noflash)
|
|
||||||
if PM_SLP_IRAM_OPT = y:
|
|
||||||
gpio:gpio_sleep_pupd_config_apply (noflash)
|
|
||||||
|
|
||||||
[mapping:hal_pm]
|
[mapping:hal_pm]
|
||||||
archive: libhal.a
|
archive: libhal.a
|
||||||
entries:
|
entries:
|
||||||
if GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL = y:
|
|
||||||
if PM_SLP_IRAM_OPT = y:
|
|
||||||
gpio_hal_workaround (noflash)
|
|
||||||
else:
|
|
||||||
gpio_hal_workaround:gpio_hal_sleep_pupd_config_unapply (noflash)
|
|
||||||
gpio_hal_workaround:gpio_hal_sleep_mode_setup_wrapper (noflash)
|
|
||||||
gpio_hal_workaround:gpio_hal_fun_pupd_restore (noflash)
|
|
||||||
if SOC_PM_CPU_RETENTION_BY_RTCCNTL = y:
|
if SOC_PM_CPU_RETENTION_BY_RTCCNTL = y:
|
||||||
if PM_SLP_IRAM_OPT = y && PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP = y:
|
if PM_SLP_IRAM_OPT = y && PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP = y:
|
||||||
rtc_cntl_hal:rtc_cntl_hal_enable_cpu_retention (noflash)
|
rtc_cntl_hal:rtc_cntl_hal_enable_cpu_retention (noflash)
|
||||||
|
@@ -325,11 +325,6 @@ elseif(NOT BOOTLOADER_BUILD)
|
|||||||
list(APPEND srcs "touch_sens_hal.c")
|
list(APPEND srcs "touch_sens_hal.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${target} STREQUAL "esp32")
|
|
||||||
list(APPEND srcs
|
|
||||||
"esp32/gpio_hal_workaround.c")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${target} STREQUAL "esp32s2")
|
if(${target} STREQUAL "esp32s2")
|
||||||
list(APPEND srcs
|
list(APPEND srcs
|
||||||
"xt_wdt_hal.c"
|
"xt_wdt_hal.c"
|
||||||
|
@@ -1,111 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
// The HAL layer for GPIO (common part)
|
|
||||||
//
|
|
||||||
#include "esp_attr.h"
|
|
||||||
#include "soc/soc.h"
|
|
||||||
#include "hal/gpio_hal.h"
|
|
||||||
#include "soc/soc_caps.h"
|
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
typedef struct gpio_slp_mode_cfg {
|
|
||||||
volatile uint16_t fun_pu[((SOC_GPIO_PIN_COUNT-1) >> 4) + 1];
|
|
||||||
volatile uint16_t fun_pd[((SOC_GPIO_PIN_COUNT-1) >> 4) + 1];
|
|
||||||
} gpio_slp_mode_cfg_t;
|
|
||||||
|
|
||||||
static void gpio_hal_sleep_mode_setup_wrapper(
|
|
||||||
gpio_hal_context_t *hal,
|
|
||||||
uint32_t gpio_num,
|
|
||||||
void (*opt)(gpio_hal_context_t *, uint32_t, void *)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
static DRAM_ATTR gpio_slp_mode_cfg_t gpio_cfg;
|
|
||||||
if (opt) {
|
|
||||||
(*opt)(hal, gpio_num, (void *)&gpio_cfg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GPIO pu/pd information backup function
|
|
||||||
* @param hal gpio hal
|
|
||||||
* @param gpio_num gpio num
|
|
||||||
* @param args pointer for bitmap to backup GPIO pu/pd information
|
|
||||||
*/
|
|
||||||
static void gpio_hal_fun_pupd_backup(gpio_hal_context_t *hal, uint32_t gpio_num, void *args)
|
|
||||||
{
|
|
||||||
/* On ESP32, setting SLP_PU, SLP_PD couldn`t change GPIO status
|
|
||||||
* from FUN_PU, FUN_PD to SLP_PU, SLP_PD at sleep.
|
|
||||||
* On the ESP32S2, it does.
|
|
||||||
* The following code emulates ESP32S2`s behavior:
|
|
||||||
*/
|
|
||||||
gpio_slp_mode_cfg_t *pcfg = (gpio_slp_mode_cfg_t *)args;
|
|
||||||
|
|
||||||
if (gpio_ll_sleep_sel_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
/* Record fun_pu and fun_pd state in bitmap */
|
|
||||||
if (gpio_ll_pullup_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
pcfg->fun_pu[gpio_num >> 4] |= BIT(gpio_num & 0xf);
|
|
||||||
} else {
|
|
||||||
pcfg->fun_pu[gpio_num >> 4] &= ~BIT(gpio_num & 0xf);
|
|
||||||
}
|
|
||||||
if (gpio_ll_pulldown_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
pcfg->fun_pd[gpio_num >> 4] |= BIT(gpio_num & 0xf);
|
|
||||||
} else {
|
|
||||||
pcfg->fun_pd[gpio_num >> 4] &= ~BIT(gpio_num & 0xf);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gpio_ll_sleep_pullup_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
gpio_ll_pullup_en(hal->dev, gpio_num);
|
|
||||||
} else {
|
|
||||||
gpio_ll_pullup_dis(hal->dev, gpio_num);
|
|
||||||
}
|
|
||||||
if (gpio_ll_sleep_pulldown_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
gpio_ll_pulldown_en(hal->dev, gpio_num);
|
|
||||||
} else {
|
|
||||||
gpio_ll_pulldown_dis(hal->dev, gpio_num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief GPIO pu/pd information backup function
|
|
||||||
* @param hal gpio hal
|
|
||||||
* @param gpio_num gpio num
|
|
||||||
* @param args pointer for bitmap to restore GPIO pu/pd information
|
|
||||||
*/
|
|
||||||
static void gpio_hal_fun_pupd_restore(gpio_hal_context_t *hal, uint32_t gpio_num, void *args)
|
|
||||||
{
|
|
||||||
/* On ESP32, setting SLP_PU, SLP_PD couldn`t change GPIO status
|
|
||||||
* from SLP_PU, SLP_PD to FUN_PU, FUN_PD when it wakes up.
|
|
||||||
* On the ESP32S2, it does.
|
|
||||||
* The following code emulates ESP32S2`s behavior:
|
|
||||||
*/
|
|
||||||
gpio_slp_mode_cfg_t *pcfg = (gpio_slp_mode_cfg_t *)args;
|
|
||||||
|
|
||||||
if (gpio_ll_sleep_sel_is_enabled(hal->dev, gpio_num)) {
|
|
||||||
if (pcfg->fun_pu[gpio_num >> 4] & BIT(gpio_num & 0xf)) {
|
|
||||||
gpio_ll_pullup_en(hal->dev, gpio_num);
|
|
||||||
} else {
|
|
||||||
gpio_ll_pullup_dis(hal->dev, gpio_num);
|
|
||||||
}
|
|
||||||
if (pcfg->fun_pd[gpio_num >> 4] & BIT(gpio_num & 0xf)) {
|
|
||||||
gpio_ll_pulldown_en(hal->dev, gpio_num);
|
|
||||||
} else {
|
|
||||||
gpio_ll_pulldown_dis(hal->dev, gpio_num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void gpio_hal_sleep_pupd_config_apply(gpio_hal_context_t *hal, uint32_t gpio_num)
|
|
||||||
{
|
|
||||||
gpio_hal_sleep_mode_setup_wrapper(hal, gpio_num, gpio_hal_fun_pupd_backup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gpio_hal_sleep_pupd_config_unapply(gpio_hal_context_t *hal, uint32_t gpio_num)
|
|
||||||
{
|
|
||||||
gpio_hal_sleep_mode_setup_wrapper(hal, gpio_num, gpio_hal_fun_pupd_restore);
|
|
||||||
}
|
|
||||||
#endif
|
|
@@ -173,7 +173,7 @@ static inline void gpio_ll_sleep_sel_dis(gpio_dev_t *hw, uint32_t gpio_num)
|
|||||||
__attribute__((always_inline))
|
__attribute__((always_inline))
|
||||||
static inline bool gpio_ll_sleep_sel_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
static inline bool gpio_ll_sleep_sel_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
||||||
{
|
{
|
||||||
return REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], SLP_SEL) ? true : false;
|
return REG_GET_BIT(DR_REG_IO_MUX_BASE + GPIO_PIN_MUX_REG_OFFSET[gpio_num], SLP_SEL) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -210,7 +210,7 @@ static inline void gpio_ll_sleep_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
|
|||||||
__attribute__((always_inline))
|
__attribute__((always_inline))
|
||||||
static inline bool gpio_ll_sleep_pullup_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
static inline bool gpio_ll_sleep_pullup_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
||||||
{
|
{
|
||||||
return REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], SLP_PU) ? true : false;
|
return REG_GET_BIT(DR_REG_IO_MUX_BASE + GPIO_PIN_MUX_REG_OFFSET[gpio_num], SLP_PU) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -247,7 +247,7 @@ static inline void gpio_ll_sleep_pulldown_dis(gpio_dev_t *hw, uint32_t gpio_num)
|
|||||||
__attribute__((always_inline))
|
__attribute__((always_inline))
|
||||||
static inline bool gpio_ll_sleep_pulldown_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
static inline bool gpio_ll_sleep_pulldown_is_enabled(gpio_dev_t *hw, uint32_t gpio_num)
|
||||||
{
|
{
|
||||||
return REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], SLP_PD) ? true : false;
|
return REG_GET_BIT(DR_REG_IO_MUX_BASE + GPIO_PIN_MUX_REG_OFFSET[gpio_num], SLP_PD) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -168,10 +168,11 @@ static inline void rtcio_ll_output_mode_set(int rtcio_num, rtcio_ll_out_mode_t m
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RTC GPIO pullup enable.
|
* @brief RTC GPIO pullup enable.
|
||||||
*
|
*
|
||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline void rtcio_ll_pullup_enable(int rtcio_num)
|
static inline void rtcio_ll_pullup_enable(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pullup) {
|
if (rtc_io_desc[rtcio_num].pullup) {
|
||||||
@@ -180,10 +181,11 @@ static inline void rtcio_ll_pullup_enable(int rtcio_num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RTC GPIO pullup disable.
|
* @brief RTC GPIO pullup disable.
|
||||||
*
|
*
|
||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline void rtcio_ll_pullup_disable(int rtcio_num)
|
static inline void rtcio_ll_pullup_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pullup) {
|
if (rtc_io_desc[rtcio_num].pullup) {
|
||||||
@@ -197,6 +199,7 @@ static inline void rtcio_ll_pullup_disable(int rtcio_num)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @return Whether the pullup of the pad is enabled or not.
|
* @return Whether the pullup of the pad is enabled or not.
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline bool rtcio_ll_is_pullup_enabled(int rtcio_num)
|
static inline bool rtcio_ll_is_pullup_enabled(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pullup) {
|
if (rtc_io_desc[rtcio_num].pullup) {
|
||||||
@@ -207,10 +210,11 @@ static inline bool rtcio_ll_is_pullup_enabled(int rtcio_num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RTC GPIO pulldown enable.
|
* @brief RTC GPIO pulldown enable.
|
||||||
*
|
*
|
||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline void rtcio_ll_pulldown_enable(int rtcio_num)
|
static inline void rtcio_ll_pulldown_enable(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pulldown) {
|
if (rtc_io_desc[rtcio_num].pulldown) {
|
||||||
@@ -219,10 +223,11 @@ static inline void rtcio_ll_pulldown_enable(int rtcio_num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RTC GPIO pulldown disable.
|
* @brief RTC GPIO pulldown disable.
|
||||||
*
|
*
|
||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline void rtcio_ll_pulldown_disable(int rtcio_num)
|
static inline void rtcio_ll_pulldown_disable(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pulldown) {
|
if (rtc_io_desc[rtcio_num].pulldown) {
|
||||||
@@ -236,6 +241,7 @@ static inline void rtcio_ll_pulldown_disable(int rtcio_num)
|
|||||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||||
* @return Whether the pulldown of the pad is enabled or not.
|
* @return Whether the pulldown of the pad is enabled or not.
|
||||||
*/
|
*/
|
||||||
|
__attribute__((always_inline))
|
||||||
static inline bool rtcio_ll_is_pulldown_enabled(int rtcio_num)
|
static inline bool rtcio_ll_is_pulldown_enabled(int rtcio_num)
|
||||||
{
|
{
|
||||||
if (rtc_io_desc[rtcio_num].pulldown) {
|
if (rtc_io_desc[rtcio_num].pulldown) {
|
||||||
|
@@ -497,24 +497,6 @@ void gpio_hal_matrix_out(gpio_hal_context_t *hal, uint32_t gpio_num, uint32_t si
|
|||||||
*/
|
*/
|
||||||
#define gpio_hal_sleep_output_enable(hal, gpio_num) gpio_ll_sleep_output_enable((hal)->dev, gpio_num)
|
#define gpio_hal_sleep_output_enable(hal, gpio_num) gpio_ll_sleep_output_enable((hal)->dev, gpio_num)
|
||||||
|
|
||||||
#if CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
/**
|
|
||||||
* @brief Apply slp_pu/slp_pd configuration to fun_pu/fun_pd when system sleep.
|
|
||||||
*
|
|
||||||
* @param hal Context of the HAL layer
|
|
||||||
* @param gpio_num GPIO number.
|
|
||||||
*/
|
|
||||||
void gpio_hal_sleep_pupd_config_apply(gpio_hal_context_t *hal, uint32_t gpio_num);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Restore fun_pu/fun_pd configuration when system wakeup.
|
|
||||||
*
|
|
||||||
* @param hal Context of the HAL layer
|
|
||||||
* @param gpio_num GPIO number.
|
|
||||||
*/
|
|
||||||
void gpio_hal_sleep_pupd_config_unapply(gpio_hal_context_t *hal, uint32_t gpio_num);
|
|
||||||
#endif // CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL
|
|
||||||
|
|
||||||
#if SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && (SOC_RTCIO_PIN_COUNT == 0) && SOC_DEEP_SLEEP_SUPPORTED
|
#if SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP && (SOC_RTCIO_PIN_COUNT == 0) && SOC_DEEP_SLEEP_SUPPORTED
|
||||||
/**
|
/**
|
||||||
* @brief Enable GPIO deep-sleep wake-up function.
|
* @brief Enable GPIO deep-sleep wake-up function.
|
||||||
|
@@ -6,8 +6,9 @@
|
|||||||
|
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t DRAM_ATTR rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
-1,//GPIO1
|
-1,//GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
-1,//GPIO0
|
-1,//GPIO0
|
||||||
-1,//GPIO1
|
-1,//GPIO1
|
||||||
-1,//GPIO2
|
-1,//GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
-1,//GPIO0
|
-1,//GPIO0
|
||||||
-1,//GPIO1
|
-1,//GPIO1
|
||||||
-1,//GPIO2
|
-1,//GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_io_periph.h"
|
#include "soc/rtc_io_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/rtc_io_reg.h"
|
#include "soc/rtc_io_reg.h"
|
||||||
|
|
||||||
const int rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT] = {
|
||||||
RTCIO_GPIO0_CHANNEL, //GPIO0
|
RTCIO_GPIO0_CHANNEL, //GPIO0
|
||||||
RTCIO_GPIO1_CHANNEL, //GPIO1
|
RTCIO_GPIO1_CHANNEL, //GPIO1
|
||||||
RTCIO_GPIO2_CHANNEL, //GPIO2
|
RTCIO_GPIO2_CHANNEL, //GPIO2
|
||||||
|
@@ -63,7 +63,7 @@ extern const rtc_io_desc_t rtc_io_desc[SOC_RTCIO_PIN_COUNT];
|
|||||||
* This is an internal function of the driver, and is not usually useful
|
* This is an internal function of the driver, and is not usually useful
|
||||||
* for external use.
|
* for external use.
|
||||||
*/
|
*/
|
||||||
extern const int rtc_io_num_map[SOC_GPIO_PIN_COUNT];
|
extern const int8_t rtc_io_num_map[SOC_GPIO_PIN_COUNT];
|
||||||
#endif //SOC_RTCIO_PIN_COUNT > 0
|
#endif //SOC_RTCIO_PIN_COUNT > 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -8,12 +8,10 @@ CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
|
|||||||
CONFIG_PM_SLP_IRAM_OPT=y
|
CONFIG_PM_SLP_IRAM_OPT=y
|
||||||
CONFIG_PM_RTOS_IDLE_OPT=y
|
CONFIG_PM_RTOS_IDLE_OPT=y
|
||||||
# Disable all GPIO at light sleep
|
# Disable all GPIO at light sleep
|
||||||
CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL=y
|
|
||||||
CONFIG_PM_SLP_DISABLE_GPIO=y
|
CONFIG_PM_SLP_DISABLE_GPIO=y
|
||||||
# Enable wifi sleep iram optimization
|
# Enable wifi sleep iram optimization
|
||||||
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
||||||
|
|
||||||
CONFIG_ESP_GRATUITOUS_ARP=n
|
|
||||||
CONFIG_LWIP_ESP_GRATUITOUS_ARP=n
|
CONFIG_LWIP_ESP_GRATUITOUS_ARP=n
|
||||||
|
|
||||||
CONFIG_FREERTOS_HZ=1000
|
CONFIG_FREERTOS_HZ=1000
|
||||||
|
@@ -8,7 +8,6 @@ CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
|
|||||||
CONFIG_PM_SLP_IRAM_OPT=y
|
CONFIG_PM_SLP_IRAM_OPT=y
|
||||||
CONFIG_PM_RTOS_IDLE_OPT=y
|
CONFIG_PM_RTOS_IDLE_OPT=y
|
||||||
# Disable all GPIO at light sleep
|
# Disable all GPIO at light sleep
|
||||||
CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL=y
|
|
||||||
CONFIG_PM_SLP_DISABLE_GPIO=y
|
CONFIG_PM_SLP_DISABLE_GPIO=y
|
||||||
# Enable wifi sleep iram optimization
|
# Enable wifi sleep iram optimization
|
||||||
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
||||||
|
@@ -15,10 +15,8 @@ ignores:
|
|||||||
- "components/hal/cache_hal.c"
|
- "components/hal/cache_hal.c"
|
||||||
- "components/hal/mmu_hal.c"
|
- "components/hal/mmu_hal.c"
|
||||||
- "components/hal/twai_hal_sja1000.c"
|
- "components/hal/twai_hal_sja1000.c"
|
||||||
- "components/hal/esp32/gpio_hal_workaround.c"
|
|
||||||
- "components/hal/esp32/include/hal/twai_ll.h"
|
- "components/hal/esp32/include/hal/twai_ll.h"
|
||||||
- "components/hal/esp32/include/hal/uart_ll.h"
|
- "components/hal/esp32/include/hal/uart_ll.h"
|
||||||
- "components/hal/include/hal/gpio_hal.h"
|
|
||||||
- "components/hal/include/hal/twai_types_deprecated.h"
|
- "components/hal/include/hal/twai_types_deprecated.h"
|
||||||
rule:
|
rule:
|
||||||
any:
|
any:
|
||||||
|
Reference in New Issue
Block a user