From a84faa3cefc7927918665bf507de4b71f932d403 Mon Sep 17 00:00:00 2001 From: "Michael (XIAO Xufeng)" Date: Thu, 24 Mar 2022 03:00:47 +0800 Subject: [PATCH] touch_sensor: forbid from using touch sensor with sleep on ESP32-S3 This is not supported yet. --- components/driver/esp32s3/touch_sensor.c | 4 ++++ components/esp_hw_support/sleep_modes.c | 9 +++++++++ examples/system/deep_sleep/README.md | 3 +++ examples/system/deep_sleep/main/Kconfig.projbuild | 2 +- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/components/driver/esp32s3/touch_sensor.c b/components/driver/esp32s3/touch_sensor.c index 3b1aebaac7..0c836e7185 100644 --- a/components/driver/esp32s3/touch_sensor.c +++ b/components/driver/esp32s3/touch_sensor.c @@ -248,6 +248,10 @@ esp_err_t touch_pad_config(touch_pad_t touch_num) esp_err_t touch_pad_init(void) { + //TODO: IDF-4813 + extern bool esp_no_sleep; + esp_no_sleep = true; + if (rtc_touch_mux == NULL) { rtc_touch_mux = xSemaphoreCreateMutex(); } diff --git a/components/esp_hw_support/sleep_modes.c b/components/esp_hw_support/sleep_modes.c index d85cc487db..36443c5b57 100644 --- a/components/esp_hw_support/sleep_modes.c +++ b/components/esp_hw_support/sleep_modes.c @@ -360,8 +360,17 @@ inline static void IRAM_ATTR misc_modules_wake_prepare(void) inline static uint32_t IRAM_ATTR call_rtc_sleep_start(uint32_t reject_triggers, uint32_t lslp_mem_inf_fpu); +//TODO: IDF-4813 +bool esp_no_sleep = false; + static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags) { +#if CONFIG_IDF_TARGET_ESP32S3 + if (esp_no_sleep) { + ESP_LOGE(TAG, "Sleep cannot be used with Touch/ULP for now."); + abort(); + } +#endif //CONFIG_IDF_TARGET_ESP32S3 // Stop UART output so that output is not lost due to APB frequency change. // For light sleep, suspend UART output — it will resume after wakeup. // For deep sleep, wait for the contents of UART FIFO to be sent. diff --git a/examples/system/deep_sleep/README.md b/examples/system/deep_sleep/README.md index c250f05ee1..4c098a244b 100644 --- a/examples/system/deep_sleep/README.md +++ b/examples/system/deep_sleep/README.md @@ -1,3 +1,6 @@ +| Supported Targets | ESP32 | ESP32-S2 | ESP32-C3 | +| ----------------- | ----- | -------- | -------- | + # Deep Sleep Example (See the README.md file in the upper level 'examples' directory for more information about examples.) diff --git a/examples/system/deep_sleep/main/Kconfig.projbuild b/examples/system/deep_sleep/main/Kconfig.projbuild index 625773cc0f..f7087c6337 100644 --- a/examples/system/deep_sleep/main/Kconfig.projbuild +++ b/examples/system/deep_sleep/main/Kconfig.projbuild @@ -3,7 +3,7 @@ menu "Example Configuration" config EXAMPLE_TOUCH_WAKEUP bool "Enable touch wake up" default y - depends on !IDF_TARGET_ESP32C3 + depends on !IDF_TARGET_ESP32C3 && !IDF_TARGET_ESP32S3 help This option enables wake up from deep sleep using touch pads TOUCH8 and TOUCH9, which correspond to GPIO33 and GPIO32.