1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

cpu/nrf5x: implement pm_off() for nRF53/9160

Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
This commit is contained in:
Dylan Laduranty 2024-04-17 19:02:57 +02:00
parent fc271ea198
commit 7aa7e7954e

View File

@ -27,19 +27,22 @@
#define NRF_POWER NRF_POWER_S
#endif
/* TODO: implement proper pm_off for nRF9160 */
/* Workaround inconsistency between nRF9160 / nRF53 headers */
#ifdef REGULATORS_SYSTEMOFF_SYSTEMOFF_Enable
#define REGULATORS_SYSTEMOFF_SYSTEMOFF_Enter REGULATORS_SYSTEMOFF_SYSTEMOFF_Enable
#endif
void pm_off(void)
{
#if (!defined(CPU_FAM_NRF9160) && !defined(CPU_FAM_NRF53))
#ifdef CPU_FAM_NRF51
#if defined(REGULATORS_SYSTEMOFF_SYSTEMOFF_Enter)
NRF_REGULATORS_S->SYSTEMOFF = REGULATORS_SYSTEMOFF_SYSTEMOFF_Enter;
#elif defined(CPU_FAM_NRF51)
NRF_POWER->RAMON = 0;
#else
for (int i = 0; i < 8; i++) {
for (unsigned int i = 0; i < ARRAY_SIZE(NRF_POWER->RAM); i++) {
NRF_POWER->RAM[i].POWERCLR = (POWER_RAM_POWERCLR_S1RETENTION_Msk |
POWER_RAM_POWERCLR_S0RETENTION_Msk);
}
#endif
NRF_POWER->SYSTEMOFF = 1;
while (1) {}
#endif /* ndef CPU_FAM_NRF9160 */
}