Skip to content

Commit 0611b4c

Browse files
de-nordicnordicjm
authored andcommitted
[nrf noup] zephyr: Clean up non-secure RAM if enabled
fixup! [nrf noup] zephyr: Clean up non-secure RAM if enabled Add support for nrf54l15 UARTE20 and UARTE30. Signed-off-by: Dominik Ermel <[email protected]>
1 parent 650d11c commit 0611b4c

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

boot/zephyr/nrf_cleanup.c

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
*/
66

77
#include <hal/nrf_clock.h>
8-
#if defined(NRF_UARTE0) || defined(NRF_UARTE1)
9-
#include <hal/nrf_uarte.h>
10-
#endif
8+
#include <hal/nrf_uarte.h>
9+
#include <haly/nrfy_uarte.h>
1110
#if defined(NRF_RTC0) || defined(NRF_RTC1) || defined(NRF_RTC2)
1211
#include <hal/nrf_rtc.h>
1312
#endif
@@ -24,6 +23,11 @@
2423
#include <pm_config.h>
2524
#endif
2625

26+
#if defined(NRF_UARTE0) || defined(NRF_UARTE1) || defined(NRF_UARTE20) || \
27+
defined(NRF_UARTE30)
28+
#define NRF_UARTE_CLEANUP
29+
#endif
30+
2731
#define NRF_UARTE_SUBSCRIBE_CONF_OFFS offsetof(NRF_UARTE_Type, SUBSCRIBE_STARTRX)
2832
#define NRF_UARTE_SUBSCRIBE_CONF_SIZE (offsetof(NRF_UARTE_Type, EVENTS_CTS) -\
2933
NRF_UARTE_SUBSCRIBE_CONF_OFFS)
@@ -41,6 +45,23 @@ static inline void nrf_cleanup_rtc(NRF_RTC_Type * rtc_reg)
4145
}
4246
#endif
4347

48+
#if defined(NRF_UARTE_CLEANUP)
49+
static NRF_UARTE_Type *nrf_uarte_to_clean[] = {
50+
#if defined(NRF_UARTE0)
51+
NRF_UARTE0,
52+
#endif
53+
#if defined(NRF_UARTE1)
54+
NRF_UARTE1,
55+
#endif
56+
#if defined(NRF_UARTE20)
57+
NRF_UARTE20,
58+
#endif
59+
#if defined(NRF_UARTE30)
60+
NRF_UARTE30,
61+
#endif
62+
};
63+
#endif
64+
4465
static void nrf_cleanup_clock(void)
4566
{
4667
nrf_clock_int_disable(NRF_CLOCK, 0xFFFFFFFF);
@@ -57,26 +78,31 @@ void nrf_cleanup_peripheral(void)
5778
#if defined(NRF_RTC2)
5879
nrf_cleanup_rtc(NRF_RTC2);
5980
#endif
60-
#if defined(NRF_UARTE0)
61-
nrf_uarte_disable(NRF_UARTE0);
62-
nrf_uarte_int_disable(NRF_UARTE0, 0xFFFFFFFF);
63-
#if defined(NRF_DPPIC)
64-
/* Clear all SUBSCRIBE configurations. */
65-
memset((uint8_t *)NRF_UARTE0 + NRF_UARTE_SUBSCRIBE_CONF_OFFS, 0, NRF_UARTE_SUBSCRIBE_CONF_SIZE);
66-
/* Clear all PUBLISH configurations. */
67-
memset((uint8_t *)NRF_UARTE0 + NRF_UARTE_PUBLISH_CONF_OFFS, 0, NRF_UARTE_PUBLISH_CONF_SIZE);
68-
#endif
69-
#endif
70-
#if defined(NRF_UARTE1)
71-
nrf_uarte_disable(NRF_UARTE1);
72-
nrf_uarte_int_disable(NRF_UARTE1, 0xFFFFFFFF);
81+
82+
#if defined(NRF_UARTE_CLEANUP)
83+
for (int i = 0; i < sizeof(nrf_uarte_to_clean) / sizeof(nrf_uarte_to_clean[0]); ++i) {
84+
NRF_UARTE_Type *current = nrf_uarte_to_clean[i];
85+
86+
nrfy_uarte_int_disable(current, 0xFFFFFFFF);
87+
nrfy_uarte_int_uninit(current);
88+
nrfy_uarte_task_trigger(current, NRF_UARTE_TASK_STOPRX);
89+
90+
nrfy_uarte_event_clear(current, NRF_UARTE_EVENT_RXSTARTED);
91+
nrfy_uarte_event_clear(current, NRF_UARTE_EVENT_ENDRX);
92+
nrfy_uarte_event_clear(current, NRF_UARTE_EVENT_RXTO);
93+
nrfy_uarte_disable(current);
94+
7395
#if defined(NRF_DPPIC)
74-
/* Clear all SUBSCRIBE configurations. */
75-
memset((uint8_t *)NRF_UARTE1 + NRF_UARTE_SUBSCRIBE_CONF_OFFS, 0, NRF_UARTE_SUBSCRIBE_CONF_SIZE);
76-
/* Clear all PUBLISH configurations. */
77-
memset((uint8_t *)NRF_UARTE1 + NRF_UARTE_PUBLISH_CONF_OFFS, 0, NRF_UARTE_PUBLISH_CONF_SIZE);
96+
/* Clear all SUBSCRIBE configurations. */
97+
memset((uint8_t *)current + NRF_UARTE_SUBSCRIBE_CONF_OFFS, 0,
98+
NRF_UARTE_SUBSCRIBE_CONF_SIZE);
99+
/* Clear all PUBLISH configurations. */
100+
memset((uint8_t *)current + NRF_UARTE_PUBLISH_CONF_OFFS, 0,
101+
NRF_UARTE_PUBLISH_CONF_SIZE);
78102
#endif
103+
}
79104
#endif
105+
80106
#if defined(NRF_PPI)
81107
nrf_ppi_channels_disable_all(NRF_PPI);
82108
#endif

0 commit comments

Comments
 (0)