Skip to content

Commit edeb9a0

Browse files
Revert "[nrf fromtree] soc: nordic: s2ram: Align s2ram marking procedures"
This reverts commit f5af365.
1 parent 0d8fc2f commit edeb9a0

File tree

1 file changed

+13
-36
lines changed

1 file changed

+13
-36
lines changed

soc/nordic/nrf54h/pm_s2ram.c

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -124,48 +124,25 @@ int soc_s2ram_suspend(pm_s2ram_system_off_fn_t system_off)
124124
return ret;
125125
}
126126

127-
void __attribute__((naked)) pm_s2ram_mark_set(void)
127+
void pm_s2ram_mark_set(void)
128128
{
129129
/* empty */
130-
__asm__ volatile("bx lr\n");
131130
}
132131

133-
bool __attribute__((naked)) pm_s2ram_mark_check_and_clear(void)
132+
bool pm_s2ram_mark_check_and_clear(void)
134133
{
135-
__asm__ volatile(
136-
/* Set return value to 0 */
137-
"mov r0, #0\n"
134+
bool unretained_wake;
135+
bool restore_valid;
136+
uint32_t reset_reason = nrf_resetinfo_resetreas_local_get(NRF_RESETINFO);
138137

139-
/* Load and check RESETREAS register */
140-
"ldr r3, [%[resetinfo_addr], %[resetreas_offs]]\n"
141-
"cmp r3, %[resetreas_unretained_mask]\n"
142-
143-
"bne exit\n"
144-
145-
/* Clear RESETREAS register */
146-
"str r0, [%[resetinfo_addr], %[resetreas_offs]]\n"
147-
148-
/* Load RESTOREVALID register */
149-
"ldr r3, [%[resetinfo_addr], %[restorevalid_offs]]\n"
150-
151-
/* Clear RESTOREVALID */
152-
"str r0, [%[resetinfo_addr], %[restorevalid_offs]]\n"
153-
154-
/* Check RESTOREVALID register */
155-
"cmp r3, %[restorevalid_present_mask]\n"
156-
"bne exit\n"
157-
158-
/* Set return value to 1 */
159-
"mov r0, #1\n"
138+
if (reset_reason != NRF_RESETINFO_RESETREAS_LOCAL_UNRETAINED_MASK) {
139+
return false;
140+
}
141+
unretained_wake = reset_reason & NRF_RESETINFO_RESETREAS_LOCAL_UNRETAINED_MASK;
142+
nrf_resetinfo_resetreas_local_set(NRF_RESETINFO, 0);
160143

161-
"exit:\n"
162-
"bx lr\n"
163-
:
164-
: [resetinfo_addr] "r"(NRF_RESETINFO),
165-
[resetreas_offs] "r"(offsetof(NRF_RESETINFO_Type, RESETREAS.LOCAL)),
166-
[resetreas_unretained_mask] "r"(NRF_RESETINFO_RESETREAS_LOCAL_UNRETAINED_MASK),
167-
[restorevalid_offs] "r"(offsetof(NRF_RESETINFO_Type, RESTOREVALID)),
168-
[restorevalid_present_mask] "r"(RESETINFO_RESTOREVALID_RESTOREVALID_Msk)
144+
restore_valid = nrf_resetinfo_restore_valid_check(NRF_RESETINFO);
145+
nrf_resetinfo_restore_valid_set(NRF_RESETINFO, false);
169146

170-
: "r0", "r1", "r3", "r4", "memory");
147+
return (unretained_wake & restore_valid) ? true : false;
171148
}

0 commit comments

Comments
 (0)