1 /*
2  * Copyright (c) 2025 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Note that the function prototypes are taken from the NRFx HAL
7  */
8 
9 #include <stdint.h>
10 #include <nrfx.h>
11 #if ( (defined(NRFX_RELEASE_VER_AT_LEAST) && NRFX_RELEASE_VER_AT_LEAST(3,10,0)) )
12 #include "hal/nrf_cracen_cm.h"
13 #include "bs_tracing.h"
14 #include "NHW_CRACEN_CM.h"
15 
nrf_cracen_cm_config_indirect_set(NRF_CRACENCORE_Type * p_reg,nrf_cracen_cm_config_indirect_mask_t mask)16 void nrf_cracen_cm_config_indirect_set(NRF_CRACENCORE_Type *           p_reg,
17                                        nrf_cracen_cm_config_indirect_mask_t mask)
18 {
19     p_reg->CRYPTMSTRDMA.CONFIG = (uint32_t)mask;
20     nhw_CRACEN_CM_regw_sideeffects_CONFIG();
21 }
22 
nrf_cracen_cm_softreset(NRF_CRACENCORE_Type * p_reg)23 void nrf_cracen_cm_softreset(NRF_CRACENCORE_Type * p_reg)
24 {
25     p_reg->CRYPTMSTRDMA.CONFIG = CRACENCORE_CRYPTMSTRDMA_CONFIG_SOFTRST_Msk;
26     nhw_CRACEN_CM_regw_sideeffects_CONFIG();
27     p_reg->CRYPTMSTRDMA.CONFIG = 0;
28     nhw_CRACEN_CM_regw_sideeffects_CONFIG();
29 }
30 
nrf_cracen_cm_start(NRF_CRACENCORE_Type * p_reg)31 void nrf_cracen_cm_start(NRF_CRACENCORE_Type * p_reg)
32 {
33     p_reg->CRYPTMSTRDMA.START = CRACENCORE_CRYPTMSTRDMA_START_STARTFETCH_Msk
34                                | CRACENCORE_CRYPTMSTRDMA_START_STARTPUSH_Msk;
35     nhw_CRACEN_CM_regw_sideeffects_START();
36 }
37 
nrf_cracen_cm_int_enable(NRF_CRACENCORE_Type * p_reg,uint32_t mask)38 void nrf_cracen_cm_int_enable(NRF_CRACENCORE_Type * p_reg, uint32_t mask)
39 {
40     p_reg->CRYPTMSTRDMA.INTENSET = mask;
41     nhw_CRACEN_CM_regw_sideeffects_INTENSET(0);
42 }
43 
nrf_cracen_cm_int_disable(NRF_CRACENCORE_Type * p_reg,uint32_t mask)44 void nrf_cracen_cm_int_disable(NRF_CRACENCORE_Type * p_reg, uint32_t mask)
45 {
46     p_reg->CRYPTMSTRDMA.INTENCLR = mask;
47     nhw_CRACEN_CM_regw_sideeffects_INTENCLR(0);
48 }
49 
nrf_cracen_cm_int_clear(NRF_CRACENCORE_Type * p_reg,uint32_t mask)50 void nrf_cracen_cm_int_clear(NRF_CRACENCORE_Type * p_reg, uint32_t mask)
51 {
52     p_reg->CRYPTMSTRDMA.INTSTATCLR = mask;
53     nhw_CRACEN_CM_regw_sideeffects_INTSTARTCLR(0);
54 }
55 
56 #endif
57