Software APIs
kmac_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for kmac
4 */
5
6// Copyright information found in source file:
7// Copyright lowRISC contributors (OpenTitan project).
8
9// Licensing information found in source file:
10// Licensed under the Apache License, Version 2.0, see LICENSE for details.
11// SPDX-License-Identifier: Apache-2.0
12
13#ifndef _KMAC_REG_DEFS_
14#define _KMAC_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of words for the secret key
20#define KMAC_PARAM_NUM_WORDS_KEY 16
21
22// Number of words for Encoded NsPrefix.
23#define KMAC_PARAM_NUM_WORDS_PREFIX 11
24
25// Number of entries in the message FIFO. Must match kmac_pkg::MsgFifoDepth.
26#define KMAC_PARAM_NUM_ENTRIES_MSG_FIFO 10
27
28// Number of bytes in a single entry of the message FIFO. Must match
29// kmac_pkg::MsgWidth.
30#define KMAC_PARAM_NUM_BYTES_MSG_FIFO_ENTRY 8
31
32// Width of the hash counter in the entropy
33#define KMAC_PARAM_HASH_CNT_W 10
34
35// Number of words for the PRNG seed used for entropy generation
36#define KMAC_PARAM_NUM_SEEDS_ENTROPY 6
37
38// Number of alerts
39#define KMAC_PARAM_NUM_ALERTS 2
40
41// Register width
42#define KMAC_PARAM_REG_WIDTH 32
43
44// Common Interrupt Offsets
45#define KMAC_INTR_COMMON_KMAC_DONE_BIT 0
46#define KMAC_INTR_COMMON_FIFO_EMPTY_BIT 1
47#define KMAC_INTR_COMMON_KMAC_ERR_BIT 2
48
49// Interrupt State Register
50#define KMAC_INTR_STATE_REG_OFFSET 0x0
51#define KMAC_INTR_STATE_REG_RESVAL 0x0u
52#define KMAC_INTR_STATE_KMAC_DONE_BIT 0
53#define KMAC_INTR_STATE_FIFO_EMPTY_BIT 1
54#define KMAC_INTR_STATE_KMAC_ERR_BIT 2
55
56// Interrupt Enable Register
57#define KMAC_INTR_ENABLE_REG_OFFSET 0x4
58#define KMAC_INTR_ENABLE_REG_RESVAL 0x0u
59#define KMAC_INTR_ENABLE_KMAC_DONE_BIT 0
60#define KMAC_INTR_ENABLE_FIFO_EMPTY_BIT 1
61#define KMAC_INTR_ENABLE_KMAC_ERR_BIT 2
62
63// Interrupt Test Register
64#define KMAC_INTR_TEST_REG_OFFSET 0x8
65#define KMAC_INTR_TEST_REG_RESVAL 0x0u
66#define KMAC_INTR_TEST_KMAC_DONE_BIT 0
67#define KMAC_INTR_TEST_FIFO_EMPTY_BIT 1
68#define KMAC_INTR_TEST_KMAC_ERR_BIT 2
69
70// Alert Test Register
71#define KMAC_ALERT_TEST_REG_OFFSET 0xc
72#define KMAC_ALERT_TEST_REG_RESVAL 0x80000000u
73#define KMAC_ALERT_TEST_RECOV_OPERATION_ERR_BIT 0
74#define KMAC_ALERT_TEST_FATAL_FAULT_ERR_BIT 1
75#define KMAC_ALERT_TEST_REGWEN_BIT 31
76
77// Controls the configurability of !!CFG_SHADOWED register.
78#define KMAC_CFG_REGWEN_REG_OFFSET 0x10
79#define KMAC_CFG_REGWEN_REG_RESVAL 0x1u
80#define KMAC_CFG_REGWEN_EN_BIT 0
81
82// KMAC Configuration register.
83#define KMAC_CFG_SHADOWED_REG_OFFSET 0x14
84#define KMAC_CFG_SHADOWED_REG_RESVAL 0x0u
85#define KMAC_CFG_SHADOWED_KMAC_EN_BIT 0
86#define KMAC_CFG_SHADOWED_KSTRENGTH_MASK 0x7u
87#define KMAC_CFG_SHADOWED_KSTRENGTH_OFFSET 1
88#define KMAC_CFG_SHADOWED_KSTRENGTH_FIELD \
89 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_KSTRENGTH_MASK, .index = KMAC_CFG_SHADOWED_KSTRENGTH_OFFSET })
90#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L128 0x0
91#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L224 0x1
92#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L256 0x2
93#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L384 0x3
94#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L512 0x4
95#define KMAC_CFG_SHADOWED_MODE_MASK 0x3u
96#define KMAC_CFG_SHADOWED_MODE_OFFSET 4
97#define KMAC_CFG_SHADOWED_MODE_FIELD \
98 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_MODE_MASK, .index = KMAC_CFG_SHADOWED_MODE_OFFSET })
99#define KMAC_CFG_SHADOWED_MODE_VALUE_SHA3 0x0
100#define KMAC_CFG_SHADOWED_MODE_VALUE_SHAKE 0x2
101#define KMAC_CFG_SHADOWED_MODE_VALUE_CSHAKE 0x3
102#define KMAC_CFG_SHADOWED_MSG_ENDIANNESS_BIT 8
103#define KMAC_CFG_SHADOWED_STATE_ENDIANNESS_BIT 9
104#define KMAC_CFG_SHADOWED_SIDELOAD_BIT 12
105#define KMAC_CFG_SHADOWED_ENTROPY_MODE_MASK 0x3u
106#define KMAC_CFG_SHADOWED_ENTROPY_MODE_OFFSET 16
107#define KMAC_CFG_SHADOWED_ENTROPY_MODE_FIELD \
108 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_ENTROPY_MODE_MASK, .index = KMAC_CFG_SHADOWED_ENTROPY_MODE_OFFSET })
109#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_IDLE_MODE 0x0
110#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_EDN_MODE 0x1
111#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_SW_MODE 0x2
112#define KMAC_CFG_SHADOWED_ENTROPY_FAST_PROCESS_BIT 19
113#define KMAC_CFG_SHADOWED_MSG_MASK_BIT 20
114#define KMAC_CFG_SHADOWED_ENTROPY_READY_BIT 24
115#define KMAC_CFG_SHADOWED_EN_UNSUPPORTED_MODESTRENGTH_BIT 26
116
117// KMAC/ SHA3 command register.
118#define KMAC_CMD_REG_OFFSET 0x18
119#define KMAC_CMD_REG_RESVAL 0x0u
120#define KMAC_CMD_CMD_MASK 0x3fu
121#define KMAC_CMD_CMD_OFFSET 0
122#define KMAC_CMD_CMD_FIELD \
123 ((bitfield_field32_t) { .mask = KMAC_CMD_CMD_MASK, .index = KMAC_CMD_CMD_OFFSET })
124#define KMAC_CMD_CMD_VALUE_START 0x7
125#define KMAC_CMD_CMD_VALUE_PROCESS 0x32
126#define KMAC_CMD_CMD_VALUE_RUN 0x2e
127#define KMAC_CMD_CMD_VALUE_DONE 0x35
128#define KMAC_CMD_CMD_VALUE_STOP 0x1c
129#define KMAC_CMD_CMD_VALUE_STATE_WRITE 0x1b
130#define KMAC_CMD_CMD_VALUE_CONTINUE 0x29
131#define KMAC_CMD_ENTROPY_REQ_BIT 8
132#define KMAC_CMD_HASH_CNT_CLR_BIT 9
133#define KMAC_CMD_ERR_PROCESSED_BIT 10
134
135// KMAC/SHA3 Status register.
136#define KMAC_STATUS_REG_OFFSET 0x1c
137#define KMAC_STATUS_REG_RESVAL 0x4001u
138#define KMAC_STATUS_SHA3_IDLE_BIT 0
139#define KMAC_STATUS_SHA3_ABSORB_BIT 1
140#define KMAC_STATUS_SHA3_SQUEEZE_BIT 2
141#define KMAC_STATUS_SHA3_STOPPED_BIT 3
142#define KMAC_STATUS_STATE_WRITE_BIT 4
143#define KMAC_STATUS_FIFO_DEPTH_MASK 0x1fu
144#define KMAC_STATUS_FIFO_DEPTH_OFFSET 8
145#define KMAC_STATUS_FIFO_DEPTH_FIELD \
146 ((bitfield_field32_t) { .mask = KMAC_STATUS_FIFO_DEPTH_MASK, .index = KMAC_STATUS_FIFO_DEPTH_OFFSET })
147#define KMAC_STATUS_FIFO_EMPTY_BIT 14
148#define KMAC_STATUS_FIFO_FULL_BIT 15
149#define KMAC_STATUS_ALERT_FATAL_FAULT_BIT 16
150#define KMAC_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT 17
151
152// Entropy Timer Periods.
153#define KMAC_ENTROPY_PERIOD_REG_OFFSET 0x20
154#define KMAC_ENTROPY_PERIOD_REG_RESVAL 0x0u
155#define KMAC_ENTROPY_PERIOD_PRESCALER_MASK 0x3ffu
156#define KMAC_ENTROPY_PERIOD_PRESCALER_OFFSET 0
157#define KMAC_ENTROPY_PERIOD_PRESCALER_FIELD \
158 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_PERIOD_PRESCALER_MASK, .index = KMAC_ENTROPY_PERIOD_PRESCALER_OFFSET })
159#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_MASK 0xffffu
160#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_OFFSET 16
161#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_FIELD \
162 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_PERIOD_WAIT_TIMER_MASK, .index = KMAC_ENTROPY_PERIOD_WAIT_TIMER_OFFSET })
163
164// Entropy Refresh Counter
165#define KMAC_ENTROPY_REFRESH_HASH_CNT_REG_OFFSET 0x24
166#define KMAC_ENTROPY_REFRESH_HASH_CNT_REG_RESVAL 0x0u
167#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_MASK 0x3ffu
168#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_OFFSET 0
169#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_FIELD \
170 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_MASK, .index = KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_OFFSET })
171
172// Entropy Refresh Threshold
173#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_REG_OFFSET 0x28
174#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_REG_RESVAL 0x0u
175#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_MASK 0x3ffu
176#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_OFFSET 0
177#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_FIELD \
178 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_MASK, .index = KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_OFFSET })
179
180// Entropy Seed
181#define KMAC_ENTROPY_SEED_REG_OFFSET 0x2c
182#define KMAC_ENTROPY_SEED_REG_RESVAL 0x0u
183
184// KMAC Secret Key
185#define KMAC_KEY_SHARE0_KEY_FIELD_WIDTH 32
186#define KMAC_KEY_SHARE0_MULTIREG_COUNT 16
187
188// KMAC Secret Key
189#define KMAC_KEY_SHARE0_0_REG_OFFSET 0x30
190#define KMAC_KEY_SHARE0_0_REG_RESVAL 0x0u
191
192// KMAC Secret Key
193#define KMAC_KEY_SHARE0_1_REG_OFFSET 0x34
194#define KMAC_KEY_SHARE0_1_REG_RESVAL 0x0u
195
196// KMAC Secret Key
197#define KMAC_KEY_SHARE0_2_REG_OFFSET 0x38
198#define KMAC_KEY_SHARE0_2_REG_RESVAL 0x0u
199
200// KMAC Secret Key
201#define KMAC_KEY_SHARE0_3_REG_OFFSET 0x3c
202#define KMAC_KEY_SHARE0_3_REG_RESVAL 0x0u
203
204// KMAC Secret Key
205#define KMAC_KEY_SHARE0_4_REG_OFFSET 0x40
206#define KMAC_KEY_SHARE0_4_REG_RESVAL 0x0u
207
208// KMAC Secret Key
209#define KMAC_KEY_SHARE0_5_REG_OFFSET 0x44
210#define KMAC_KEY_SHARE0_5_REG_RESVAL 0x0u
211
212// KMAC Secret Key
213#define KMAC_KEY_SHARE0_6_REG_OFFSET 0x48
214#define KMAC_KEY_SHARE0_6_REG_RESVAL 0x0u
215
216// KMAC Secret Key
217#define KMAC_KEY_SHARE0_7_REG_OFFSET 0x4c
218#define KMAC_KEY_SHARE0_7_REG_RESVAL 0x0u
219
220// KMAC Secret Key
221#define KMAC_KEY_SHARE0_8_REG_OFFSET 0x50
222#define KMAC_KEY_SHARE0_8_REG_RESVAL 0x0u
223
224// KMAC Secret Key
225#define KMAC_KEY_SHARE0_9_REG_OFFSET 0x54
226#define KMAC_KEY_SHARE0_9_REG_RESVAL 0x0u
227
228// KMAC Secret Key
229#define KMAC_KEY_SHARE0_10_REG_OFFSET 0x58
230#define KMAC_KEY_SHARE0_10_REG_RESVAL 0x0u
231
232// KMAC Secret Key
233#define KMAC_KEY_SHARE0_11_REG_OFFSET 0x5c
234#define KMAC_KEY_SHARE0_11_REG_RESVAL 0x0u
235
236// KMAC Secret Key
237#define KMAC_KEY_SHARE0_12_REG_OFFSET 0x60
238#define KMAC_KEY_SHARE0_12_REG_RESVAL 0x0u
239
240// KMAC Secret Key
241#define KMAC_KEY_SHARE0_13_REG_OFFSET 0x64
242#define KMAC_KEY_SHARE0_13_REG_RESVAL 0x0u
243
244// KMAC Secret Key
245#define KMAC_KEY_SHARE0_14_REG_OFFSET 0x68
246#define KMAC_KEY_SHARE0_14_REG_RESVAL 0x0u
247
248// KMAC Secret Key
249#define KMAC_KEY_SHARE0_15_REG_OFFSET 0x6c
250#define KMAC_KEY_SHARE0_15_REG_RESVAL 0x0u
251
252// KMAC Secret Key, 2nd share.
253#define KMAC_KEY_SHARE1_KEY_FIELD_WIDTH 32
254#define KMAC_KEY_SHARE1_MULTIREG_COUNT 16
255
256// KMAC Secret Key, 2nd share.
257#define KMAC_KEY_SHARE1_0_REG_OFFSET 0x70
258#define KMAC_KEY_SHARE1_0_REG_RESVAL 0x0u
259
260// KMAC Secret Key, 2nd share.
261#define KMAC_KEY_SHARE1_1_REG_OFFSET 0x74
262#define KMAC_KEY_SHARE1_1_REG_RESVAL 0x0u
263
264// KMAC Secret Key, 2nd share.
265#define KMAC_KEY_SHARE1_2_REG_OFFSET 0x78
266#define KMAC_KEY_SHARE1_2_REG_RESVAL 0x0u
267
268// KMAC Secret Key, 2nd share.
269#define KMAC_KEY_SHARE1_3_REG_OFFSET 0x7c
270#define KMAC_KEY_SHARE1_3_REG_RESVAL 0x0u
271
272// KMAC Secret Key, 2nd share.
273#define KMAC_KEY_SHARE1_4_REG_OFFSET 0x80
274#define KMAC_KEY_SHARE1_4_REG_RESVAL 0x0u
275
276// KMAC Secret Key, 2nd share.
277#define KMAC_KEY_SHARE1_5_REG_OFFSET 0x84
278#define KMAC_KEY_SHARE1_5_REG_RESVAL 0x0u
279
280// KMAC Secret Key, 2nd share.
281#define KMAC_KEY_SHARE1_6_REG_OFFSET 0x88
282#define KMAC_KEY_SHARE1_6_REG_RESVAL 0x0u
283
284// KMAC Secret Key, 2nd share.
285#define KMAC_KEY_SHARE1_7_REG_OFFSET 0x8c
286#define KMAC_KEY_SHARE1_7_REG_RESVAL 0x0u
287
288// KMAC Secret Key, 2nd share.
289#define KMAC_KEY_SHARE1_8_REG_OFFSET 0x90
290#define KMAC_KEY_SHARE1_8_REG_RESVAL 0x0u
291
292// KMAC Secret Key, 2nd share.
293#define KMAC_KEY_SHARE1_9_REG_OFFSET 0x94
294#define KMAC_KEY_SHARE1_9_REG_RESVAL 0x0u
295
296// KMAC Secret Key, 2nd share.
297#define KMAC_KEY_SHARE1_10_REG_OFFSET 0x98
298#define KMAC_KEY_SHARE1_10_REG_RESVAL 0x0u
299
300// KMAC Secret Key, 2nd share.
301#define KMAC_KEY_SHARE1_11_REG_OFFSET 0x9c
302#define KMAC_KEY_SHARE1_11_REG_RESVAL 0x0u
303
304// KMAC Secret Key, 2nd share.
305#define KMAC_KEY_SHARE1_12_REG_OFFSET 0xa0
306#define KMAC_KEY_SHARE1_12_REG_RESVAL 0x0u
307
308// KMAC Secret Key, 2nd share.
309#define KMAC_KEY_SHARE1_13_REG_OFFSET 0xa4
310#define KMAC_KEY_SHARE1_13_REG_RESVAL 0x0u
311
312// KMAC Secret Key, 2nd share.
313#define KMAC_KEY_SHARE1_14_REG_OFFSET 0xa8
314#define KMAC_KEY_SHARE1_14_REG_RESVAL 0x0u
315
316// KMAC Secret Key, 2nd share.
317#define KMAC_KEY_SHARE1_15_REG_OFFSET 0xac
318#define KMAC_KEY_SHARE1_15_REG_RESVAL 0x0u
319
320// Secret Key length in bit.
321#define KMAC_KEY_LEN_REG_OFFSET 0xb0
322#define KMAC_KEY_LEN_REG_RESVAL 0x0u
323#define KMAC_KEY_LEN_LEN_MASK 0x7u
324#define KMAC_KEY_LEN_LEN_OFFSET 0
325#define KMAC_KEY_LEN_LEN_FIELD \
326 ((bitfield_field32_t) { .mask = KMAC_KEY_LEN_LEN_MASK, .index = KMAC_KEY_LEN_LEN_OFFSET })
327#define KMAC_KEY_LEN_LEN_VALUE_KEY128 0x0
328#define KMAC_KEY_LEN_LEN_VALUE_KEY192 0x1
329#define KMAC_KEY_LEN_LEN_VALUE_KEY256 0x2
330#define KMAC_KEY_LEN_LEN_VALUE_KEY384 0x3
331#define KMAC_KEY_LEN_LEN_VALUE_KEY512 0x4
332
333// cSHAKE Prefix register.
334#define KMAC_PREFIX_PREFIX_FIELD_WIDTH 32
335#define KMAC_PREFIX_MULTIREG_COUNT 11
336
337// cSHAKE Prefix register.
338#define KMAC_PREFIX_0_REG_OFFSET 0xb4
339#define KMAC_PREFIX_0_REG_RESVAL 0x0u
340
341// cSHAKE Prefix register.
342#define KMAC_PREFIX_1_REG_OFFSET 0xb8
343#define KMAC_PREFIX_1_REG_RESVAL 0x0u
344
345// cSHAKE Prefix register.
346#define KMAC_PREFIX_2_REG_OFFSET 0xbc
347#define KMAC_PREFIX_2_REG_RESVAL 0x0u
348
349// cSHAKE Prefix register.
350#define KMAC_PREFIX_3_REG_OFFSET 0xc0
351#define KMAC_PREFIX_3_REG_RESVAL 0x0u
352
353// cSHAKE Prefix register.
354#define KMAC_PREFIX_4_REG_OFFSET 0xc4
355#define KMAC_PREFIX_4_REG_RESVAL 0x0u
356
357// cSHAKE Prefix register.
358#define KMAC_PREFIX_5_REG_OFFSET 0xc8
359#define KMAC_PREFIX_5_REG_RESVAL 0x0u
360
361// cSHAKE Prefix register.
362#define KMAC_PREFIX_6_REG_OFFSET 0xcc
363#define KMAC_PREFIX_6_REG_RESVAL 0x0u
364
365// cSHAKE Prefix register.
366#define KMAC_PREFIX_7_REG_OFFSET 0xd0
367#define KMAC_PREFIX_7_REG_RESVAL 0x0u
368
369// cSHAKE Prefix register.
370#define KMAC_PREFIX_8_REG_OFFSET 0xd4
371#define KMAC_PREFIX_8_REG_RESVAL 0x0u
372
373// cSHAKE Prefix register.
374#define KMAC_PREFIX_9_REG_OFFSET 0xd8
375#define KMAC_PREFIX_9_REG_RESVAL 0x0u
376
377// cSHAKE Prefix register.
378#define KMAC_PREFIX_10_REG_OFFSET 0xdc
379#define KMAC_PREFIX_10_REG_RESVAL 0x0u
380
381// KMAC/SHA3 Error Code
382#define KMAC_ERR_CODE_REG_OFFSET 0xe0
383#define KMAC_ERR_CODE_REG_RESVAL 0x0u
384
385// Memory area: Keccak State (1600 bit) memory.
386#define KMAC_STATE_REG_OFFSET 0x400
387#define KMAC_STATE_SIZE_WORDS 128
388#define KMAC_STATE_SIZE_BYTES 512
389// Memory area: Message FIFO.
390#define KMAC_MSG_FIFO_REG_OFFSET 0x800
391#define KMAC_MSG_FIFO_SIZE_WORDS 512
392#define KMAC_MSG_FIFO_SIZE_BYTES 2048
393#ifdef __cplusplus
394} // extern "C"
395#endif
396#endif // _KMAC_REG_DEFS_
397// End generated register defines for kmac