1 /**
2  * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
3  *
4  *  SPDX-License-Identifier: Apache-2.0
5  */
6 #pragma once
7 
8 #include <stdint.h>
9 #include "soc/soc.h"
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 /** AES_KEY_0_REG register
15  *  Key material key_0 configure register
16  */
17 #define AES_KEY_0_REG (DR_REG_AES_BASE + 0x0)
18 /** AES_KEY_0 : R/W; bitpos: [31:0]; default: 0;
19  *  This bits stores key_0 that is a part of key material.
20  */
21 #define AES_KEY_0    0xFFFFFFFFU
22 #define AES_KEY_0_M  (AES_KEY_0_V << AES_KEY_0_S)
23 #define AES_KEY_0_V  0xFFFFFFFFU
24 #define AES_KEY_0_S  0
25 
26 /** AES_KEY_1_REG register
27  *  Key material key_1 configure register
28  */
29 #define AES_KEY_1_REG (DR_REG_AES_BASE + 0x4)
30 /** AES_KEY_1 : R/W; bitpos: [31:0]; default: 0;
31  *  This bits stores key_1 that is a part of key material.
32  */
33 #define AES_KEY_1    0xFFFFFFFFU
34 #define AES_KEY_1_M  (AES_KEY_1_V << AES_KEY_1_S)
35 #define AES_KEY_1_V  0xFFFFFFFFU
36 #define AES_KEY_1_S  0
37 
38 /** AES_KEY_2_REG register
39  *  Key material key_2 configure register
40  */
41 #define AES_KEY_2_REG (DR_REG_AES_BASE + 0x8)
42 /** AES_KEY_2 : R/W; bitpos: [31:0]; default: 0;
43  *  This bits stores key_2 that is a part of key material.
44  */
45 #define AES_KEY_2    0xFFFFFFFFU
46 #define AES_KEY_2_M  (AES_KEY_2_V << AES_KEY_2_S)
47 #define AES_KEY_2_V  0xFFFFFFFFU
48 #define AES_KEY_2_S  0
49 
50 /** AES_KEY_3_REG register
51  *  Key material key_3 configure register
52  */
53 #define AES_KEY_3_REG (DR_REG_AES_BASE + 0xc)
54 /** AES_KEY_3 : R/W; bitpos: [31:0]; default: 0;
55  *  This bits stores key_3 that is a part of key material.
56  */
57 #define AES_KEY_3    0xFFFFFFFFU
58 #define AES_KEY_3_M  (AES_KEY_3_V << AES_KEY_3_S)
59 #define AES_KEY_3_V  0xFFFFFFFFU
60 #define AES_KEY_3_S  0
61 
62 /** AES_KEY_4_REG register
63  *  Key material key_4 configure register
64  */
65 #define AES_KEY_4_REG (DR_REG_AES_BASE + 0x10)
66 /** AES_KEY_4 : R/W; bitpos: [31:0]; default: 0;
67  *  This bits stores key_4 that is a part of key material.
68  */
69 #define AES_KEY_4    0xFFFFFFFFU
70 #define AES_KEY_4_M  (AES_KEY_4_V << AES_KEY_4_S)
71 #define AES_KEY_4_V  0xFFFFFFFFU
72 #define AES_KEY_4_S  0
73 
74 /** AES_KEY_5_REG register
75  *  Key material key_5 configure register
76  */
77 #define AES_KEY_5_REG (DR_REG_AES_BASE + 0x14)
78 /** AES_KEY_5 : R/W; bitpos: [31:0]; default: 0;
79  *  This bits stores key_5 that is a part of key material.
80  */
81 #define AES_KEY_5    0xFFFFFFFFU
82 #define AES_KEY_5_M  (AES_KEY_5_V << AES_KEY_5_S)
83 #define AES_KEY_5_V  0xFFFFFFFFU
84 #define AES_KEY_5_S  0
85 
86 /** AES_KEY_6_REG register
87  *  Key material key_6 configure register
88  */
89 #define AES_KEY_6_REG (DR_REG_AES_BASE + 0x18)
90 /** AES_KEY_6 : R/W; bitpos: [31:0]; default: 0;
91  *  This bits stores key_6 that is a part of key material.
92  */
93 #define AES_KEY_6    0xFFFFFFFFU
94 #define AES_KEY_6_M  (AES_KEY_6_V << AES_KEY_6_S)
95 #define AES_KEY_6_V  0xFFFFFFFFU
96 #define AES_KEY_6_S  0
97 
98 /** AES_KEY_7_REG register
99  *  Key material key_7 configure register
100  */
101 #define AES_KEY_7_REG (DR_REG_AES_BASE + 0x1c)
102 /** AES_KEY_7 : R/W; bitpos: [31:0]; default: 0;
103  *  This bits stores key_7 that is a part of key material.
104  */
105 #define AES_KEY_7    0xFFFFFFFFU
106 #define AES_KEY_7_M  (AES_KEY_7_V << AES_KEY_7_S)
107 #define AES_KEY_7_V  0xFFFFFFFFU
108 #define AES_KEY_7_S  0
109 
110 /** AES_TEXT_IN_0_REG register
111  *  source text material text_in_0 configure register
112  */
113 #define AES_TEXT_IN_0_REG (DR_REG_AES_BASE + 0x20)
114 /** AES_TEXT_IN_0 : R/W; bitpos: [31:0]; default: 0;
115  *  This bits stores text_in_0 that is a part of source text material.
116  */
117 #define AES_TEXT_IN_0    0xFFFFFFFFU
118 #define AES_TEXT_IN_0_M  (AES_TEXT_IN_0_V << AES_TEXT_IN_0_S)
119 #define AES_TEXT_IN_0_V  0xFFFFFFFFU
120 #define AES_TEXT_IN_0_S  0
121 
122 /** AES_TEXT_IN_1_REG register
123  *  source text material text_in_1 configure register
124  */
125 #define AES_TEXT_IN_1_REG (DR_REG_AES_BASE + 0x24)
126 /** AES_TEXT_IN_1 : R/W; bitpos: [31:0]; default: 0;
127  *  This bits stores text_in_1 that is a part of source text material.
128  */
129 #define AES_TEXT_IN_1    0xFFFFFFFFU
130 #define AES_TEXT_IN_1_M  (AES_TEXT_IN_1_V << AES_TEXT_IN_1_S)
131 #define AES_TEXT_IN_1_V  0xFFFFFFFFU
132 #define AES_TEXT_IN_1_S  0
133 
134 /** AES_TEXT_IN_2_REG register
135  *  source text material text_in_2 configure register
136  */
137 #define AES_TEXT_IN_2_REG (DR_REG_AES_BASE + 0x28)
138 /** AES_TEXT_IN_2 : R/W; bitpos: [31:0]; default: 0;
139  *  This bits stores text_in_2 that is a part of source text material.
140  */
141 #define AES_TEXT_IN_2    0xFFFFFFFFU
142 #define AES_TEXT_IN_2_M  (AES_TEXT_IN_2_V << AES_TEXT_IN_2_S)
143 #define AES_TEXT_IN_2_V  0xFFFFFFFFU
144 #define AES_TEXT_IN_2_S  0
145 
146 /** AES_TEXT_IN_3_REG register
147  *  source text material text_in_3 configure register
148  */
149 #define AES_TEXT_IN_3_REG (DR_REG_AES_BASE + 0x2c)
150 /** AES_TEXT_IN_3 : R/W; bitpos: [31:0]; default: 0;
151  *  This bits stores text_in_3 that is a part of source text material.
152  */
153 #define AES_TEXT_IN_3    0xFFFFFFFFU
154 #define AES_TEXT_IN_3_M  (AES_TEXT_IN_3_V << AES_TEXT_IN_3_S)
155 #define AES_TEXT_IN_3_V  0xFFFFFFFFU
156 #define AES_TEXT_IN_3_S  0
157 
158 /** AES_TEXT_OUT_0_REG register
159  *  result text material text_out_0 configure register
160  */
161 #define AES_TEXT_OUT_0_REG (DR_REG_AES_BASE + 0x30)
162 /** AES_TEXT_OUT_0 : R/W; bitpos: [31:0]; default: 0;
163  *  This bits stores text_out_0 that is a part of result text material.
164  */
165 #define AES_TEXT_OUT_0    0xFFFFFFFFU
166 #define AES_TEXT_OUT_0_M  (AES_TEXT_OUT_0_V << AES_TEXT_OUT_0_S)
167 #define AES_TEXT_OUT_0_V  0xFFFFFFFFU
168 #define AES_TEXT_OUT_0_S  0
169 
170 /** AES_TEXT_OUT_1_REG register
171  *  result text material text_out_1 configure register
172  */
173 #define AES_TEXT_OUT_1_REG (DR_REG_AES_BASE + 0x34)
174 /** AES_TEXT_OUT_1 : R/W; bitpos: [31:0]; default: 0;
175  *  This bits stores text_out_1 that is a part of result text material.
176  */
177 #define AES_TEXT_OUT_1    0xFFFFFFFFU
178 #define AES_TEXT_OUT_1_M  (AES_TEXT_OUT_1_V << AES_TEXT_OUT_1_S)
179 #define AES_TEXT_OUT_1_V  0xFFFFFFFFU
180 #define AES_TEXT_OUT_1_S  0
181 
182 /** AES_TEXT_OUT_2_REG register
183  *  result text material text_out_2 configure register
184  */
185 #define AES_TEXT_OUT_2_REG (DR_REG_AES_BASE + 0x38)
186 /** AES_TEXT_OUT_2 : R/W; bitpos: [31:0]; default: 0;
187  *  This bits stores text_out_2 that is a part of result text material.
188  */
189 #define AES_TEXT_OUT_2    0xFFFFFFFFU
190 #define AES_TEXT_OUT_2_M  (AES_TEXT_OUT_2_V << AES_TEXT_OUT_2_S)
191 #define AES_TEXT_OUT_2_V  0xFFFFFFFFU
192 #define AES_TEXT_OUT_2_S  0
193 
194 /** AES_TEXT_OUT_3_REG register
195  *  result text material text_out_3 configure register
196  */
197 #define AES_TEXT_OUT_3_REG (DR_REG_AES_BASE + 0x3c)
198 /** AES_TEXT_OUT_3 : R/W; bitpos: [31:0]; default: 0;
199  *  This bits stores text_out_3 that is a part of result text material.
200  */
201 #define AES_TEXT_OUT_3    0xFFFFFFFFU
202 #define AES_TEXT_OUT_3_M  (AES_TEXT_OUT_3_V << AES_TEXT_OUT_3_S)
203 #define AES_TEXT_OUT_3_V  0xFFFFFFFFU
204 #define AES_TEXT_OUT_3_S  0
205 
206 /** AES_MODE_REG register
207  *  AES Mode register
208  */
209 #define AES_MODE_REG (DR_REG_AES_BASE + 0x40)
210 /** AES_MODE : R/W; bitpos: [2:0]; default: 0;
211  *  This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1:
212  *  AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.
213  */
214 #define AES_MODE    0x00000007U
215 #define AES_MODE_M  (AES_MODE_V << AES_MODE_S)
216 #define AES_MODE_V  0x00000007U
217 #define AES_MODE_S  0
218 
219 /** AES_ENDIAN_REG register
220  *  AES Endian configure register
221  */
222 #define AES_ENDIAN_REG (DR_REG_AES_BASE + 0x44)
223 /** AES_ENDIAN : R/W; bitpos: [5:0]; default: 0;
224  *  endian. [1:0] key endian, [3:2] text_in endian or in_stream endian,  [5:4] text_out
225  *  endian or out_stream endian
226  */
227 #define AES_ENDIAN    0x0000003FU
228 #define AES_ENDIAN_M  (AES_ENDIAN_V << AES_ENDIAN_S)
229 #define AES_ENDIAN_V  0x0000003FU
230 #define AES_ENDIAN_S  0
231 
232 /** AES_TRIGGER_REG register
233  *  AES trigger register
234  */
235 #define AES_TRIGGER_REG (DR_REG_AES_BASE + 0x48)
236 /** AES_TRIGGER : WT; bitpos: [0]; default: 0;
237  *  Set this bit to start AES calculation.
238  */
239 #define AES_TRIGGER    (BIT(0))
240 #define AES_TRIGGER_M  (AES_TRIGGER_V << AES_TRIGGER_S)
241 #define AES_TRIGGER_V  0x00000001U
242 #define AES_TRIGGER_S  0
243 
244 /** AES_STATE_REG register
245  *  AES state register
246  */
247 #define AES_STATE_REG (DR_REG_AES_BASE + 0x4c)
248 /** AES_STATE : RO; bitpos: [1:0]; default: 0;
249  *  Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0:
250  *  idle, 1: busy, 2: calculation_done.
251  */
252 #define AES_STATE    0x00000003U
253 #define AES_STATE_M  (AES_STATE_V << AES_STATE_S)
254 #define AES_STATE_V  0x00000003U
255 #define AES_STATE_S  0
256 
257 /** AES_IV_MEM register
258  *  The memory that stores initialization vector
259  */
260 #define AES_IV_MEM (DR_REG_AES_BASE + 0x50)
261 #define AES_IV_MEM_SIZE_BYTES 16
262 
263 /** AES_H_MEM register
264  *  The memory that stores GCM hash subkey
265  */
266 #define AES_H_MEM (DR_REG_AES_BASE + 0x60)
267 #define AES_H_MEM_SIZE_BYTES 16
268 
269 /** AES_J0_MEM register
270  *  The memory that stores J0
271  */
272 #define AES_J0_MEM (DR_REG_AES_BASE + 0x70)
273 #define AES_J0_MEM_SIZE_BYTES 16
274 
275 /** AES_T0_MEM register
276  *  The memory that stores T0
277  */
278 #define AES_T0_MEM (DR_REG_AES_BASE + 0x80)
279 #define AES_T0_MEM_SIZE_BYTES 16
280 
281 /** AES_DMA_ENABLE_REG register
282  *  DMA-AES working mode register
283  */
284 #define AES_DMA_ENABLE_REG (DR_REG_AES_BASE + 0x90)
285 /** AES_DMA_ENABLE : R/W; bitpos: [0]; default: 0;
286  *  1'b0: typical AES working mode, 1'b1: DMA-AES working mode.
287  */
288 #define AES_DMA_ENABLE    (BIT(0))
289 #define AES_DMA_ENABLE_M  (AES_DMA_ENABLE_V << AES_DMA_ENABLE_S)
290 #define AES_DMA_ENABLE_V  0x00000001U
291 #define AES_DMA_ENABLE_S  0
292 
293 /** AES_BLOCK_MODE_REG register
294  *  AES cipher block mode register
295  */
296 #define AES_BLOCK_MODE_REG (DR_REG_AES_BASE + 0x94)
297 /** AES_BLOCK_MODE : R/W; bitpos: [2:0]; default: 0;
298  *  Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB,
299  *  0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.
300  */
301 #define AES_BLOCK_MODE    0x00000007U
302 #define AES_BLOCK_MODE_M  (AES_BLOCK_MODE_V << AES_BLOCK_MODE_S)
303 #define AES_BLOCK_MODE_V  0x00000007U
304 #define AES_BLOCK_MODE_S  0
305 
306 /** AES_BLOCK_NUM_REG register
307  *  AES block number register
308  */
309 #define AES_BLOCK_NUM_REG (DR_REG_AES_BASE + 0x98)
310 /** AES_BLOCK_NUM : R/W; bitpos: [31:0]; default: 0;
311  *  Those bits stores the number of Plaintext/ciphertext block.
312  */
313 #define AES_BLOCK_NUM    0xFFFFFFFFU
314 #define AES_BLOCK_NUM_M  (AES_BLOCK_NUM_V << AES_BLOCK_NUM_S)
315 #define AES_BLOCK_NUM_V  0xFFFFFFFFU
316 #define AES_BLOCK_NUM_S  0
317 
318 /** AES_INC_SEL_REG register
319  *  Standard incrementing function configure register
320  */
321 #define AES_INC_SEL_REG (DR_REG_AES_BASE + 0x9c)
322 /** AES_INC_SEL : R/W; bitpos: [0]; default: 0;
323  *  This bit decides the standard incrementing function. 0: INC32. 1: INC128.
324  */
325 #define AES_INC_SEL    (BIT(0))
326 #define AES_INC_SEL_M  (AES_INC_SEL_V << AES_INC_SEL_S)
327 #define AES_INC_SEL_V  0x00000001U
328 #define AES_INC_SEL_S  0
329 
330 /** AES_AAD_BLOCK_NUM_REG register
331  *  Additional Authential Data block number register
332  */
333 #define AES_AAD_BLOCK_NUM_REG (DR_REG_AES_BASE + 0xa0)
334 /** AES_AAD_BLOCK_NUM : R/W; bitpos: [31:0]; default: 0;
335  *  Those bits stores the number of AAD block.
336  */
337 #define AES_AAD_BLOCK_NUM    0xFFFFFFFFU
338 #define AES_AAD_BLOCK_NUM_M  (AES_AAD_BLOCK_NUM_V << AES_AAD_BLOCK_NUM_S)
339 #define AES_AAD_BLOCK_NUM_V  0xFFFFFFFFU
340 #define AES_AAD_BLOCK_NUM_S  0
341 
342 /** AES_REMAINDER_BIT_NUM_REG register
343  *  AES remainder bit number register
344  */
345 #define AES_REMAINDER_BIT_NUM_REG (DR_REG_AES_BASE + 0xa4)
346 /** AES_REMAINDER_BIT_NUM : R/W; bitpos: [6:0]; default: 0;
347  *  Those bits stores the number of remainder bit.
348  */
349 #define AES_REMAINDER_BIT_NUM    0x0000007FU
350 #define AES_REMAINDER_BIT_NUM_M  (AES_REMAINDER_BIT_NUM_V << AES_REMAINDER_BIT_NUM_S)
351 #define AES_REMAINDER_BIT_NUM_V  0x0000007FU
352 #define AES_REMAINDER_BIT_NUM_S  0
353 
354 /** AES_CONTINUE_REG register
355  *  AES continue register
356  */
357 #define AES_CONTINUE_REG (DR_REG_AES_BASE + 0xa8)
358 /** AES_CONTINUE : WT; bitpos: [0]; default: 0;
359  *  Set this bit to continue GCM operation.
360  */
361 #define AES_CONTINUE    (BIT(0))
362 #define AES_CONTINUE_M  (AES_CONTINUE_V << AES_CONTINUE_S)
363 #define AES_CONTINUE_V  0x00000001U
364 #define AES_CONTINUE_S  0
365 
366 /** AES_INT_CLEAR_REG register
367  *  AES Interrupt clear register
368  */
369 #define AES_INT_CLEAR_REG (DR_REG_AES_BASE + 0xac)
370 /** AES_INT_CLEAR : WT; bitpos: [0]; default: 0;
371  *  Set this bit to clear the AES interrupt.
372  */
373 #define AES_INT_CLEAR    (BIT(0))
374 #define AES_INT_CLEAR_M  (AES_INT_CLEAR_V << AES_INT_CLEAR_S)
375 #define AES_INT_CLEAR_V  0x00000001U
376 #define AES_INT_CLEAR_S  0
377 
378 /** AES_INT_ENA_REG register
379  *  AES Interrupt enable register
380  */
381 #define AES_INT_ENA_REG (DR_REG_AES_BASE + 0xb0)
382 /** AES_INT_ENA : R/W; bitpos: [0]; default: 0;
383  *  Set this bit to enable interrupt that occurs when DMA-AES calculation is done.
384  */
385 #define AES_INT_ENA    (BIT(0))
386 #define AES_INT_ENA_M  (AES_INT_ENA_V << AES_INT_ENA_S)
387 #define AES_INT_ENA_V  0x00000001U
388 #define AES_INT_ENA_S  0
389 
390 /** AES_DATE_REG register
391  *  AES version control register
392  */
393 #define AES_DATE_REG (DR_REG_AES_BASE + 0xb4)
394 /** AES_DATE : R/W; bitpos: [29:0]; default: 538513936;
395  *  This bits stores the version information of AES.
396  */
397 #define AES_DATE    0x3FFFFFFFU
398 #define AES_DATE_M  (AES_DATE_V << AES_DATE_S)
399 #define AES_DATE_V  0x3FFFFFFFU
400 #define AES_DATE_S  0
401 
402 /** AES_DMA_EXIT_REG register
403  *  AES-DMA exit config
404  */
405 #define AES_DMA_EXIT_REG (DR_REG_AES_BASE + 0xb8)
406 /** AES_DMA_EXIT : WT; bitpos: [0]; default: 0;
407  *  Set this register to leave calculation done stage. Recommend to use it after
408  *  software finishes reading DMA's output buffer.
409  */
410 #define AES_DMA_EXIT    (BIT(0))
411 #define AES_DMA_EXIT_M  (AES_DMA_EXIT_V << AES_DMA_EXIT_S)
412 #define AES_DMA_EXIT_V  0x00000001U
413 #define AES_DMA_EXIT_S  0
414 
415 #ifdef __cplusplus
416 }
417 #endif
418