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 0x0u
73#define KMAC_ALERT_TEST_RECOV_OPERATION_ERR_BIT 0
74#define KMAC_ALERT_TEST_FATAL_FAULT_ERR_BIT 1
75
76// Controls the configurability of !!CFG_SHADOWED register.
77#define KMAC_CFG_REGWEN_REG_OFFSET 0x10
78#define KMAC_CFG_REGWEN_REG_RESVAL 0x1u
79#define KMAC_CFG_REGWEN_EN_BIT 0
80
81// KMAC Configuration register.
82#define KMAC_CFG_SHADOWED_REG_OFFSET 0x14
83#define KMAC_CFG_SHADOWED_REG_RESVAL 0x0u
84#define KMAC_CFG_SHADOWED_KMAC_EN_BIT 0
85#define KMAC_CFG_SHADOWED_KSTRENGTH_MASK 0x7u
86#define KMAC_CFG_SHADOWED_KSTRENGTH_OFFSET 1
87#define KMAC_CFG_SHADOWED_KSTRENGTH_FIELD \
88 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_KSTRENGTH_MASK, .index = KMAC_CFG_SHADOWED_KSTRENGTH_OFFSET })
89#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L128 0x0
90#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L224 0x1
91#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L256 0x2
92#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L384 0x3
93#define KMAC_CFG_SHADOWED_KSTRENGTH_VALUE_L512 0x4
94#define KMAC_CFG_SHADOWED_MODE_MASK 0x3u
95#define KMAC_CFG_SHADOWED_MODE_OFFSET 4
96#define KMAC_CFG_SHADOWED_MODE_FIELD \
97 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_MODE_MASK, .index = KMAC_CFG_SHADOWED_MODE_OFFSET })
98#define KMAC_CFG_SHADOWED_MODE_VALUE_SHA3 0x0
99#define KMAC_CFG_SHADOWED_MODE_VALUE_SHAKE 0x2
100#define KMAC_CFG_SHADOWED_MODE_VALUE_CSHAKE 0x3
101#define KMAC_CFG_SHADOWED_MSG_ENDIANNESS_BIT 8
102#define KMAC_CFG_SHADOWED_STATE_ENDIANNESS_BIT 9
103#define KMAC_CFG_SHADOWED_SIDELOAD_BIT 12
104#define KMAC_CFG_SHADOWED_ENTROPY_MODE_MASK 0x3u
105#define KMAC_CFG_SHADOWED_ENTROPY_MODE_OFFSET 16
106#define KMAC_CFG_SHADOWED_ENTROPY_MODE_FIELD \
107 ((bitfield_field32_t) { .mask = KMAC_CFG_SHADOWED_ENTROPY_MODE_MASK, .index = KMAC_CFG_SHADOWED_ENTROPY_MODE_OFFSET })
108#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_IDLE_MODE 0x0
109#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_EDN_MODE 0x1
110#define KMAC_CFG_SHADOWED_ENTROPY_MODE_VALUE_SW_MODE 0x2
111#define KMAC_CFG_SHADOWED_ENTROPY_FAST_PROCESS_BIT 19
112#define KMAC_CFG_SHADOWED_MSG_MASK_BIT 20
113#define KMAC_CFG_SHADOWED_ENTROPY_READY_BIT 24
114#define KMAC_CFG_SHADOWED_EN_UNSUPPORTED_MODESTRENGTH_BIT 26
115
116// KMAC/ SHA3 command register.
117#define KMAC_CMD_REG_OFFSET 0x18
118#define KMAC_CMD_REG_RESVAL 0x0u
119#define KMAC_CMD_CMD_MASK 0x3fu
120#define KMAC_CMD_CMD_OFFSET 0
121#define KMAC_CMD_CMD_FIELD \
122 ((bitfield_field32_t) { .mask = KMAC_CMD_CMD_MASK, .index = KMAC_CMD_CMD_OFFSET })
123#define KMAC_CMD_CMD_VALUE_START 0x1d
124#define KMAC_CMD_CMD_VALUE_PROCESS 0x2e
125#define KMAC_CMD_CMD_VALUE_RUN 0x31
126#define KMAC_CMD_CMD_VALUE_DONE 0x16
127#define KMAC_CMD_ENTROPY_REQ_BIT 8
128#define KMAC_CMD_HASH_CNT_CLR_BIT 9
129#define KMAC_CMD_ERR_PROCESSED_BIT 10
130
131// KMAC/SHA3 Status register.
132#define KMAC_STATUS_REG_OFFSET 0x1c
133#define KMAC_STATUS_REG_RESVAL 0x4001u
134#define KMAC_STATUS_SHA3_IDLE_BIT 0
135#define KMAC_STATUS_SHA3_ABSORB_BIT 1
136#define KMAC_STATUS_SHA3_SQUEEZE_BIT 2
137#define KMAC_STATUS_FIFO_DEPTH_MASK 0x1fu
138#define KMAC_STATUS_FIFO_DEPTH_OFFSET 8
139#define KMAC_STATUS_FIFO_DEPTH_FIELD \
140 ((bitfield_field32_t) { .mask = KMAC_STATUS_FIFO_DEPTH_MASK, .index = KMAC_STATUS_FIFO_DEPTH_OFFSET })
141#define KMAC_STATUS_FIFO_EMPTY_BIT 14
142#define KMAC_STATUS_FIFO_FULL_BIT 15
143#define KMAC_STATUS_ALERT_FATAL_FAULT_BIT 16
144#define KMAC_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT 17
145
146// Entropy Timer Periods.
147#define KMAC_ENTROPY_PERIOD_REG_OFFSET 0x20
148#define KMAC_ENTROPY_PERIOD_REG_RESVAL 0x0u
149#define KMAC_ENTROPY_PERIOD_PRESCALER_MASK 0x3ffu
150#define KMAC_ENTROPY_PERIOD_PRESCALER_OFFSET 0
151#define KMAC_ENTROPY_PERIOD_PRESCALER_FIELD \
152 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_PERIOD_PRESCALER_MASK, .index = KMAC_ENTROPY_PERIOD_PRESCALER_OFFSET })
153#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_MASK 0xffffu
154#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_OFFSET 16
155#define KMAC_ENTROPY_PERIOD_WAIT_TIMER_FIELD \
156 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_PERIOD_WAIT_TIMER_MASK, .index = KMAC_ENTROPY_PERIOD_WAIT_TIMER_OFFSET })
157
158// Entropy Refresh Counter
159#define KMAC_ENTROPY_REFRESH_HASH_CNT_REG_OFFSET 0x24
160#define KMAC_ENTROPY_REFRESH_HASH_CNT_REG_RESVAL 0x0u
161#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_MASK 0x3ffu
162#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_OFFSET 0
163#define KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_FIELD \
164 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_MASK, .index = KMAC_ENTROPY_REFRESH_HASH_CNT_HASH_CNT_OFFSET })
165
166// Entropy Refresh Threshold
167#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_REG_OFFSET 0x28
168#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_REG_RESVAL 0x0u
169#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_MASK 0x3ffu
170#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_OFFSET 0
171#define KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_FIELD \
172 ((bitfield_field32_t) { .mask = KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_MASK, .index = KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_THRESHOLD_OFFSET })
173
174// Entropy Seed
175#define KMAC_ENTROPY_SEED_REG_OFFSET 0x2c
176#define KMAC_ENTROPY_SEED_REG_RESVAL 0x0u
177
178// KMAC Secret Key
179#define KMAC_KEY_SHARE0_KEY_FIELD_WIDTH 32
180#define KMAC_KEY_SHARE0_MULTIREG_COUNT 16
181
182// KMAC Secret Key
183#define KMAC_KEY_SHARE0_0_REG_OFFSET 0x30
184#define KMAC_KEY_SHARE0_0_REG_RESVAL 0x0u
185
186// KMAC Secret Key
187#define KMAC_KEY_SHARE0_1_REG_OFFSET 0x34
188#define KMAC_KEY_SHARE0_1_REG_RESVAL 0x0u
189
190// KMAC Secret Key
191#define KMAC_KEY_SHARE0_2_REG_OFFSET 0x38
192#define KMAC_KEY_SHARE0_2_REG_RESVAL 0x0u
193
194// KMAC Secret Key
195#define KMAC_KEY_SHARE0_3_REG_OFFSET 0x3c
196#define KMAC_KEY_SHARE0_3_REG_RESVAL 0x0u
197
198// KMAC Secret Key
199#define KMAC_KEY_SHARE0_4_REG_OFFSET 0x40
200#define KMAC_KEY_SHARE0_4_REG_RESVAL 0x0u
201
202// KMAC Secret Key
203#define KMAC_KEY_SHARE0_5_REG_OFFSET 0x44
204#define KMAC_KEY_SHARE0_5_REG_RESVAL 0x0u
205
206// KMAC Secret Key
207#define KMAC_KEY_SHARE0_6_REG_OFFSET 0x48
208#define KMAC_KEY_SHARE0_6_REG_RESVAL 0x0u
209
210// KMAC Secret Key
211#define KMAC_KEY_SHARE0_7_REG_OFFSET 0x4c
212#define KMAC_KEY_SHARE0_7_REG_RESVAL 0x0u
213
214// KMAC Secret Key
215#define KMAC_KEY_SHARE0_8_REG_OFFSET 0x50
216#define KMAC_KEY_SHARE0_8_REG_RESVAL 0x0u
217
218// KMAC Secret Key
219#define KMAC_KEY_SHARE0_9_REG_OFFSET 0x54
220#define KMAC_KEY_SHARE0_9_REG_RESVAL 0x0u
221
222// KMAC Secret Key
223#define KMAC_KEY_SHARE0_10_REG_OFFSET 0x58
224#define KMAC_KEY_SHARE0_10_REG_RESVAL 0x0u
225
226// KMAC Secret Key
227#define KMAC_KEY_SHARE0_11_REG_OFFSET 0x5c
228#define KMAC_KEY_SHARE0_11_REG_RESVAL 0x0u
229
230// KMAC Secret Key
231#define KMAC_KEY_SHARE0_12_REG_OFFSET 0x60
232#define KMAC_KEY_SHARE0_12_REG_RESVAL 0x0u
233
234// KMAC Secret Key
235#define KMAC_KEY_SHARE0_13_REG_OFFSET 0x64
236#define KMAC_KEY_SHARE0_13_REG_RESVAL 0x0u
237
238// KMAC Secret Key
239#define KMAC_KEY_SHARE0_14_REG_OFFSET 0x68
240#define KMAC_KEY_SHARE0_14_REG_RESVAL 0x0u
241
242// KMAC Secret Key
243#define KMAC_KEY_SHARE0_15_REG_OFFSET 0x6c
244#define KMAC_KEY_SHARE0_15_REG_RESVAL 0x0u
245
246// KMAC Secret Key, 2nd share.
247#define KMAC_KEY_SHARE1_KEY_FIELD_WIDTH 32
248#define KMAC_KEY_SHARE1_MULTIREG_COUNT 16
249
250// KMAC Secret Key, 2nd share.
251#define KMAC_KEY_SHARE1_0_REG_OFFSET 0x70
252#define KMAC_KEY_SHARE1_0_REG_RESVAL 0x0u
253
254// KMAC Secret Key, 2nd share.
255#define KMAC_KEY_SHARE1_1_REG_OFFSET 0x74
256#define KMAC_KEY_SHARE1_1_REG_RESVAL 0x0u
257
258// KMAC Secret Key, 2nd share.
259#define KMAC_KEY_SHARE1_2_REG_OFFSET 0x78
260#define KMAC_KEY_SHARE1_2_REG_RESVAL 0x0u
261
262// KMAC Secret Key, 2nd share.
263#define KMAC_KEY_SHARE1_3_REG_OFFSET 0x7c
264#define KMAC_KEY_SHARE1_3_REG_RESVAL 0x0u
265
266// KMAC Secret Key, 2nd share.
267#define KMAC_KEY_SHARE1_4_REG_OFFSET 0x80
268#define KMAC_KEY_SHARE1_4_REG_RESVAL 0x0u
269
270// KMAC Secret Key, 2nd share.
271#define KMAC_KEY_SHARE1_5_REG_OFFSET 0x84
272#define KMAC_KEY_SHARE1_5_REG_RESVAL 0x0u
273
274// KMAC Secret Key, 2nd share.
275#define KMAC_KEY_SHARE1_6_REG_OFFSET 0x88
276#define KMAC_KEY_SHARE1_6_REG_RESVAL 0x0u
277
278// KMAC Secret Key, 2nd share.
279#define KMAC_KEY_SHARE1_7_REG_OFFSET 0x8c
280#define KMAC_KEY_SHARE1_7_REG_RESVAL 0x0u
281
282// KMAC Secret Key, 2nd share.
283#define KMAC_KEY_SHARE1_8_REG_OFFSET 0x90
284#define KMAC_KEY_SHARE1_8_REG_RESVAL 0x0u
285
286// KMAC Secret Key, 2nd share.
287#define KMAC_KEY_SHARE1_9_REG_OFFSET 0x94
288#define KMAC_KEY_SHARE1_9_REG_RESVAL 0x0u
289
290// KMAC Secret Key, 2nd share.
291#define KMAC_KEY_SHARE1_10_REG_OFFSET 0x98
292#define KMAC_KEY_SHARE1_10_REG_RESVAL 0x0u
293
294// KMAC Secret Key, 2nd share.
295#define KMAC_KEY_SHARE1_11_REG_OFFSET 0x9c
296#define KMAC_KEY_SHARE1_11_REG_RESVAL 0x0u
297
298// KMAC Secret Key, 2nd share.
299#define KMAC_KEY_SHARE1_12_REG_OFFSET 0xa0
300#define KMAC_KEY_SHARE1_12_REG_RESVAL 0x0u
301
302// KMAC Secret Key, 2nd share.
303#define KMAC_KEY_SHARE1_13_REG_OFFSET 0xa4
304#define KMAC_KEY_SHARE1_13_REG_RESVAL 0x0u
305
306// KMAC Secret Key, 2nd share.
307#define KMAC_KEY_SHARE1_14_REG_OFFSET 0xa8
308#define KMAC_KEY_SHARE1_14_REG_RESVAL 0x0u
309
310// KMAC Secret Key, 2nd share.
311#define KMAC_KEY_SHARE1_15_REG_OFFSET 0xac
312#define KMAC_KEY_SHARE1_15_REG_RESVAL 0x0u
313
314// Secret Key length in bit.
315#define KMAC_KEY_LEN_REG_OFFSET 0xb0
316#define KMAC_KEY_LEN_REG_RESVAL 0x0u
317#define KMAC_KEY_LEN_LEN_MASK 0x7u
318#define KMAC_KEY_LEN_LEN_OFFSET 0
319#define KMAC_KEY_LEN_LEN_FIELD \
320 ((bitfield_field32_t) { .mask = KMAC_KEY_LEN_LEN_MASK, .index = KMAC_KEY_LEN_LEN_OFFSET })
321#define KMAC_KEY_LEN_LEN_VALUE_KEY128 0x0
322#define KMAC_KEY_LEN_LEN_VALUE_KEY192 0x1
323#define KMAC_KEY_LEN_LEN_VALUE_KEY256 0x2
324#define KMAC_KEY_LEN_LEN_VALUE_KEY384 0x3
325#define KMAC_KEY_LEN_LEN_VALUE_KEY512 0x4
326
327// cSHAKE Prefix register.
328#define KMAC_PREFIX_PREFIX_FIELD_WIDTH 32
329#define KMAC_PREFIX_MULTIREG_COUNT 11
330
331// cSHAKE Prefix register.
332#define KMAC_PREFIX_0_REG_OFFSET 0xb4
333#define KMAC_PREFIX_0_REG_RESVAL 0x0u
334
335// cSHAKE Prefix register.
336#define KMAC_PREFIX_1_REG_OFFSET 0xb8
337#define KMAC_PREFIX_1_REG_RESVAL 0x0u
338
339// cSHAKE Prefix register.
340#define KMAC_PREFIX_2_REG_OFFSET 0xbc
341#define KMAC_PREFIX_2_REG_RESVAL 0x0u
342
343// cSHAKE Prefix register.
344#define KMAC_PREFIX_3_REG_OFFSET 0xc0
345#define KMAC_PREFIX_3_REG_RESVAL 0x0u
346
347// cSHAKE Prefix register.
348#define KMAC_PREFIX_4_REG_OFFSET 0xc4
349#define KMAC_PREFIX_4_REG_RESVAL 0x0u
350
351// cSHAKE Prefix register.
352#define KMAC_PREFIX_5_REG_OFFSET 0xc8
353#define KMAC_PREFIX_5_REG_RESVAL 0x0u
354
355// cSHAKE Prefix register.
356#define KMAC_PREFIX_6_REG_OFFSET 0xcc
357#define KMAC_PREFIX_6_REG_RESVAL 0x0u
358
359// cSHAKE Prefix register.
360#define KMAC_PREFIX_7_REG_OFFSET 0xd0
361#define KMAC_PREFIX_7_REG_RESVAL 0x0u
362
363// cSHAKE Prefix register.
364#define KMAC_PREFIX_8_REG_OFFSET 0xd4
365#define KMAC_PREFIX_8_REG_RESVAL 0x0u
366
367// cSHAKE Prefix register.
368#define KMAC_PREFIX_9_REG_OFFSET 0xd8
369#define KMAC_PREFIX_9_REG_RESVAL 0x0u
370
371// cSHAKE Prefix register.
372#define KMAC_PREFIX_10_REG_OFFSET 0xdc
373#define KMAC_PREFIX_10_REG_RESVAL 0x0u
374
375// KMAC/SHA3 Error Code
376#define KMAC_ERR_CODE_REG_OFFSET 0xe0
377#define KMAC_ERR_CODE_REG_RESVAL 0x0u
378
379// Memory area: Keccak State (1600 bit) memory.
380#define KMAC_STATE_REG_OFFSET 0x400
381#define KMAC_STATE_SIZE_WORDS 128
382#define KMAC_STATE_SIZE_BYTES 512
383// Memory area: Message FIFO.
384#define KMAC_MSG_FIFO_REG_OFFSET 0x800
385#define KMAC_MSG_FIFO_SIZE_WORDS 512
386#define KMAC_MSG_FIFO_SIZE_BYTES 2048
387#ifdef __cplusplus
388} // extern "C"
389#endif
390#endif // _KMAC_REG_DEFS_
391// End generated register defines for kmac