void sleep_manager_unlock_deep_sleep_internal(void) { core_util_critical_section_enter(); if (deep_sleep_lock == 0) { core_util_critical_section_exit(); error("Deep sleep lock would underflow (< 0)"); } core_util_atomic_decr_u16(&deep_sleep_lock, 1); core_util_critical_section_exit(); }
/* As crypto init counter changes from 1 to 0: * * 1. Disable crypto interrupt * 2. Disable crypto clock */ void crypto_uninit(void) { core_util_critical_section_enter(); if (crypto_init_counter == 0) { core_util_critical_section_exit(); error("Crypto clock enable counter would underflow (< 0)"); } core_util_atomic_decr_u16(&crypto_init_counter, 1); if (crypto_init_counter == 0) { NVIC_DisableIRQ(CRPT_IRQn); SYS_UnlockReg(); // Unlock protected register CLK_DisableModuleClock(CRPT_MODULE); SYS_LockReg(); // Lock protected register } core_util_critical_section_exit(); }
void sleep_manager_unlock_deep_sleep_internal(void) { if (core_util_atomic_decr_u16(&deep_sleep_lock, 1) == 0xFFFF) { MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_UNDERFLOW), "DeepSleepLock underflow (< 0)", deep_sleep_lock); } }