Software APIs
aes_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for aes
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 _AES_REG_DEFS_
14#define _AES_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number registers for key
20#define AES_PARAM_NUM_REGS_KEY 8
21
22// Number registers for initialization vector
23#define AES_PARAM_NUM_REGS_IV 4
24
25// Number registers for input and output data
26#define AES_PARAM_NUM_REGS_DATA 4
27
28// Number of alerts
29#define AES_PARAM_NUM_ALERTS 2
30
31// Register width
32#define AES_PARAM_REG_WIDTH 32
33
34// Alert Test Register
35#define AES_ALERT_TEST_REG_OFFSET 0x0
36#define AES_ALERT_TEST_REG_RESVAL 0x80000000u
37#define AES_ALERT_TEST_RECOV_CTRL_UPDATE_ERR_BIT 0
38#define AES_ALERT_TEST_FATAL_FAULT_BIT 1
39#define AES_ALERT_TEST_REGWEN_BIT 31
40
41// Initial Key Registers Share 0.
42#define AES_KEY_SHARE0_KEY_SHARE0_FIELD_WIDTH 32
43#define AES_KEY_SHARE0_MULTIREG_COUNT 8
44
45// Initial Key Registers Share 0.
46#define AES_KEY_SHARE0_0_REG_OFFSET 0x4
47#define AES_KEY_SHARE0_0_REG_RESVAL 0x0u
48
49// Initial Key Registers Share 0.
50#define AES_KEY_SHARE0_1_REG_OFFSET 0x8
51#define AES_KEY_SHARE0_1_REG_RESVAL 0x0u
52
53// Initial Key Registers Share 0.
54#define AES_KEY_SHARE0_2_REG_OFFSET 0xc
55#define AES_KEY_SHARE0_2_REG_RESVAL 0x0u
56
57// Initial Key Registers Share 0.
58#define AES_KEY_SHARE0_3_REG_OFFSET 0x10
59#define AES_KEY_SHARE0_3_REG_RESVAL 0x0u
60
61// Initial Key Registers Share 0.
62#define AES_KEY_SHARE0_4_REG_OFFSET 0x14
63#define AES_KEY_SHARE0_4_REG_RESVAL 0x0u
64
65// Initial Key Registers Share 0.
66#define AES_KEY_SHARE0_5_REG_OFFSET 0x18
67#define AES_KEY_SHARE0_5_REG_RESVAL 0x0u
68
69// Initial Key Registers Share 0.
70#define AES_KEY_SHARE0_6_REG_OFFSET 0x1c
71#define AES_KEY_SHARE0_6_REG_RESVAL 0x0u
72
73// Initial Key Registers Share 0.
74#define AES_KEY_SHARE0_7_REG_OFFSET 0x20
75#define AES_KEY_SHARE0_7_REG_RESVAL 0x0u
76
77// Initial Key Registers Share 1.
78#define AES_KEY_SHARE1_KEY_SHARE1_FIELD_WIDTH 32
79#define AES_KEY_SHARE1_MULTIREG_COUNT 8
80
81// Initial Key Registers Share 1.
82#define AES_KEY_SHARE1_0_REG_OFFSET 0x24
83#define AES_KEY_SHARE1_0_REG_RESVAL 0x0u
84
85// Initial Key Registers Share 1.
86#define AES_KEY_SHARE1_1_REG_OFFSET 0x28
87#define AES_KEY_SHARE1_1_REG_RESVAL 0x0u
88
89// Initial Key Registers Share 1.
90#define AES_KEY_SHARE1_2_REG_OFFSET 0x2c
91#define AES_KEY_SHARE1_2_REG_RESVAL 0x0u
92
93// Initial Key Registers Share 1.
94#define AES_KEY_SHARE1_3_REG_OFFSET 0x30
95#define AES_KEY_SHARE1_3_REG_RESVAL 0x0u
96
97// Initial Key Registers Share 1.
98#define AES_KEY_SHARE1_4_REG_OFFSET 0x34
99#define AES_KEY_SHARE1_4_REG_RESVAL 0x0u
100
101// Initial Key Registers Share 1.
102#define AES_KEY_SHARE1_5_REG_OFFSET 0x38
103#define AES_KEY_SHARE1_5_REG_RESVAL 0x0u
104
105// Initial Key Registers Share 1.
106#define AES_KEY_SHARE1_6_REG_OFFSET 0x3c
107#define AES_KEY_SHARE1_6_REG_RESVAL 0x0u
108
109// Initial Key Registers Share 1.
110#define AES_KEY_SHARE1_7_REG_OFFSET 0x40
111#define AES_KEY_SHARE1_7_REG_RESVAL 0x0u
112
113// Initialization Vector Registers.
114#define AES_IV_IV_FIELD_WIDTH 32
115#define AES_IV_MULTIREG_COUNT 4
116
117// Initialization Vector Registers.
118#define AES_IV_0_REG_OFFSET 0x44
119#define AES_IV_0_REG_RESVAL 0x0u
120
121// Initialization Vector Registers.
122#define AES_IV_1_REG_OFFSET 0x48
123#define AES_IV_1_REG_RESVAL 0x0u
124
125// Initialization Vector Registers.
126#define AES_IV_2_REG_OFFSET 0x4c
127#define AES_IV_2_REG_RESVAL 0x0u
128
129// Initialization Vector Registers.
130#define AES_IV_3_REG_OFFSET 0x50
131#define AES_IV_3_REG_RESVAL 0x0u
132
133// Input Data Registers.
134#define AES_DATA_IN_DATA_IN_FIELD_WIDTH 32
135#define AES_DATA_IN_MULTIREG_COUNT 4
136
137// Input Data Registers.
138#define AES_DATA_IN_0_REG_OFFSET 0x54
139#define AES_DATA_IN_0_REG_RESVAL 0x0u
140
141// Input Data Registers.
142#define AES_DATA_IN_1_REG_OFFSET 0x58
143#define AES_DATA_IN_1_REG_RESVAL 0x0u
144
145// Input Data Registers.
146#define AES_DATA_IN_2_REG_OFFSET 0x5c
147#define AES_DATA_IN_2_REG_RESVAL 0x0u
148
149// Input Data Registers.
150#define AES_DATA_IN_3_REG_OFFSET 0x60
151#define AES_DATA_IN_3_REG_RESVAL 0x0u
152
153// Output Data Register.
154#define AES_DATA_OUT_DATA_OUT_FIELD_WIDTH 32
155#define AES_DATA_OUT_MULTIREG_COUNT 4
156
157// Output Data Register.
158#define AES_DATA_OUT_0_REG_OFFSET 0x64
159#define AES_DATA_OUT_0_REG_RESVAL 0x0u
160
161// Output Data Register.
162#define AES_DATA_OUT_1_REG_OFFSET 0x68
163#define AES_DATA_OUT_1_REG_RESVAL 0x0u
164
165// Output Data Register.
166#define AES_DATA_OUT_2_REG_OFFSET 0x6c
167#define AES_DATA_OUT_2_REG_RESVAL 0x0u
168
169// Output Data Register.
170#define AES_DATA_OUT_3_REG_OFFSET 0x70
171#define AES_DATA_OUT_3_REG_RESVAL 0x0u
172
173// Control Register.
174#define AES_CTRL_SHADOWED_REG_OFFSET 0x74
175#define AES_CTRL_SHADOWED_REG_RESVAL 0x11fdu
176#define AES_CTRL_SHADOWED_OPERATION_MASK 0x3u
177#define AES_CTRL_SHADOWED_OPERATION_OFFSET 0
178#define AES_CTRL_SHADOWED_OPERATION_FIELD \
179 ((bitfield_field32_t) { .mask = AES_CTRL_SHADOWED_OPERATION_MASK, .index = AES_CTRL_SHADOWED_OPERATION_OFFSET })
180#define AES_CTRL_SHADOWED_OPERATION_VALUE_AES_ENC 0x1
181#define AES_CTRL_SHADOWED_OPERATION_VALUE_AES_DEC 0x2
182#define AES_CTRL_SHADOWED_MODE_MASK 0x3fu
183#define AES_CTRL_SHADOWED_MODE_OFFSET 2
184#define AES_CTRL_SHADOWED_MODE_FIELD \
185 ((bitfield_field32_t) { .mask = AES_CTRL_SHADOWED_MODE_MASK, .index = AES_CTRL_SHADOWED_MODE_OFFSET })
186#define AES_CTRL_SHADOWED_MODE_VALUE_AES_ECB 0x1
187#define AES_CTRL_SHADOWED_MODE_VALUE_AES_CBC 0x2
188#define AES_CTRL_SHADOWED_MODE_VALUE_AES_CFB 0x4
189#define AES_CTRL_SHADOWED_MODE_VALUE_AES_OFB 0x8
190#define AES_CTRL_SHADOWED_MODE_VALUE_AES_CTR 0x10
191#define AES_CTRL_SHADOWED_MODE_VALUE_AES_GCM 0x20
192#define AES_CTRL_SHADOWED_MODE_VALUE_AES_NONE 0x3f
193#define AES_CTRL_SHADOWED_KEY_LEN_MASK 0x7u
194#define AES_CTRL_SHADOWED_KEY_LEN_OFFSET 8
195#define AES_CTRL_SHADOWED_KEY_LEN_FIELD \
196 ((bitfield_field32_t) { .mask = AES_CTRL_SHADOWED_KEY_LEN_MASK, .index = AES_CTRL_SHADOWED_KEY_LEN_OFFSET })
197#define AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_128 0x1
198#define AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_192 0x2
199#define AES_CTRL_SHADOWED_KEY_LEN_VALUE_AES_256 0x4
200#define AES_CTRL_SHADOWED_SIDELOAD_BIT 11
201#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_MASK 0x7u
202#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_OFFSET 12
203#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_FIELD \
204 ((bitfield_field32_t) { .mask = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_MASK, .index = AES_CTRL_SHADOWED_PRNG_RESEED_RATE_OFFSET })
205#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_1 0x1
206#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_64 0x2
207#define AES_CTRL_SHADOWED_PRNG_RESEED_RATE_VALUE_PER_8K 0x4
208#define AES_CTRL_SHADOWED_MANUAL_OPERATION_BIT 15
209
210// Auxiliary Control Register.
211#define AES_CTRL_AUX_SHADOWED_REG_OFFSET 0x78
212#define AES_CTRL_AUX_SHADOWED_REG_RESVAL 0x1u
213#define AES_CTRL_AUX_SHADOWED_KEY_TOUCH_FORCES_RESEED_BIT 0
214#define AES_CTRL_AUX_SHADOWED_FORCE_MASKS_BIT 1
215#define AES_CTRL_AUX_SHADOWED_KEEP_START_TRIGGER_HIGH_BIT 2
216
217// Lock bit for Auxiliary Control Register.
218#define AES_CTRL_AUX_REGWEN_REG_OFFSET 0x7c
219#define AES_CTRL_AUX_REGWEN_REG_RESVAL 0x1u
220#define AES_CTRL_AUX_REGWEN_CTRL_AUX_REGWEN_BIT 0
221
222// Trigger Register.
223#define AES_TRIGGER_REG_OFFSET 0x80
224#define AES_TRIGGER_REG_RESVAL 0xeu
225#define AES_TRIGGER_START_BIT 0
226#define AES_TRIGGER_KEY_IV_DATA_IN_CLEAR_BIT 1
227#define AES_TRIGGER_DATA_OUT_CLEAR_BIT 2
228#define AES_TRIGGER_PRNG_RESEED_BIT 3
229
230// Status Register
231#define AES_STATUS_REG_OFFSET 0x84
232#define AES_STATUS_REG_RESVAL 0x0u
233#define AES_STATUS_IDLE_BIT 0
234#define AES_STATUS_STALL_BIT 1
235#define AES_STATUS_OUTPUT_LOST_BIT 2
236#define AES_STATUS_OUTPUT_VALID_BIT 3
237#define AES_STATUS_INPUT_READY_BIT 4
238#define AES_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT 5
239#define AES_STATUS_ALERT_FATAL_FAULT_BIT 6
240
241// Galois/Counter Mode (GCM) Control Register.
242#define AES_CTRL_GCM_SHADOWED_REG_OFFSET 0x88
243#define AES_CTRL_GCM_SHADOWED_REG_RESVAL 0x401u
244#define AES_CTRL_GCM_SHADOWED_PHASE_MASK 0x3fu
245#define AES_CTRL_GCM_SHADOWED_PHASE_OFFSET 0
246#define AES_CTRL_GCM_SHADOWED_PHASE_FIELD \
247 ((bitfield_field32_t) { .mask = AES_CTRL_GCM_SHADOWED_PHASE_MASK, .index = AES_CTRL_GCM_SHADOWED_PHASE_OFFSET })
248#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_INIT 0x1
249#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_RESTORE 0x2
250#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_AAD 0x4
251#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_TEXT 0x8
252#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_SAVE 0x10
253#define AES_CTRL_GCM_SHADOWED_PHASE_VALUE_GCM_TAG 0x20
254#define AES_CTRL_GCM_SHADOWED_NUM_VALID_BYTES_MASK 0x1fu
255#define AES_CTRL_GCM_SHADOWED_NUM_VALID_BYTES_OFFSET 6
256#define AES_CTRL_GCM_SHADOWED_NUM_VALID_BYTES_FIELD \
257 ((bitfield_field32_t) { .mask = AES_CTRL_GCM_SHADOWED_NUM_VALID_BYTES_MASK, .index = AES_CTRL_GCM_SHADOWED_NUM_VALID_BYTES_OFFSET })
258
259#ifdef __cplusplus
260} // extern "C"
261#endif
262#endif // _AES_REG_DEFS_
263// End generated register defines for aes