-
Notifications
You must be signed in to change notification settings - Fork 623
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[nrf noup] boards: nordic: Turn off MRAM suspend for NRF54H20 DK
Turn off suspending MRAM for NRF54H20 DK This change is required so sections of code depending on critical timings will not have unacceptable latency. Turn on NRFS globally so turning off suspending MRAM for NRF54H20 DK will work. Signed-off-by: Jan Zyczkowski <jan.zyczkowski@nordicsemi.no> (cherry picked from commit 58284ff) (cherry picked from commit 9b6cae8) (cherry picked from commit 2c2f60d)
- Loading branch information
Showing
3 changed files
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
zephyr_library() | ||
if(CONFIG_NRFS_MRAM_SERVICE_ENABLED) | ||
zephyr_library_sources(board.c) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/* | ||
* Copyright (c) 2024 Nordic Semiconductor ASA. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <zephyr/init.h> | ||
|
||
#define MODULE mram_suspend_off | ||
#include <zephyr/logging/log.h> | ||
LOG_MODULE_REGISTER(MODULE); | ||
|
||
#include <services/nrfs_mram.h> | ||
#include <nrfs_backend_ipc_service.h> | ||
|
||
#define MRAM_SUSPEND_OFF_INIT_PRIO 90 | ||
|
||
void mram_latency_handler(nrfs_mram_latency_evt_t const *p_evt, void *context) | ||
{ | ||
switch (p_evt->type) { | ||
case NRFS_MRAM_LATENCY_REQ_APPLIED: | ||
LOG_DBG("MRAM latency handler: response received"); | ||
break; | ||
case NRFS_MRAM_LATENCY_REQ_REJECTED: | ||
LOG_ERR("MRAM latency handler - request rejected!"); | ||
break; | ||
default: | ||
LOG_ERR("MRAM latency handler - unexpected event: 0x%x", p_evt->type); | ||
break; | ||
} | ||
} | ||
|
||
static int turn_off_suspend_mram(void) | ||
{ | ||
/* Turn off mram automatic suspend as it causes delays in time depended code sections. */ | ||
|
||
nrfs_err_t err = NRFS_SUCCESS; | ||
|
||
/* Wait for ipc initialization */ | ||
nrfs_backend_wait_for_connection(K_FOREVER); | ||
|
||
err = nrfs_mram_init(mram_latency_handler); | ||
if (err != NRFS_SUCCESS) { | ||
LOG_ERR("MRAM service init failed: %d", err); | ||
} else { | ||
LOG_DBG("MRAM service initialized"); | ||
} | ||
|
||
LOG_DBG("MRAM: set latency: NOT ALLOWED"); | ||
err = nrfs_mram_set_latency(MRAM_LATENCY_NOT_ALLOWED, NULL); | ||
if (err) { | ||
LOG_ERR("MRAM: set latency failed (%d)", err); | ||
} | ||
|
||
return err; | ||
} | ||
|
||
SYS_INIT(turn_off_suspend_mram, APPLICATION, MRAM_SUSPEND_OFF_INIT_PRIO); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters