Commit Graph

56 Commits

Author SHA1 Message Date
Li Shuai 6e9885f7e6 Merge branch 'bugfix/idfgh-16634' into 'master'
remove the configurable constraint for sleep memory usage optimization option

Closes IDFGH-16634 and IDF-13780

See merge request espressif/esp-idf!42882
2025-12-31 12:57:50 +08:00
Li Shuai a10fbdba4c change(esp_pm): add dependencies on the rtc clock and rtc_time modules for power managment module 2025-12-27 12:34:17 +08:00
Xiao Xufeng 230ee88d99 feat(spi_flash): implement dynamic CPU frequency switching workaround for encrypted writes
This commit implements a workaround that allows ESP32-C5 to run at 240MHz CPU frequency
normally, while automatically reducing CPU frequency during encrypted flash writes to
ensure correct operation. The frequency limit is chip revision dependent:
- v1.2 and above: limited to 160MHz during encrypted writes
- v1.0 and below: limited to 80MHz during encrypted writes

Key implementation details:
- Frequency limiting is triggered automatically when esp_flash_write_encrypted() is called
- Uses start() flags (ESP_FLASH_START_FLAG_LIMIT_CPU_FREQ) to integrate with OS layer
- Works with both PM enabled and disabled configurations
- Frequency is automatically restored after encrypted write completes
- For ESP32-C5 with 120MHz flash, Flash clock and timing registers are adjusted when
  CPU frequency is reduced to 80MHz
- SPI1 timing registers are configured during frequency switching since encrypted writes
  use SPI1 and must work correctly at reduced CPU frequencies

Code improvements:
- Use SOC_MSPI_FREQ_AXI_CONSTRAINED capability macro instead of hardcoded chip checks
- Control workaround via Kconfig (CONFIG_PM_WORKAROUND_FREQ_LIMIT_ENABLED) instead of
  hardcoded macros
- Add comprehensive test cases covering various PM configurations and edge cases

This workaround enables ESP32-C5 applications to benefit from 240MHz CPU performance
while maintaining reliable encrypted flash write functionality.
2025-12-16 17:42:44 +08:00
wuzhenghui b71a6ce55a change(esp_hw_support): update TOP pd sleep dependency
Disable peripheral powerdown lightsleep if PSRAM if enabled on P4 v3
Force powerdown Flash if peripheral power down lightsleep is enabled
2025-10-20 15:56:15 +08:00
wuzhenghui 065dd70056 change(esp_hw_support): move ESP_SLEEP_POWER_DOWN_CPU to Kconfig 2025-10-14 16:33:30 +08:00
wuzhenghui af1c8a568d feat(esp_hw_support): update cpu_pd support for esp32p4 v3.0 2025-10-14 16:33:28 +08:00
Li Shuai b43f0ddc70 feat(sleep): Modify the build system 2025-08-27 09:50:21 +08:00
Song Ruo Jing 9a2984b4c0 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.
2025-08-05 21:02:09 +08:00
Li Shuai f8832b583c Revert "fix(esp_pm): esp32c5 eco2 disable top pd to avoid mem being changed during sleep"
This reverts commit 8c2ea986b4.
2025-06-04 14:15:16 +08:00
Li Shuai 8c2ea986b4 fix(esp_pm): esp32c5 eco2 disable top pd to avoid mem being changed during sleep 2025-05-29 20:14:13 +08:00
Li Shuai 0cb211489f fix(ci): fix ci build error 2025-04-17 22:06:21 +08:00
Li Shuai b7e26d5546 change: power management iram memory usage optimization is only effective for esp32c2 2025-04-17 22:01:10 +08:00
Marius Vikhammer 55be8bdc0d feat(esp_timer): added kconfig option for placing IRAM code into flash 2025-03-18 15:23:43 +08:00
wuzhenghui 6bd6be3ed8 fix(esp_hw_support): warning instead of error when enabling uart/gpio wakeup in pd_top sleep 2025-02-27 16:15:36 +08:00
wuzhenghui 0f69fda3d5 change(doc): added more usage notes about PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP 2025-02-19 20:54:21 +08:00
Lou Tianhao 4393343ac9 fix(ci): some actions taken to pass ci 2024-08-29 14:15:41 +08:00
wuzhenghui a68668c392 change(esp_hw_support): do timergroup watchdogs retention by needs 2024-05-28 15:17:19 +08:00
gaoxu cbef285352 feat(pm): add SOC_PM_SUPPORTED in soc caps 2024-05-11 10:51:17 +08:00
gaoxu 3db559ab21 feat(gpio): update gpio docs on ESP32C5 MP version 2024-05-11 10:49:42 +08:00
gaoxu 605f2309bf feat(gpio): add gpio support on ESP32C5 MP version 2024-04-26 12:27:53 +08:00
wuzhenghui 01dce77fa7 feat(esp_pm): fix esp32p4 cpu powerdown kconfig dependency error 2024-04-23 11:54:45 +08:00
wuzhenghui f1beed90ff feat(esp_hw_support): support esp32p4 sleep clock retention 2024-03-28 19:18:24 +08:00
wuzhenghui bbc8fd5c9c feat(esp_hw_support): support esp32p4 sleep cpu retention 2024-03-15 18:13:25 +08:00
Jakub Kocka 0b00e49ac5 fix: Fixed KConfig files that were not succesfully checked 2024-02-02 14:13:45 +01:00
wuzhenghui 232187d12c change(esp_pm): improve POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP description
Rename PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP to PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP
and improve the description for it
2023-11-13 16:32:25 +08:00
wuzhenghui 97e001d603 fix(esp_hw_support): fix pm tests failure caused by non-iram safe test code 2023-10-17 20:56:43 +08:00
Lou Tianhao 450e685cb7 feat(PowerManagement/lightsleep): Support ESP_SLEEP_EVENT_CALLBACKS 2023-09-25 15:39:18 +08:00
Lou Tianhao a28a09855d feat(PowerManagement/lightsleep): Support PM_LIGHT_SLEEP_CALLBACKS 2023-09-25 15:39:12 +08:00
Armando 7dbd3f6909 feat(ci): Enable p4 example, test_apps and unit tests CI build 2023-08-24 12:51:19 +08:00
wuzhenghui a5c992c8af fix(esp_pm): fix PM_SLP_IRAM_OPT/PM_RTOS_IDLE_OPT feature
- Fix flash accessed code to resolve issues with PM_SLP_IRAM_OPT/PM_RTOS_IDLE_OPT enabled
2023-07-14 21:21:19 +08:00
Lou Tianhao 7fd74057a3 example: bringup light sleep example for esp32h2 2023-06-26 21:05:16 +08:00
Lou Tianhao 6ea441c815 Power Management: support CPU powered down in light sleep for esp32h2 2023-06-26 20:57:55 +08:00
Lou Tianhao 63d32ab620 Power Management: support DFS and PMU feature for esp32h2 2023-06-26 20:57:55 +08:00
wuzhenghui 388746ca31 Kconfig: add more help info for pm related options help 2023-05-29 16:35:03 +08:00
wuzhenghui dcab6368ce feature: support configuration of sleep clock calibration frequency 2023-05-04 12:09:26 +08:00
wuzhenghui 332d6fddb9 esp_pm: check sleep retention frame integrity in ci UT 2023-04-11 11:18:52 +08:00
wuzhenghui fcf0498da8 esp_pm: update doc for PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP 2023-03-30 10:33:47 +08:00
fuzhibo@espressif.com e252748d92 periph retention: runtime critical digital peripherals sleep retention support 2023-02-15 11:46:40 +08:00
Li Shuai 68594abe05 sleep: light sleep supported for esp32c6 2023-01-31 22:12:58 +08:00
Li Shuai 0f6cda1dd3 Power Management: support DFS 2023-01-31 22:12:27 +08:00
Cao Sen Miao 94120b82c2 esp32h2: add build test 2023-01-17 10:29:04 +08:00
Song Ruo Jing 2557e24a28 ci: Enable esp32c6 example, test_apps, and unit tests CI build stage 2022-11-01 11:23:21 +08:00
Darian Leung 546a7fc495 esp_pm: Disable esp_pm when SMP FreeRTOS is enabled
SMP FreeRTOS currently does not support power management yet. This
commit makes SMP FreeRTOS and esp_pm mutually exclusive.
2022-06-15 16:17:59 +08:00
Marius Vikhammer edb76f14d6 esp_timer: remove legacy ESP32 FRC timer implementation. 2022-02-10 15:17:49 +08:00
xiongweichao 422cf3cf37 Fix crash caused by bluetooth high level interrupt 2021-11-10 16:11:10 +08:00
Li Shuai ccf1a9a1fc light sleep: add i/d-cache tagmem retention support for esp32s3 2021-08-27 11:11:09 +08:00
Li Shuai 03746de96f light sleep: add cpu power down support for esp32s3 2021-08-27 11:11:06 +08:00
Renz Bagaporo 586023790e esp_system: move sleep modes to esp_hw_support, power down light sleep to esp_pm 2021-04-07 17:53:37 +08:00
Li Shuai 1595973fe8 light sleep: some default parameters optimization 2021-03-10 18:22:41 +00:00
ninh 27aa6c289f components/pm: Add slp gpio configure workaround 2021-01-15 15:34:45 +08:00