Software APIs
hmac_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for hmac
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 _HMAC_REG_DEFS_
14#define _HMAC_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of words for digest
20#define HMAC_PARAM_NUM_DIGEST_WORDS 16
21
22// Number of words for key
23#define HMAC_PARAM_NUM_KEY_WORDS 32
24
25// Number of alerts
26#define HMAC_PARAM_NUM_ALERTS 1
27
28// Register width
29#define HMAC_PARAM_REG_WIDTH 32
30
31// Common Interrupt Offsets
32#define HMAC_INTR_COMMON_HMAC_DONE_BIT 0
33#define HMAC_INTR_COMMON_FIFO_EMPTY_BIT 1
34#define HMAC_INTR_COMMON_HMAC_ERR_BIT 2
35
36// Interrupt State Register
37#define HMAC_INTR_STATE_REG_OFFSET 0x0
38#define HMAC_INTR_STATE_REG_RESVAL 0x0u
39#define HMAC_INTR_STATE_HMAC_DONE_BIT 0
40#define HMAC_INTR_STATE_FIFO_EMPTY_BIT 1
41#define HMAC_INTR_STATE_HMAC_ERR_BIT 2
42
43// Interrupt Enable Register
44#define HMAC_INTR_ENABLE_REG_OFFSET 0x4
45#define HMAC_INTR_ENABLE_REG_RESVAL 0x0u
46#define HMAC_INTR_ENABLE_HMAC_DONE_BIT 0
47#define HMAC_INTR_ENABLE_FIFO_EMPTY_BIT 1
48#define HMAC_INTR_ENABLE_HMAC_ERR_BIT 2
49
50// Interrupt Test Register
51#define HMAC_INTR_TEST_REG_OFFSET 0x8
52#define HMAC_INTR_TEST_REG_RESVAL 0x0u
53#define HMAC_INTR_TEST_HMAC_DONE_BIT 0
54#define HMAC_INTR_TEST_FIFO_EMPTY_BIT 1
55#define HMAC_INTR_TEST_HMAC_ERR_BIT 2
56
57// Alert Test Register
58#define HMAC_ALERT_TEST_REG_OFFSET 0xc
59#define HMAC_ALERT_TEST_REG_RESVAL 0x0u
60#define HMAC_ALERT_TEST_FATAL_FAULT_BIT 0
61
62// HMAC Configuration register.
63#define HMAC_CFG_REG_OFFSET 0x10
64#define HMAC_CFG_REG_RESVAL 0x4100u
65#define HMAC_CFG_HMAC_EN_BIT 0
66#define HMAC_CFG_SHA_EN_BIT 1
67#define HMAC_CFG_ENDIAN_SWAP_BIT 2
68#define HMAC_CFG_DIGEST_SWAP_BIT 3
69#define HMAC_CFG_KEY_SWAP_BIT 4
70#define HMAC_CFG_DIGEST_SIZE_MASK 0xfu
71#define HMAC_CFG_DIGEST_SIZE_OFFSET 5
72#define HMAC_CFG_DIGEST_SIZE_FIELD \
73 ((bitfield_field32_t) { .mask = HMAC_CFG_DIGEST_SIZE_MASK, .index = HMAC_CFG_DIGEST_SIZE_OFFSET })
74#define HMAC_CFG_DIGEST_SIZE_VALUE_SHA2_256 0x1
75#define HMAC_CFG_DIGEST_SIZE_VALUE_SHA2_384 0x2
76#define HMAC_CFG_DIGEST_SIZE_VALUE_SHA2_512 0x4
77#define HMAC_CFG_DIGEST_SIZE_VALUE_SHA2_NONE 0x8
78#define HMAC_CFG_KEY_LENGTH_MASK 0x3fu
79#define HMAC_CFG_KEY_LENGTH_OFFSET 9
80#define HMAC_CFG_KEY_LENGTH_FIELD \
81 ((bitfield_field32_t) { .mask = HMAC_CFG_KEY_LENGTH_MASK, .index = HMAC_CFG_KEY_LENGTH_OFFSET })
82#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_128 0x1
83#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_256 0x2
84#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_384 0x4
85#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_512 0x8
86#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_1024 0x10
87#define HMAC_CFG_KEY_LENGTH_VALUE_KEY_NONE 0x20
88
89// HMAC command register
90#define HMAC_CMD_REG_OFFSET 0x14
91#define HMAC_CMD_REG_RESVAL 0x0u
92#define HMAC_CMD_HASH_START_BIT 0
93#define HMAC_CMD_HASH_PROCESS_BIT 1
94#define HMAC_CMD_HASH_STOP_BIT 2
95#define HMAC_CMD_HASH_CONTINUE_BIT 3
96
97// HMAC Status register
98#define HMAC_STATUS_REG_OFFSET 0x18
99#define HMAC_STATUS_REG_RESVAL 0x3u
100#define HMAC_STATUS_HMAC_IDLE_BIT 0
101#define HMAC_STATUS_FIFO_EMPTY_BIT 1
102#define HMAC_STATUS_FIFO_FULL_BIT 2
103#define HMAC_STATUS_FIFO_DEPTH_MASK 0x3fu
104#define HMAC_STATUS_FIFO_DEPTH_OFFSET 4
105#define HMAC_STATUS_FIFO_DEPTH_FIELD \
106 ((bitfield_field32_t) { .mask = HMAC_STATUS_FIFO_DEPTH_MASK, .index = HMAC_STATUS_FIFO_DEPTH_OFFSET })
107
108// HMAC Error Code
109#define HMAC_ERR_CODE_REG_OFFSET 0x1c
110#define HMAC_ERR_CODE_REG_RESVAL 0x0u
111
112// Clear internal secret registers.
113#define HMAC_WIPE_SECRET_REG_OFFSET 0x20
114#define HMAC_WIPE_SECRET_REG_RESVAL 0x0u
115
116// HMAC Secret Key
117#define HMAC_KEY_KEY_FIELD_WIDTH 32
118#define HMAC_KEY_MULTIREG_COUNT 32
119
120// HMAC Secret Key
121#define HMAC_KEY_0_REG_OFFSET 0x24
122#define HMAC_KEY_0_REG_RESVAL 0x0u
123
124// HMAC Secret Key
125#define HMAC_KEY_1_REG_OFFSET 0x28
126#define HMAC_KEY_1_REG_RESVAL 0x0u
127
128// HMAC Secret Key
129#define HMAC_KEY_2_REG_OFFSET 0x2c
130#define HMAC_KEY_2_REG_RESVAL 0x0u
131
132// HMAC Secret Key
133#define HMAC_KEY_3_REG_OFFSET 0x30
134#define HMAC_KEY_3_REG_RESVAL 0x0u
135
136// HMAC Secret Key
137#define HMAC_KEY_4_REG_OFFSET 0x34
138#define HMAC_KEY_4_REG_RESVAL 0x0u
139
140// HMAC Secret Key
141#define HMAC_KEY_5_REG_OFFSET 0x38
142#define HMAC_KEY_5_REG_RESVAL 0x0u
143
144// HMAC Secret Key
145#define HMAC_KEY_6_REG_OFFSET 0x3c
146#define HMAC_KEY_6_REG_RESVAL 0x0u
147
148// HMAC Secret Key
149#define HMAC_KEY_7_REG_OFFSET 0x40
150#define HMAC_KEY_7_REG_RESVAL 0x0u
151
152// HMAC Secret Key
153#define HMAC_KEY_8_REG_OFFSET 0x44
154#define HMAC_KEY_8_REG_RESVAL 0x0u
155
156// HMAC Secret Key
157#define HMAC_KEY_9_REG_OFFSET 0x48
158#define HMAC_KEY_9_REG_RESVAL 0x0u
159
160// HMAC Secret Key
161#define HMAC_KEY_10_REG_OFFSET 0x4c
162#define HMAC_KEY_10_REG_RESVAL 0x0u
163
164// HMAC Secret Key
165#define HMAC_KEY_11_REG_OFFSET 0x50
166#define HMAC_KEY_11_REG_RESVAL 0x0u
167
168// HMAC Secret Key
169#define HMAC_KEY_12_REG_OFFSET 0x54
170#define HMAC_KEY_12_REG_RESVAL 0x0u
171
172// HMAC Secret Key
173#define HMAC_KEY_13_REG_OFFSET 0x58
174#define HMAC_KEY_13_REG_RESVAL 0x0u
175
176// HMAC Secret Key
177#define HMAC_KEY_14_REG_OFFSET 0x5c
178#define HMAC_KEY_14_REG_RESVAL 0x0u
179
180// HMAC Secret Key
181#define HMAC_KEY_15_REG_OFFSET 0x60
182#define HMAC_KEY_15_REG_RESVAL 0x0u
183
184// HMAC Secret Key
185#define HMAC_KEY_16_REG_OFFSET 0x64
186#define HMAC_KEY_16_REG_RESVAL 0x0u
187
188// HMAC Secret Key
189#define HMAC_KEY_17_REG_OFFSET 0x68
190#define HMAC_KEY_17_REG_RESVAL 0x0u
191
192// HMAC Secret Key
193#define HMAC_KEY_18_REG_OFFSET 0x6c
194#define HMAC_KEY_18_REG_RESVAL 0x0u
195
196// HMAC Secret Key
197#define HMAC_KEY_19_REG_OFFSET 0x70
198#define HMAC_KEY_19_REG_RESVAL 0x0u
199
200// HMAC Secret Key
201#define HMAC_KEY_20_REG_OFFSET 0x74
202#define HMAC_KEY_20_REG_RESVAL 0x0u
203
204// HMAC Secret Key
205#define HMAC_KEY_21_REG_OFFSET 0x78
206#define HMAC_KEY_21_REG_RESVAL 0x0u
207
208// HMAC Secret Key
209#define HMAC_KEY_22_REG_OFFSET 0x7c
210#define HMAC_KEY_22_REG_RESVAL 0x0u
211
212// HMAC Secret Key
213#define HMAC_KEY_23_REG_OFFSET 0x80
214#define HMAC_KEY_23_REG_RESVAL 0x0u
215
216// HMAC Secret Key
217#define HMAC_KEY_24_REG_OFFSET 0x84
218#define HMAC_KEY_24_REG_RESVAL 0x0u
219
220// HMAC Secret Key
221#define HMAC_KEY_25_REG_OFFSET 0x88
222#define HMAC_KEY_25_REG_RESVAL 0x0u
223
224// HMAC Secret Key
225#define HMAC_KEY_26_REG_OFFSET 0x8c
226#define HMAC_KEY_26_REG_RESVAL 0x0u
227
228// HMAC Secret Key
229#define HMAC_KEY_27_REG_OFFSET 0x90
230#define HMAC_KEY_27_REG_RESVAL 0x0u
231
232// HMAC Secret Key
233#define HMAC_KEY_28_REG_OFFSET 0x94
234#define HMAC_KEY_28_REG_RESVAL 0x0u
235
236// HMAC Secret Key
237#define HMAC_KEY_29_REG_OFFSET 0x98
238#define HMAC_KEY_29_REG_RESVAL 0x0u
239
240// HMAC Secret Key
241#define HMAC_KEY_30_REG_OFFSET 0x9c
242#define HMAC_KEY_30_REG_RESVAL 0x0u
243
244// HMAC Secret Key
245#define HMAC_KEY_31_REG_OFFSET 0xa0
246#define HMAC_KEY_31_REG_RESVAL 0x0u
247
248// Digest output.
249#define HMAC_DIGEST_DIGEST_FIELD_WIDTH 32
250#define HMAC_DIGEST_MULTIREG_COUNT 16
251
252// Digest output.
253#define HMAC_DIGEST_0_REG_OFFSET 0xa4
254#define HMAC_DIGEST_0_REG_RESVAL 0x0u
255
256// Digest output.
257#define HMAC_DIGEST_1_REG_OFFSET 0xa8
258#define HMAC_DIGEST_1_REG_RESVAL 0x0u
259
260// Digest output.
261#define HMAC_DIGEST_2_REG_OFFSET 0xac
262#define HMAC_DIGEST_2_REG_RESVAL 0x0u
263
264// Digest output.
265#define HMAC_DIGEST_3_REG_OFFSET 0xb0
266#define HMAC_DIGEST_3_REG_RESVAL 0x0u
267
268// Digest output.
269#define HMAC_DIGEST_4_REG_OFFSET 0xb4
270#define HMAC_DIGEST_4_REG_RESVAL 0x0u
271
272// Digest output.
273#define HMAC_DIGEST_5_REG_OFFSET 0xb8
274#define HMAC_DIGEST_5_REG_RESVAL 0x0u
275
276// Digest output.
277#define HMAC_DIGEST_6_REG_OFFSET 0xbc
278#define HMAC_DIGEST_6_REG_RESVAL 0x0u
279
280// Digest output.
281#define HMAC_DIGEST_7_REG_OFFSET 0xc0
282#define HMAC_DIGEST_7_REG_RESVAL 0x0u
283
284// Digest output.
285#define HMAC_DIGEST_8_REG_OFFSET 0xc4
286#define HMAC_DIGEST_8_REG_RESVAL 0x0u
287
288// Digest output.
289#define HMAC_DIGEST_9_REG_OFFSET 0xc8
290#define HMAC_DIGEST_9_REG_RESVAL 0x0u
291
292// Digest output.
293#define HMAC_DIGEST_10_REG_OFFSET 0xcc
294#define HMAC_DIGEST_10_REG_RESVAL 0x0u
295
296// Digest output.
297#define HMAC_DIGEST_11_REG_OFFSET 0xd0
298#define HMAC_DIGEST_11_REG_RESVAL 0x0u
299
300// Digest output.
301#define HMAC_DIGEST_12_REG_OFFSET 0xd4
302#define HMAC_DIGEST_12_REG_RESVAL 0x0u
303
304// Digest output.
305#define HMAC_DIGEST_13_REG_OFFSET 0xd8
306#define HMAC_DIGEST_13_REG_RESVAL 0x0u
307
308// Digest output.
309#define HMAC_DIGEST_14_REG_OFFSET 0xdc
310#define HMAC_DIGEST_14_REG_RESVAL 0x0u
311
312// Digest output.
313#define HMAC_DIGEST_15_REG_OFFSET 0xe0
314#define HMAC_DIGEST_15_REG_RESVAL 0x0u
315
316// Received Message Length calculated by the HMAC in bits [31:0]
317#define HMAC_MSG_LENGTH_LOWER_REG_OFFSET 0xe4
318#define HMAC_MSG_LENGTH_LOWER_REG_RESVAL 0x0u
319
320// Received Message Length calculated by the HMAC in bits [63:32]
321#define HMAC_MSG_LENGTH_UPPER_REG_OFFSET 0xe8
322#define HMAC_MSG_LENGTH_UPPER_REG_RESVAL 0x0u
323
324// Memory area: Message FIFO. Any write to this window will be appended to
325// the FIFO.
326#define HMAC_MSG_FIFO_REG_OFFSET 0x1000
327#define HMAC_MSG_FIFO_SIZE_WORDS 1024
328#define HMAC_MSG_FIFO_SIZE_BYTES 4096
329#ifdef __cplusplus
330} // extern "C"
331#endif
332#endif // _HMAC_REG_DEFS_
333// End generated register defines for hmac