MCUX CLNS
MCUX Crypto Library Normal Secure
 
Loading...
Searching...
No Matches
mcuxClOsccaSafo_Sfr_Ctrl.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2023 NXP */
3/* */
4/* NXP Confidential. This software is owned or controlled by NXP and may */
5/* only be used strictly in accordance with the applicable license terms. */
6/* By expressly accepting such terms or by downloading, installing, */
7/* activating and/or otherwise using the software, you are agreeing that */
8/* you have read, and that you agree to comply with and are bound by, such */
9/* license terms. If you do not agree to be bound by the applicable license */
10/* terms, then you may not retain, install, activate or otherwise use the */
11/* software. */
12/*--------------------------------------------------------------------------*/
13
14#ifndef MCUXCLOSCCASAFO_SFR_CTRL_H_
15#define MCUXCLOSCCASAFO_SFR_CTRL_H_
16
18#include <platform_specific_headers.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/* Datout update handling */
26#define MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_END_UP (0u)
27#define MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_START_UP (1u)
28#define MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_TRIGGER_UP (2u)
29#define MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_NO_UP (3u)
30
31
32#define MCUXCLOSCCASAFO_SFR_CTRL_END_UP ((uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_END_UP << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DATOUT_RES))
33#define MCUXCLOSCCASAFO_SFR_CTRL_START_UP ((uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_START_UP << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DATOUT_RES))
34#define MCUXCLOSCCASAFO_SFR_CTRL_TRIGGER_UP ((uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_TRIGGER_UP << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DATOUT_RES))
35#define MCUXCLOSCCASAFO_SFR_CTRL_NO_UP ((uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_NO_UP << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DATOUT_RES))
36
37/* Crypto operation algorithm selection */
38#define MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_GFMUL (3u)
39#define MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_CMAC (5u)
40#define MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_SM4 (6u)
41#define MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_SM3 (7u)
42
43
44#define MCUXCLOSCCASAFO_SFR_CTRL_INVALID ( 0xFFFFFFFFu ) // TODO: correctly define invalid value
45#define MCUXCLOSCCASAFO_SFR_CTRL_GFMUL ( (uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_GFMUL << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,CRYPTO_OP))
46#define MCUXCLOSCCASAFO_SFR_CTRL_CMAC ( (uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_CMAC << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,CRYPTO_OP))
47#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
48#define MCUXCLOSCCASAFO_SFR_CTRL_SM3 ( (uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_SM3 << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,CRYPTO_OP))
49#endif
50#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
51#define MCUXCLOSCCASAFO_SFR_CTRL_SM4 ( (uint32_t)MCUXCLOSCCASAFO_SFR_CTRL_CRYPTO_OP_SM4 << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,CRYPTO_OP))
52#endif
53
54/* Base index of data input */
55#define MCUXCLOSCCASAFO_SFR_DATIN0_INDEX ( 0u)
56#define MCUXCLOSCCASAFO_SFR_DATIN1_INDEX ( 4u)
57#define MCUXCLOSCCASAFO_SFR_DATIN2_INDEX ( 8u)
58#define MCUXCLOSCCASAFO_SFR_DATIN3_INDEX ( 12u)
59
60/* Base index of data output, starting from DATIN0 */
61#define MCUXCLOSCCASAFO_SFR_DATOUT_INDEX ( 48u)
62
63/* Base index of key input */
64#define MCUXCLOSCCASAFO_SFR_KEY0_INDEX ( 0u)
65#define MCUXCLOSCCASAFO_SFR_KEY1_INDEX ( 4u)
66#define MCUXCLOSCCASAFO_SFR_KEY2_INDEX ( 8u)
67#define MCUXCLOSCCASAFO_SFR_KEY3_INDEX ( 12u)
68
69
70/* Selection of fixed key */
71#define MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL(keyIndex) ((((uint32_t)keyIndex) << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INKEYSEL)) & MCUXCLOSCCASAFO_SFR_FIELD_MASK(CTRL,INKEYSEL))
72#define MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL_KEY0 (MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL(MCUXCLOSCCASAFO_SFR_KEY0_INDEX))
73#define MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL_KEY1 (MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL(MCUXCLOSCCASAFO_SFR_KEY1_INDEX))
74#define MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL_KEY2 (MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL(MCUXCLOSCCASAFO_SFR_KEY2_INDEX))
75#define MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL_KEY3 (MCUXCLOSCCASAFO_SFR_CTRL_INKEYSEL(MCUXCLOSCCASAFO_SFR_KEY3_INDEX))
76
77/* Input selection and pre-processing handling */
78#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN0 ((uint32_t)0u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
79#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN1 ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
80#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN2 ((uint32_t)2u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
81#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN3 ((uint32_t)3u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
82#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN0_XOR_DATOUT ((uint32_t)4u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
83#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN1_XOR_DATOUT ((uint32_t)5u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
84#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN2_XOR_DATOUT ((uint32_t)6u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
85#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATIN3_XOR_DATOUT ((uint32_t)7u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
86#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_DATOUT ((uint32_t)8u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
87#define MCUXCLOSCCASAFO_SFR_CTRL_INSEL_INDEX(index) (((uint32_t)index) << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,INSEL))
88
89/* Output selection and post-processing handling */
90#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES ((uint32_t)0u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
91#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES_XOR_DATIN0 ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
92#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES_XOR_DATIN1 ((uint32_t)2u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
93#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES_XOR_DATIN2 ((uint32_t)3u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
94#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES_XOR_DATIN3 ((uint32_t)4u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
95#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_RES_INDEX(index) (((uint32_t)index) << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,OUTSEL))
96
97/* Encryption/Decryption mode selection */
98#define MCUXCLOSCCASAFO_SFR_CTRL_ENC ((uint32_t)0u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DECRYPT))
99#define MCUXCLOSCCASAFO_SFR_CTRL_DEC ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DECRYPT))
100#define MCUXCLOSCCASAFO_SFR_CTRL_ENC_DEC_MASK ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,DECRYPT))
101
102/* Start operation trigger */
103#define MCUXCLOSCCASAFO_SFR_CTRL_START ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,START))
104
105#define MCUXCLOSCCASAFO_SFR_CTRL_OUTSEL_MASK (MCUXCLOSCCASAFO_SFR_FIELD_MASK(CTRL,OUTSEL))
106
107#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
108#define MCUXCLOSCCASAFO_SFR_CTRL_SM4_EN ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL,SM4_EN))
109#endif
110
111/* Write mode options */
112#define MCUXCLOSCCASAFO_SFR_CTRL2_XORWR ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,XORWR))
113
114#define MCUXCLOSCCASAFO_SFR_CTRL2_FLUSHWR ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,FLUSHWR))
115#define MCUXCLOSCCASAFO_SFR_CTRL2_FLUSH ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,FLUSH))
116#define MCUXCLOSCCASAFO_SFR_CTRL2_FLUSHKEY ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,KEY_FLUSH))
117#define MCUXCLOSCCASAFO_SFR_CTRL2_FLUSHDATA ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,DATAIN_FLUSH))
118
119#define MCUXCLOSCCASAFO_SFR_CTRL2_INCR ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,INCR))
120#define MCUXCLOSCCASAFO_SFR_CTRL2_INCR_CIN ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,INCR_CIN))
121#define MCUXCLOSCCASAFO_SFR_CTRL2_BYTES_ORDER ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,BYTES_ORDER))
122
123#define MCUXCLOSCCASAFO_SFR_CTRL2_BYTES_ORDER_MASK (MCUXCLOSCCASAFO_SFR_FIELD_MASK(CTRL2,BYTES_ORDER))
124#define MCUXCLOSCCASAFO_SFR_CTRL2_KEYRES_MASK (MCUXCLOSCCASAFO_SFR_FIELD_MASK(CTRL2,KEYRES))
125
126#define MCUXCLOSCCASAFO_SFR_CTRL2_RKEY ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,RKEY))
127#define MCUXCLOSCCASAFO_SFR_CTRL2_KEYRES(index) ((((uint32_t)index) << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(CTRL2,KEYRES)) & MCUXCLOSCCASAFO_SFR_FIELD_MASK(CTRL2,KEYRES))
128
129/* Right-shift to convert sizes in bytes to sizes in 32-bit words */
130#define MCUXCLOSCCASAFO_SFR_BYTES_TO_32BIT_WORD_SHIFT (2u)
131#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
132/* SM3 control */
133#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_EN ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_EN))
134#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_MODE_NORM ((uint32_t)0u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_MODE))
135#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_MODE_AUTO ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_MODE))
136#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_LOW_LIM ((uint32_t)0u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_LOW_LIM))
137#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_HIGH_LIM ((uint32_t)15u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_HIGH_LIM))
138#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_COUNT_EN ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_COUNT_EN))
139#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_HASH_RELOAD ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,HASH_RELOAD))
140#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_SM3_STOP ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,SM3_STOP))
141#define MCUXCLOSCCASAFO_SFR_CTRL_SM3_NO_AUTO_INIT ((uint32_t)1u << MCUXCLOSCCASAFO_SFR_FIELD_SHIFT(SM3_CTRL,NO_AUTO_INIT))
142#endif
146MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_readCtrl)
147static inline uint32_t mcuxClOsccaSafo_Sfr_readCtrl(void)
148{
149 return MCUXCLOSCCASAFO_SFR_READ(CTRL);
150}
151
155MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_writeCtrl)
156static inline void mcuxClOsccaSafo_Sfr_writeCtrl(uint32_t value)
157{
158 MCUXCLOSCCASAFO_SFR_WRITE(CTRL, value);
159}
160
164MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_readCtrl2)
165static inline uint32_t mcuxClOsccaSafo_Sfr_readCtrl2(void)
166{
167 return MCUXCLOSCCASAFO_SFR_READ(CTRL2);
168}
169
173MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_writeCtrl2)
174static inline void mcuxClOsccaSafo_Sfr_writeCtrl2(uint32_t value)
175{
176 MCUXCLOSCCASAFO_SFR_WRITE(CTRL2, value);
177}
178
179#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
183MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_readSm3Ctrl)
184static inline uint32_t mcuxClOsccaSafo_Sfr_readSm3Ctrl(void)
185{
186 return MCUXCLOSCCASAFO_SFR_READ(SM3_CTRL);
187}
188
192MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Sfr_writeSm3Ctrl)
193static inline void mcuxClOsccaSafo_Sfr_writeSm3Ctrl(uint32_t value)
194{
195 MCUXCLOSCCASAFO_SFR_WRITE(SM3_CTRL, value);
196}
197#endif
198
199#ifdef __cplusplus
200} /* extern "C" */
201#endif
202
203#endif /* MCUXCLOSCCASAFO_SFR_CTRL_H_ */
Macros for abstracting SAFO hardware SFR access.
#define MCUXCLOSCCASAFO_SFR_READ(sfr)
Read from SAFO SFR.
Definition mcuxClOsccaSafo_SfrAccess.h:42
#define MCUXCLOSCCASAFO_SFR_WRITE(sfr, value)
Write to SAFO SFR.
Definition mcuxClOsccaSafo_SfrAccess.h:45
Provides the API for the CSSL flow protection mechanism.
#define MCUX_CSSL_FP_FUNCTION_DEF(...)
Definition of a flow protected function.
Definition mcuxCsslFlowProtection.h:159