soc: stm32wb: fix ble low-power #82087
Open
+12
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Release HSI CLK48 semaphore when going to sleep to allow C2 (M0) core to start and stop clock as needed while C1 core is not running.
CLK48 is shared between RNG and USB. RNG is needed by M0 during BLE advertisement. A hardware semaphore can be locked by C1 to prevent C2 from stopping CLK48 in case C1 needs to use these peripherals.
If C1 is sleeping and C2 does BLE advertising CLK48 is started since C2 needs RNG to generate some BLE crypto stuff. If semaphore is locked, C2 core can start CLK48 when it needs to but not stop it. When C2 goes back to sleep, CLK48 is therefore left running with increased system power consumption as a result. Order is not restored until C1 later wakes up (because periodical low-power timer expires) and then goes back to sleep, but power consumption is broken as BLE advertisement cycle is repeated.
Fixes #69955.