mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 02:37:19 +02:00
Merge branch 'bugfix/esp32_light_sleep_crash_4.4' into 'release/v4.4'
Fix crash caused by bluetooth high level interrupt (v4.4) See merge request espressif/esp-idf!15872
This commit is contained in:
@ -113,4 +113,8 @@ menu "Power Management"
|
||||
If enabled, the I/D-cache tag memory will be retained in light sleep. Depending on the the
|
||||
cache configuration, if this option is enabled, it will consume up to 9 KB of internal RAM.
|
||||
|
||||
config PM_UPDATE_CCOMPARE_HLI_WORKAROUND
|
||||
bool
|
||||
default y if PM_ENABLE && BTDM_CTRL_HLI
|
||||
|
||||
endmenu # "Power Management"
|
||||
|
@ -528,6 +528,10 @@ static void IRAM_ATTR do_switch(pm_mode_t new_mode)
|
||||
*/
|
||||
static void IRAM_ATTR update_ccompare(void)
|
||||
{
|
||||
#if CONFIG_PM_UPDATE_CCOMPARE_HLI_WORKAROUND
|
||||
/* disable level 4 and below */
|
||||
uint32_t irq_status = XTOS_SET_INTLEVEL(XCHAL_DEBUGLEVEL - 2);
|
||||
#endif
|
||||
uint32_t ccount = cpu_hal_get_cycle_count();
|
||||
uint32_t ccompare = XTHAL_GET_CCOMPARE(XT_TIMER_INDEX);
|
||||
if ((ccompare - CCOMPARE_MIN_CYCLES_IN_FUTURE) - ccount < UINT32_MAX / 2) {
|
||||
@ -538,6 +542,9 @@ static void IRAM_ATTR update_ccompare(void)
|
||||
XTHAL_SET_CCOMPARE(XT_TIMER_INDEX, new_ccompare);
|
||||
}
|
||||
}
|
||||
#if CONFIG_PM_UPDATE_CCOMPARE_HLI_WORKAROUND
|
||||
XTOS_RESTORE_INTLEVEL(irq_status);
|
||||
#endif
|
||||
}
|
||||
#endif // CONFIG_FREERTOS_SYSTICK_USES_CCOUNT
|
||||
|
||||
|
Reference in New Issue
Block a user