1 /**
2 * \file
3 *
4 * \brief SAM AES
5 *
6 * Copyright (C) 2016 Atmel Corporation. All rights reserved.
7 *
8 * \asf_license_start
9 *
10 * \page License
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions are met:
14 *
15 * 1. Redistributions of source code must retain the above copyright notice,
16 * this list of conditions and the following disclaimer.
17 *
18 * 2. Redistributions in binary form must reproduce the above copyright notice,
19 * this list of conditions and the following disclaimer in the documentation
20 * and/or other materials provided with the distribution.
21 *
22 * 3. The name of Atmel may not be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * 4. This software may only be redistributed and used in connection with an
26 * Atmel microcontroller product.
27 *
28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 * POSSIBILITY OF SUCH DAMAGE.
39 *
40 * \asf_license_stop
41 */
42
43 #ifdef _SAML21_AES_COMPONENT_
44 #ifndef _HRI_AES_L21_H_INCLUDED_
45 #define _HRI_AES_L21_H_INCLUDED_
46
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50
51 #include <stdbool.h>
52 #include <hal_atomic.h>
53
54 #if defined(ENABLE_AES_CRITICAL_SECTIONS)
55 #define AES_CRITICAL_SECTION_ENTER() CRITICAL_SECTION_ENTER()
56 #define AES_CRITICAL_SECTION_LEAVE() CRITICAL_SECTION_LEAVE()
57 #else
58 #define AES_CRITICAL_SECTION_ENTER()
59 #define AES_CRITICAL_SECTION_LEAVE()
60 #endif
61
62 typedef uint32_t hri_aes_ciplen_reg_t;
63 typedef uint32_t hri_aes_ctrla_reg_t;
64 typedef uint32_t hri_aes_ghash_reg_t;
65 typedef uint32_t hri_aes_hashkey_reg_t;
66 typedef uint32_t hri_aes_indata_reg_t;
67 typedef uint32_t hri_aes_intvectv_reg_t;
68 typedef uint32_t hri_aes_keyword_reg_t;
69 typedef uint32_t hri_aes_randseed_reg_t;
70 typedef uint8_t hri_aes_ctrlb_reg_t;
71 typedef uint8_t hri_aes_databufptr_reg_t;
72 typedef uint8_t hri_aes_dbgctrl_reg_t;
73 typedef uint8_t hri_aes_intenset_reg_t;
74 typedef uint8_t hri_aes_intflag_reg_t;
75
hri_aes_set_INTEN_ENCCMP_bit(const void * const hw)76 static inline void hri_aes_set_INTEN_ENCCMP_bit(const void *const hw)
77 {
78 ((Aes *)hw)->INTENSET.reg = AES_INTENSET_ENCCMP;
79 }
80
hri_aes_get_INTEN_ENCCMP_bit(const void * const hw)81 static inline bool hri_aes_get_INTEN_ENCCMP_bit(const void *const hw)
82 {
83 return (((Aes *)hw)->INTENSET.reg & AES_INTENSET_ENCCMP) >> AES_INTENSET_ENCCMP_Pos;
84 }
85
hri_aes_write_INTEN_ENCCMP_bit(const void * const hw,bool value)86 static inline void hri_aes_write_INTEN_ENCCMP_bit(const void *const hw, bool value)
87 {
88 if (value == 0x0) {
89 ((Aes *)hw)->INTENCLR.reg = AES_INTENSET_ENCCMP;
90 } else {
91 ((Aes *)hw)->INTENSET.reg = AES_INTENSET_ENCCMP;
92 }
93 }
94
hri_aes_clear_INTEN_ENCCMP_bit(const void * const hw)95 static inline void hri_aes_clear_INTEN_ENCCMP_bit(const void *const hw)
96 {
97 ((Aes *)hw)->INTENCLR.reg = AES_INTENSET_ENCCMP;
98 }
99
hri_aes_set_INTEN_GFMCMP_bit(const void * const hw)100 static inline void hri_aes_set_INTEN_GFMCMP_bit(const void *const hw)
101 {
102 ((Aes *)hw)->INTENSET.reg = AES_INTENSET_GFMCMP;
103 }
104
hri_aes_get_INTEN_GFMCMP_bit(const void * const hw)105 static inline bool hri_aes_get_INTEN_GFMCMP_bit(const void *const hw)
106 {
107 return (((Aes *)hw)->INTENSET.reg & AES_INTENSET_GFMCMP) >> AES_INTENSET_GFMCMP_Pos;
108 }
109
hri_aes_write_INTEN_GFMCMP_bit(const void * const hw,bool value)110 static inline void hri_aes_write_INTEN_GFMCMP_bit(const void *const hw, bool value)
111 {
112 if (value == 0x0) {
113 ((Aes *)hw)->INTENCLR.reg = AES_INTENSET_GFMCMP;
114 } else {
115 ((Aes *)hw)->INTENSET.reg = AES_INTENSET_GFMCMP;
116 }
117 }
118
hri_aes_clear_INTEN_GFMCMP_bit(const void * const hw)119 static inline void hri_aes_clear_INTEN_GFMCMP_bit(const void *const hw)
120 {
121 ((Aes *)hw)->INTENCLR.reg = AES_INTENSET_GFMCMP;
122 }
123
hri_aes_set_INTEN_reg(const void * const hw,hri_aes_intenset_reg_t mask)124 static inline void hri_aes_set_INTEN_reg(const void *const hw, hri_aes_intenset_reg_t mask)
125 {
126 ((Aes *)hw)->INTENSET.reg = mask;
127 }
128
hri_aes_get_INTEN_reg(const void * const hw,hri_aes_intenset_reg_t mask)129 static inline hri_aes_intenset_reg_t hri_aes_get_INTEN_reg(const void *const hw, hri_aes_intenset_reg_t mask)
130 {
131 uint8_t tmp;
132 tmp = ((Aes *)hw)->INTENSET.reg;
133 tmp &= mask;
134 return tmp;
135 }
136
hri_aes_read_INTEN_reg(const void * const hw)137 static inline hri_aes_intenset_reg_t hri_aes_read_INTEN_reg(const void *const hw)
138 {
139 return ((Aes *)hw)->INTENSET.reg;
140 }
141
hri_aes_write_INTEN_reg(const void * const hw,hri_aes_intenset_reg_t data)142 static inline void hri_aes_write_INTEN_reg(const void *const hw, hri_aes_intenset_reg_t data)
143 {
144 ((Aes *)hw)->INTENSET.reg = data;
145 ((Aes *)hw)->INTENCLR.reg = ~data;
146 }
147
hri_aes_clear_INTEN_reg(const void * const hw,hri_aes_intenset_reg_t mask)148 static inline void hri_aes_clear_INTEN_reg(const void *const hw, hri_aes_intenset_reg_t mask)
149 {
150 ((Aes *)hw)->INTENCLR.reg = mask;
151 }
152
hri_aes_get_INTFLAG_ENCCMP_bit(const void * const hw)153 static inline bool hri_aes_get_INTFLAG_ENCCMP_bit(const void *const hw)
154 {
155 return (((Aes *)hw)->INTFLAG.reg & AES_INTFLAG_ENCCMP) >> AES_INTFLAG_ENCCMP_Pos;
156 }
157
hri_aes_clear_INTFLAG_ENCCMP_bit(const void * const hw)158 static inline void hri_aes_clear_INTFLAG_ENCCMP_bit(const void *const hw)
159 {
160 ((Aes *)hw)->INTFLAG.reg = AES_INTFLAG_ENCCMP;
161 }
162
hri_aes_get_INTFLAG_GFMCMP_bit(const void * const hw)163 static inline bool hri_aes_get_INTFLAG_GFMCMP_bit(const void *const hw)
164 {
165 return (((Aes *)hw)->INTFLAG.reg & AES_INTFLAG_GFMCMP) >> AES_INTFLAG_GFMCMP_Pos;
166 }
167
hri_aes_clear_INTFLAG_GFMCMP_bit(const void * const hw)168 static inline void hri_aes_clear_INTFLAG_GFMCMP_bit(const void *const hw)
169 {
170 ((Aes *)hw)->INTFLAG.reg = AES_INTFLAG_GFMCMP;
171 }
172
hri_aes_get_interrupt_ENCCMP_bit(const void * const hw)173 static inline bool hri_aes_get_interrupt_ENCCMP_bit(const void *const hw)
174 {
175 return (((Aes *)hw)->INTFLAG.reg & AES_INTFLAG_ENCCMP) >> AES_INTFLAG_ENCCMP_Pos;
176 }
177
hri_aes_clear_interrupt_ENCCMP_bit(const void * const hw)178 static inline void hri_aes_clear_interrupt_ENCCMP_bit(const void *const hw)
179 {
180 ((Aes *)hw)->INTFLAG.reg = AES_INTFLAG_ENCCMP;
181 }
182
hri_aes_get_interrupt_GFMCMP_bit(const void * const hw)183 static inline bool hri_aes_get_interrupt_GFMCMP_bit(const void *const hw)
184 {
185 return (((Aes *)hw)->INTFLAG.reg & AES_INTFLAG_GFMCMP) >> AES_INTFLAG_GFMCMP_Pos;
186 }
187
hri_aes_clear_interrupt_GFMCMP_bit(const void * const hw)188 static inline void hri_aes_clear_interrupt_GFMCMP_bit(const void *const hw)
189 {
190 ((Aes *)hw)->INTFLAG.reg = AES_INTFLAG_GFMCMP;
191 }
192
hri_aes_get_INTFLAG_reg(const void * const hw,hri_aes_intflag_reg_t mask)193 static inline hri_aes_intflag_reg_t hri_aes_get_INTFLAG_reg(const void *const hw, hri_aes_intflag_reg_t mask)
194 {
195 uint8_t tmp;
196 tmp = ((Aes *)hw)->INTFLAG.reg;
197 tmp &= mask;
198 return tmp;
199 }
200
hri_aes_read_INTFLAG_reg(const void * const hw)201 static inline hri_aes_intflag_reg_t hri_aes_read_INTFLAG_reg(const void *const hw)
202 {
203 return ((Aes *)hw)->INTFLAG.reg;
204 }
205
hri_aes_clear_INTFLAG_reg(const void * const hw,hri_aes_intflag_reg_t mask)206 static inline void hri_aes_clear_INTFLAG_reg(const void *const hw, hri_aes_intflag_reg_t mask)
207 {
208 ((Aes *)hw)->INTFLAG.reg = mask;
209 }
210
hri_aes_write_DBGCTRL_reg(const void * const hw,hri_aes_dbgctrl_reg_t data)211 static inline void hri_aes_write_DBGCTRL_reg(const void *const hw, hri_aes_dbgctrl_reg_t data)
212 {
213 AES_CRITICAL_SECTION_ENTER();
214 ((Aes *)hw)->DBGCTRL.reg = data;
215 AES_CRITICAL_SECTION_LEAVE();
216 }
217
hri_aes_write_KEYWORD_reg(const void * const hw,uint8_t index,hri_aes_keyword_reg_t data)218 static inline void hri_aes_write_KEYWORD_reg(const void *const hw, uint8_t index, hri_aes_keyword_reg_t data)
219 {
220 AES_CRITICAL_SECTION_ENTER();
221 ((Aes *)hw)->KEYWORD[index].reg = data;
222 AES_CRITICAL_SECTION_LEAVE();
223 }
224
hri_aes_write_INTVECTV_reg(const void * const hw,uint8_t index,hri_aes_intvectv_reg_t data)225 static inline void hri_aes_write_INTVECTV_reg(const void *const hw, uint8_t index, hri_aes_intvectv_reg_t data)
226 {
227 AES_CRITICAL_SECTION_ENTER();
228 ((Aes *)hw)->INTVECTV[index].reg = data;
229 AES_CRITICAL_SECTION_LEAVE();
230 }
231
hri_aes_set_CTRLA_SWRST_bit(const void * const hw)232 static inline void hri_aes_set_CTRLA_SWRST_bit(const void *const hw)
233 {
234 AES_CRITICAL_SECTION_ENTER();
235 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_SWRST;
236 AES_CRITICAL_SECTION_LEAVE();
237 }
238
hri_aes_get_CTRLA_SWRST_bit(const void * const hw)239 static inline bool hri_aes_get_CTRLA_SWRST_bit(const void *const hw)
240 {
241 uint32_t tmp;
242 tmp = ((Aes *)hw)->CTRLA.reg;
243 tmp = (tmp & AES_CTRLA_SWRST) >> AES_CTRLA_SWRST_Pos;
244 return (bool)tmp;
245 }
246
hri_aes_set_CTRLA_ENABLE_bit(const void * const hw)247 static inline void hri_aes_set_CTRLA_ENABLE_bit(const void *const hw)
248 {
249 AES_CRITICAL_SECTION_ENTER();
250 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_ENABLE;
251 AES_CRITICAL_SECTION_LEAVE();
252 }
253
hri_aes_get_CTRLA_ENABLE_bit(const void * const hw)254 static inline bool hri_aes_get_CTRLA_ENABLE_bit(const void *const hw)
255 {
256 uint32_t tmp;
257 tmp = ((Aes *)hw)->CTRLA.reg;
258 tmp = (tmp & AES_CTRLA_ENABLE) >> AES_CTRLA_ENABLE_Pos;
259 return (bool)tmp;
260 }
261
hri_aes_write_CTRLA_ENABLE_bit(const void * const hw,bool value)262 static inline void hri_aes_write_CTRLA_ENABLE_bit(const void *const hw, bool value)
263 {
264 uint32_t tmp;
265 AES_CRITICAL_SECTION_ENTER();
266 tmp = ((Aes *)hw)->CTRLA.reg;
267 tmp &= ~AES_CTRLA_ENABLE;
268 tmp |= value << AES_CTRLA_ENABLE_Pos;
269 ((Aes *)hw)->CTRLA.reg = tmp;
270 AES_CRITICAL_SECTION_LEAVE();
271 }
272
hri_aes_clear_CTRLA_ENABLE_bit(const void * const hw)273 static inline void hri_aes_clear_CTRLA_ENABLE_bit(const void *const hw)
274 {
275 AES_CRITICAL_SECTION_ENTER();
276 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_ENABLE;
277 AES_CRITICAL_SECTION_LEAVE();
278 }
279
hri_aes_toggle_CTRLA_ENABLE_bit(const void * const hw)280 static inline void hri_aes_toggle_CTRLA_ENABLE_bit(const void *const hw)
281 {
282 AES_CRITICAL_SECTION_ENTER();
283 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_ENABLE;
284 AES_CRITICAL_SECTION_LEAVE();
285 }
286
hri_aes_set_CTRLA_CIPHER_bit(const void * const hw)287 static inline void hri_aes_set_CTRLA_CIPHER_bit(const void *const hw)
288 {
289 AES_CRITICAL_SECTION_ENTER();
290 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_CIPHER;
291 AES_CRITICAL_SECTION_LEAVE();
292 }
293
hri_aes_get_CTRLA_CIPHER_bit(const void * const hw)294 static inline bool hri_aes_get_CTRLA_CIPHER_bit(const void *const hw)
295 {
296 uint32_t tmp;
297 tmp = ((Aes *)hw)->CTRLA.reg;
298 tmp = (tmp & AES_CTRLA_CIPHER) >> AES_CTRLA_CIPHER_Pos;
299 return (bool)tmp;
300 }
301
hri_aes_write_CTRLA_CIPHER_bit(const void * const hw,bool value)302 static inline void hri_aes_write_CTRLA_CIPHER_bit(const void *const hw, bool value)
303 {
304 uint32_t tmp;
305 AES_CRITICAL_SECTION_ENTER();
306 tmp = ((Aes *)hw)->CTRLA.reg;
307 tmp &= ~AES_CTRLA_CIPHER;
308 tmp |= value << AES_CTRLA_CIPHER_Pos;
309 ((Aes *)hw)->CTRLA.reg = tmp;
310 AES_CRITICAL_SECTION_LEAVE();
311 }
312
hri_aes_clear_CTRLA_CIPHER_bit(const void * const hw)313 static inline void hri_aes_clear_CTRLA_CIPHER_bit(const void *const hw)
314 {
315 AES_CRITICAL_SECTION_ENTER();
316 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_CIPHER;
317 AES_CRITICAL_SECTION_LEAVE();
318 }
319
hri_aes_toggle_CTRLA_CIPHER_bit(const void * const hw)320 static inline void hri_aes_toggle_CTRLA_CIPHER_bit(const void *const hw)
321 {
322 AES_CRITICAL_SECTION_ENTER();
323 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_CIPHER;
324 AES_CRITICAL_SECTION_LEAVE();
325 }
326
hri_aes_set_CTRLA_STARTMODE_bit(const void * const hw)327 static inline void hri_aes_set_CTRLA_STARTMODE_bit(const void *const hw)
328 {
329 AES_CRITICAL_SECTION_ENTER();
330 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_STARTMODE;
331 AES_CRITICAL_SECTION_LEAVE();
332 }
333
hri_aes_get_CTRLA_STARTMODE_bit(const void * const hw)334 static inline bool hri_aes_get_CTRLA_STARTMODE_bit(const void *const hw)
335 {
336 uint32_t tmp;
337 tmp = ((Aes *)hw)->CTRLA.reg;
338 tmp = (tmp & AES_CTRLA_STARTMODE) >> AES_CTRLA_STARTMODE_Pos;
339 return (bool)tmp;
340 }
341
hri_aes_write_CTRLA_STARTMODE_bit(const void * const hw,bool value)342 static inline void hri_aes_write_CTRLA_STARTMODE_bit(const void *const hw, bool value)
343 {
344 uint32_t tmp;
345 AES_CRITICAL_SECTION_ENTER();
346 tmp = ((Aes *)hw)->CTRLA.reg;
347 tmp &= ~AES_CTRLA_STARTMODE;
348 tmp |= value << AES_CTRLA_STARTMODE_Pos;
349 ((Aes *)hw)->CTRLA.reg = tmp;
350 AES_CRITICAL_SECTION_LEAVE();
351 }
352
hri_aes_clear_CTRLA_STARTMODE_bit(const void * const hw)353 static inline void hri_aes_clear_CTRLA_STARTMODE_bit(const void *const hw)
354 {
355 AES_CRITICAL_SECTION_ENTER();
356 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_STARTMODE;
357 AES_CRITICAL_SECTION_LEAVE();
358 }
359
hri_aes_toggle_CTRLA_STARTMODE_bit(const void * const hw)360 static inline void hri_aes_toggle_CTRLA_STARTMODE_bit(const void *const hw)
361 {
362 AES_CRITICAL_SECTION_ENTER();
363 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_STARTMODE;
364 AES_CRITICAL_SECTION_LEAVE();
365 }
366
hri_aes_set_CTRLA_LOD_bit(const void * const hw)367 static inline void hri_aes_set_CTRLA_LOD_bit(const void *const hw)
368 {
369 AES_CRITICAL_SECTION_ENTER();
370 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_LOD;
371 AES_CRITICAL_SECTION_LEAVE();
372 }
373
hri_aes_get_CTRLA_LOD_bit(const void * const hw)374 static inline bool hri_aes_get_CTRLA_LOD_bit(const void *const hw)
375 {
376 uint32_t tmp;
377 tmp = ((Aes *)hw)->CTRLA.reg;
378 tmp = (tmp & AES_CTRLA_LOD) >> AES_CTRLA_LOD_Pos;
379 return (bool)tmp;
380 }
381
hri_aes_write_CTRLA_LOD_bit(const void * const hw,bool value)382 static inline void hri_aes_write_CTRLA_LOD_bit(const void *const hw, bool value)
383 {
384 uint32_t tmp;
385 AES_CRITICAL_SECTION_ENTER();
386 tmp = ((Aes *)hw)->CTRLA.reg;
387 tmp &= ~AES_CTRLA_LOD;
388 tmp |= value << AES_CTRLA_LOD_Pos;
389 ((Aes *)hw)->CTRLA.reg = tmp;
390 AES_CRITICAL_SECTION_LEAVE();
391 }
392
hri_aes_clear_CTRLA_LOD_bit(const void * const hw)393 static inline void hri_aes_clear_CTRLA_LOD_bit(const void *const hw)
394 {
395 AES_CRITICAL_SECTION_ENTER();
396 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_LOD;
397 AES_CRITICAL_SECTION_LEAVE();
398 }
399
hri_aes_toggle_CTRLA_LOD_bit(const void * const hw)400 static inline void hri_aes_toggle_CTRLA_LOD_bit(const void *const hw)
401 {
402 AES_CRITICAL_SECTION_ENTER();
403 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_LOD;
404 AES_CRITICAL_SECTION_LEAVE();
405 }
406
hri_aes_set_CTRLA_KEYGEN_bit(const void * const hw)407 static inline void hri_aes_set_CTRLA_KEYGEN_bit(const void *const hw)
408 {
409 AES_CRITICAL_SECTION_ENTER();
410 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_KEYGEN;
411 AES_CRITICAL_SECTION_LEAVE();
412 }
413
hri_aes_get_CTRLA_KEYGEN_bit(const void * const hw)414 static inline bool hri_aes_get_CTRLA_KEYGEN_bit(const void *const hw)
415 {
416 uint32_t tmp;
417 tmp = ((Aes *)hw)->CTRLA.reg;
418 tmp = (tmp & AES_CTRLA_KEYGEN) >> AES_CTRLA_KEYGEN_Pos;
419 return (bool)tmp;
420 }
421
hri_aes_write_CTRLA_KEYGEN_bit(const void * const hw,bool value)422 static inline void hri_aes_write_CTRLA_KEYGEN_bit(const void *const hw, bool value)
423 {
424 uint32_t tmp;
425 AES_CRITICAL_SECTION_ENTER();
426 tmp = ((Aes *)hw)->CTRLA.reg;
427 tmp &= ~AES_CTRLA_KEYGEN;
428 tmp |= value << AES_CTRLA_KEYGEN_Pos;
429 ((Aes *)hw)->CTRLA.reg = tmp;
430 AES_CRITICAL_SECTION_LEAVE();
431 }
432
hri_aes_clear_CTRLA_KEYGEN_bit(const void * const hw)433 static inline void hri_aes_clear_CTRLA_KEYGEN_bit(const void *const hw)
434 {
435 AES_CRITICAL_SECTION_ENTER();
436 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_KEYGEN;
437 AES_CRITICAL_SECTION_LEAVE();
438 }
439
hri_aes_toggle_CTRLA_KEYGEN_bit(const void * const hw)440 static inline void hri_aes_toggle_CTRLA_KEYGEN_bit(const void *const hw)
441 {
442 AES_CRITICAL_SECTION_ENTER();
443 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_KEYGEN;
444 AES_CRITICAL_SECTION_LEAVE();
445 }
446
hri_aes_set_CTRLA_XORKEY_bit(const void * const hw)447 static inline void hri_aes_set_CTRLA_XORKEY_bit(const void *const hw)
448 {
449 AES_CRITICAL_SECTION_ENTER();
450 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_XORKEY;
451 AES_CRITICAL_SECTION_LEAVE();
452 }
453
hri_aes_get_CTRLA_XORKEY_bit(const void * const hw)454 static inline bool hri_aes_get_CTRLA_XORKEY_bit(const void *const hw)
455 {
456 uint32_t tmp;
457 tmp = ((Aes *)hw)->CTRLA.reg;
458 tmp = (tmp & AES_CTRLA_XORKEY) >> AES_CTRLA_XORKEY_Pos;
459 return (bool)tmp;
460 }
461
hri_aes_write_CTRLA_XORKEY_bit(const void * const hw,bool value)462 static inline void hri_aes_write_CTRLA_XORKEY_bit(const void *const hw, bool value)
463 {
464 uint32_t tmp;
465 AES_CRITICAL_SECTION_ENTER();
466 tmp = ((Aes *)hw)->CTRLA.reg;
467 tmp &= ~AES_CTRLA_XORKEY;
468 tmp |= value << AES_CTRLA_XORKEY_Pos;
469 ((Aes *)hw)->CTRLA.reg = tmp;
470 AES_CRITICAL_SECTION_LEAVE();
471 }
472
hri_aes_clear_CTRLA_XORKEY_bit(const void * const hw)473 static inline void hri_aes_clear_CTRLA_XORKEY_bit(const void *const hw)
474 {
475 AES_CRITICAL_SECTION_ENTER();
476 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_XORKEY;
477 AES_CRITICAL_SECTION_LEAVE();
478 }
479
hri_aes_toggle_CTRLA_XORKEY_bit(const void * const hw)480 static inline void hri_aes_toggle_CTRLA_XORKEY_bit(const void *const hw)
481 {
482 AES_CRITICAL_SECTION_ENTER();
483 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_XORKEY;
484 AES_CRITICAL_SECTION_LEAVE();
485 }
486
hri_aes_set_CTRLA_AESMODE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)487 static inline void hri_aes_set_CTRLA_AESMODE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
488 {
489 AES_CRITICAL_SECTION_ENTER();
490 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_AESMODE(mask);
491 AES_CRITICAL_SECTION_LEAVE();
492 }
493
hri_aes_get_CTRLA_AESMODE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)494 static inline hri_aes_ctrla_reg_t hri_aes_get_CTRLA_AESMODE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
495 {
496 uint32_t tmp;
497 tmp = ((Aes *)hw)->CTRLA.reg;
498 tmp = (tmp & AES_CTRLA_AESMODE(mask)) >> AES_CTRLA_AESMODE_Pos;
499 return tmp;
500 }
501
hri_aes_write_CTRLA_AESMODE_bf(const void * const hw,hri_aes_ctrla_reg_t data)502 static inline void hri_aes_write_CTRLA_AESMODE_bf(const void *const hw, hri_aes_ctrla_reg_t data)
503 {
504 uint32_t tmp;
505 AES_CRITICAL_SECTION_ENTER();
506 tmp = ((Aes *)hw)->CTRLA.reg;
507 tmp &= ~AES_CTRLA_AESMODE_Msk;
508 tmp |= AES_CTRLA_AESMODE(data);
509 ((Aes *)hw)->CTRLA.reg = tmp;
510 AES_CRITICAL_SECTION_LEAVE();
511 }
512
hri_aes_clear_CTRLA_AESMODE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)513 static inline void hri_aes_clear_CTRLA_AESMODE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
514 {
515 AES_CRITICAL_SECTION_ENTER();
516 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_AESMODE(mask);
517 AES_CRITICAL_SECTION_LEAVE();
518 }
519
hri_aes_toggle_CTRLA_AESMODE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)520 static inline void hri_aes_toggle_CTRLA_AESMODE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
521 {
522 AES_CRITICAL_SECTION_ENTER();
523 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_AESMODE(mask);
524 AES_CRITICAL_SECTION_LEAVE();
525 }
526
hri_aes_read_CTRLA_AESMODE_bf(const void * const hw)527 static inline hri_aes_ctrla_reg_t hri_aes_read_CTRLA_AESMODE_bf(const void *const hw)
528 {
529 uint32_t tmp;
530 tmp = ((Aes *)hw)->CTRLA.reg;
531 tmp = (tmp & AES_CTRLA_AESMODE_Msk) >> AES_CTRLA_AESMODE_Pos;
532 return tmp;
533 }
534
hri_aes_set_CTRLA_CFBS_bf(const void * const hw,hri_aes_ctrla_reg_t mask)535 static inline void hri_aes_set_CTRLA_CFBS_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
536 {
537 AES_CRITICAL_SECTION_ENTER();
538 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_CFBS(mask);
539 AES_CRITICAL_SECTION_LEAVE();
540 }
541
hri_aes_get_CTRLA_CFBS_bf(const void * const hw,hri_aes_ctrla_reg_t mask)542 static inline hri_aes_ctrla_reg_t hri_aes_get_CTRLA_CFBS_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
543 {
544 uint32_t tmp;
545 tmp = ((Aes *)hw)->CTRLA.reg;
546 tmp = (tmp & AES_CTRLA_CFBS(mask)) >> AES_CTRLA_CFBS_Pos;
547 return tmp;
548 }
549
hri_aes_write_CTRLA_CFBS_bf(const void * const hw,hri_aes_ctrla_reg_t data)550 static inline void hri_aes_write_CTRLA_CFBS_bf(const void *const hw, hri_aes_ctrla_reg_t data)
551 {
552 uint32_t tmp;
553 AES_CRITICAL_SECTION_ENTER();
554 tmp = ((Aes *)hw)->CTRLA.reg;
555 tmp &= ~AES_CTRLA_CFBS_Msk;
556 tmp |= AES_CTRLA_CFBS(data);
557 ((Aes *)hw)->CTRLA.reg = tmp;
558 AES_CRITICAL_SECTION_LEAVE();
559 }
560
hri_aes_clear_CTRLA_CFBS_bf(const void * const hw,hri_aes_ctrla_reg_t mask)561 static inline void hri_aes_clear_CTRLA_CFBS_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
562 {
563 AES_CRITICAL_SECTION_ENTER();
564 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_CFBS(mask);
565 AES_CRITICAL_SECTION_LEAVE();
566 }
567
hri_aes_toggle_CTRLA_CFBS_bf(const void * const hw,hri_aes_ctrla_reg_t mask)568 static inline void hri_aes_toggle_CTRLA_CFBS_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
569 {
570 AES_CRITICAL_SECTION_ENTER();
571 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_CFBS(mask);
572 AES_CRITICAL_SECTION_LEAVE();
573 }
574
hri_aes_read_CTRLA_CFBS_bf(const void * const hw)575 static inline hri_aes_ctrla_reg_t hri_aes_read_CTRLA_CFBS_bf(const void *const hw)
576 {
577 uint32_t tmp;
578 tmp = ((Aes *)hw)->CTRLA.reg;
579 tmp = (tmp & AES_CTRLA_CFBS_Msk) >> AES_CTRLA_CFBS_Pos;
580 return tmp;
581 }
582
hri_aes_set_CTRLA_KEYSIZE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)583 static inline void hri_aes_set_CTRLA_KEYSIZE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
584 {
585 AES_CRITICAL_SECTION_ENTER();
586 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_KEYSIZE(mask);
587 AES_CRITICAL_SECTION_LEAVE();
588 }
589
hri_aes_get_CTRLA_KEYSIZE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)590 static inline hri_aes_ctrla_reg_t hri_aes_get_CTRLA_KEYSIZE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
591 {
592 uint32_t tmp;
593 tmp = ((Aes *)hw)->CTRLA.reg;
594 tmp = (tmp & AES_CTRLA_KEYSIZE(mask)) >> AES_CTRLA_KEYSIZE_Pos;
595 return tmp;
596 }
597
hri_aes_write_CTRLA_KEYSIZE_bf(const void * const hw,hri_aes_ctrla_reg_t data)598 static inline void hri_aes_write_CTRLA_KEYSIZE_bf(const void *const hw, hri_aes_ctrla_reg_t data)
599 {
600 uint32_t tmp;
601 AES_CRITICAL_SECTION_ENTER();
602 tmp = ((Aes *)hw)->CTRLA.reg;
603 tmp &= ~AES_CTRLA_KEYSIZE_Msk;
604 tmp |= AES_CTRLA_KEYSIZE(data);
605 ((Aes *)hw)->CTRLA.reg = tmp;
606 AES_CRITICAL_SECTION_LEAVE();
607 }
608
hri_aes_clear_CTRLA_KEYSIZE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)609 static inline void hri_aes_clear_CTRLA_KEYSIZE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
610 {
611 AES_CRITICAL_SECTION_ENTER();
612 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_KEYSIZE(mask);
613 AES_CRITICAL_SECTION_LEAVE();
614 }
615
hri_aes_toggle_CTRLA_KEYSIZE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)616 static inline void hri_aes_toggle_CTRLA_KEYSIZE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
617 {
618 AES_CRITICAL_SECTION_ENTER();
619 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_KEYSIZE(mask);
620 AES_CRITICAL_SECTION_LEAVE();
621 }
622
hri_aes_read_CTRLA_KEYSIZE_bf(const void * const hw)623 static inline hri_aes_ctrla_reg_t hri_aes_read_CTRLA_KEYSIZE_bf(const void *const hw)
624 {
625 uint32_t tmp;
626 tmp = ((Aes *)hw)->CTRLA.reg;
627 tmp = (tmp & AES_CTRLA_KEYSIZE_Msk) >> AES_CTRLA_KEYSIZE_Pos;
628 return tmp;
629 }
630
hri_aes_set_CTRLA_CTYPE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)631 static inline void hri_aes_set_CTRLA_CTYPE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
632 {
633 AES_CRITICAL_SECTION_ENTER();
634 ((Aes *)hw)->CTRLA.reg |= AES_CTRLA_CTYPE(mask);
635 AES_CRITICAL_SECTION_LEAVE();
636 }
637
hri_aes_get_CTRLA_CTYPE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)638 static inline hri_aes_ctrla_reg_t hri_aes_get_CTRLA_CTYPE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
639 {
640 uint32_t tmp;
641 tmp = ((Aes *)hw)->CTRLA.reg;
642 tmp = (tmp & AES_CTRLA_CTYPE(mask)) >> AES_CTRLA_CTYPE_Pos;
643 return tmp;
644 }
645
hri_aes_write_CTRLA_CTYPE_bf(const void * const hw,hri_aes_ctrla_reg_t data)646 static inline void hri_aes_write_CTRLA_CTYPE_bf(const void *const hw, hri_aes_ctrla_reg_t data)
647 {
648 uint32_t tmp;
649 AES_CRITICAL_SECTION_ENTER();
650 tmp = ((Aes *)hw)->CTRLA.reg;
651 tmp &= ~AES_CTRLA_CTYPE_Msk;
652 tmp |= AES_CTRLA_CTYPE(data);
653 ((Aes *)hw)->CTRLA.reg = tmp;
654 AES_CRITICAL_SECTION_LEAVE();
655 }
656
hri_aes_clear_CTRLA_CTYPE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)657 static inline void hri_aes_clear_CTRLA_CTYPE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
658 {
659 AES_CRITICAL_SECTION_ENTER();
660 ((Aes *)hw)->CTRLA.reg &= ~AES_CTRLA_CTYPE(mask);
661 AES_CRITICAL_SECTION_LEAVE();
662 }
663
hri_aes_toggle_CTRLA_CTYPE_bf(const void * const hw,hri_aes_ctrla_reg_t mask)664 static inline void hri_aes_toggle_CTRLA_CTYPE_bf(const void *const hw, hri_aes_ctrla_reg_t mask)
665 {
666 AES_CRITICAL_SECTION_ENTER();
667 ((Aes *)hw)->CTRLA.reg ^= AES_CTRLA_CTYPE(mask);
668 AES_CRITICAL_SECTION_LEAVE();
669 }
670
hri_aes_read_CTRLA_CTYPE_bf(const void * const hw)671 static inline hri_aes_ctrla_reg_t hri_aes_read_CTRLA_CTYPE_bf(const void *const hw)
672 {
673 uint32_t tmp;
674 tmp = ((Aes *)hw)->CTRLA.reg;
675 tmp = (tmp & AES_CTRLA_CTYPE_Msk) >> AES_CTRLA_CTYPE_Pos;
676 return tmp;
677 }
678
hri_aes_set_CTRLA_reg(const void * const hw,hri_aes_ctrla_reg_t mask)679 static inline void hri_aes_set_CTRLA_reg(const void *const hw, hri_aes_ctrla_reg_t mask)
680 {
681 AES_CRITICAL_SECTION_ENTER();
682 ((Aes *)hw)->CTRLA.reg |= mask;
683 AES_CRITICAL_SECTION_LEAVE();
684 }
685
hri_aes_get_CTRLA_reg(const void * const hw,hri_aes_ctrla_reg_t mask)686 static inline hri_aes_ctrla_reg_t hri_aes_get_CTRLA_reg(const void *const hw, hri_aes_ctrla_reg_t mask)
687 {
688 uint32_t tmp;
689 tmp = ((Aes *)hw)->CTRLA.reg;
690 tmp &= mask;
691 return tmp;
692 }
693
hri_aes_write_CTRLA_reg(const void * const hw,hri_aes_ctrla_reg_t data)694 static inline void hri_aes_write_CTRLA_reg(const void *const hw, hri_aes_ctrla_reg_t data)
695 {
696 AES_CRITICAL_SECTION_ENTER();
697 ((Aes *)hw)->CTRLA.reg = data;
698 AES_CRITICAL_SECTION_LEAVE();
699 }
700
hri_aes_clear_CTRLA_reg(const void * const hw,hri_aes_ctrla_reg_t mask)701 static inline void hri_aes_clear_CTRLA_reg(const void *const hw, hri_aes_ctrla_reg_t mask)
702 {
703 AES_CRITICAL_SECTION_ENTER();
704 ((Aes *)hw)->CTRLA.reg &= ~mask;
705 AES_CRITICAL_SECTION_LEAVE();
706 }
707
hri_aes_toggle_CTRLA_reg(const void * const hw,hri_aes_ctrla_reg_t mask)708 static inline void hri_aes_toggle_CTRLA_reg(const void *const hw, hri_aes_ctrla_reg_t mask)
709 {
710 AES_CRITICAL_SECTION_ENTER();
711 ((Aes *)hw)->CTRLA.reg ^= mask;
712 AES_CRITICAL_SECTION_LEAVE();
713 }
714
hri_aes_read_CTRLA_reg(const void * const hw)715 static inline hri_aes_ctrla_reg_t hri_aes_read_CTRLA_reg(const void *const hw)
716 {
717 return ((Aes *)hw)->CTRLA.reg;
718 }
719
hri_aes_set_CTRLB_START_bit(const void * const hw)720 static inline void hri_aes_set_CTRLB_START_bit(const void *const hw)
721 {
722 AES_CRITICAL_SECTION_ENTER();
723 ((Aes *)hw)->CTRLB.reg |= AES_CTRLB_START;
724 AES_CRITICAL_SECTION_LEAVE();
725 }
726
hri_aes_get_CTRLB_START_bit(const void * const hw)727 static inline bool hri_aes_get_CTRLB_START_bit(const void *const hw)
728 {
729 uint8_t tmp;
730 tmp = ((Aes *)hw)->CTRLB.reg;
731 tmp = (tmp & AES_CTRLB_START) >> AES_CTRLB_START_Pos;
732 return (bool)tmp;
733 }
734
hri_aes_write_CTRLB_START_bit(const void * const hw,bool value)735 static inline void hri_aes_write_CTRLB_START_bit(const void *const hw, bool value)
736 {
737 uint8_t tmp;
738 AES_CRITICAL_SECTION_ENTER();
739 tmp = ((Aes *)hw)->CTRLB.reg;
740 tmp &= ~AES_CTRLB_START;
741 tmp |= value << AES_CTRLB_START_Pos;
742 ((Aes *)hw)->CTRLB.reg = tmp;
743 AES_CRITICAL_SECTION_LEAVE();
744 }
745
hri_aes_clear_CTRLB_START_bit(const void * const hw)746 static inline void hri_aes_clear_CTRLB_START_bit(const void *const hw)
747 {
748 AES_CRITICAL_SECTION_ENTER();
749 ((Aes *)hw)->CTRLB.reg &= ~AES_CTRLB_START;
750 AES_CRITICAL_SECTION_LEAVE();
751 }
752
hri_aes_toggle_CTRLB_START_bit(const void * const hw)753 static inline void hri_aes_toggle_CTRLB_START_bit(const void *const hw)
754 {
755 AES_CRITICAL_SECTION_ENTER();
756 ((Aes *)hw)->CTRLB.reg ^= AES_CTRLB_START;
757 AES_CRITICAL_SECTION_LEAVE();
758 }
759
hri_aes_set_CTRLB_NEWMSG_bit(const void * const hw)760 static inline void hri_aes_set_CTRLB_NEWMSG_bit(const void *const hw)
761 {
762 AES_CRITICAL_SECTION_ENTER();
763 ((Aes *)hw)->CTRLB.reg |= AES_CTRLB_NEWMSG;
764 AES_CRITICAL_SECTION_LEAVE();
765 }
766
hri_aes_get_CTRLB_NEWMSG_bit(const void * const hw)767 static inline bool hri_aes_get_CTRLB_NEWMSG_bit(const void *const hw)
768 {
769 uint8_t tmp;
770 tmp = ((Aes *)hw)->CTRLB.reg;
771 tmp = (tmp & AES_CTRLB_NEWMSG) >> AES_CTRLB_NEWMSG_Pos;
772 return (bool)tmp;
773 }
774
hri_aes_write_CTRLB_NEWMSG_bit(const void * const hw,bool value)775 static inline void hri_aes_write_CTRLB_NEWMSG_bit(const void *const hw, bool value)
776 {
777 uint8_t tmp;
778 AES_CRITICAL_SECTION_ENTER();
779 tmp = ((Aes *)hw)->CTRLB.reg;
780 tmp &= ~AES_CTRLB_NEWMSG;
781 tmp |= value << AES_CTRLB_NEWMSG_Pos;
782 ((Aes *)hw)->CTRLB.reg = tmp;
783 AES_CRITICAL_SECTION_LEAVE();
784 }
785
hri_aes_clear_CTRLB_NEWMSG_bit(const void * const hw)786 static inline void hri_aes_clear_CTRLB_NEWMSG_bit(const void *const hw)
787 {
788 AES_CRITICAL_SECTION_ENTER();
789 ((Aes *)hw)->CTRLB.reg &= ~AES_CTRLB_NEWMSG;
790 AES_CRITICAL_SECTION_LEAVE();
791 }
792
hri_aes_toggle_CTRLB_NEWMSG_bit(const void * const hw)793 static inline void hri_aes_toggle_CTRLB_NEWMSG_bit(const void *const hw)
794 {
795 AES_CRITICAL_SECTION_ENTER();
796 ((Aes *)hw)->CTRLB.reg ^= AES_CTRLB_NEWMSG;
797 AES_CRITICAL_SECTION_LEAVE();
798 }
799
hri_aes_set_CTRLB_EOM_bit(const void * const hw)800 static inline void hri_aes_set_CTRLB_EOM_bit(const void *const hw)
801 {
802 AES_CRITICAL_SECTION_ENTER();
803 ((Aes *)hw)->CTRLB.reg |= AES_CTRLB_EOM;
804 AES_CRITICAL_SECTION_LEAVE();
805 }
806
hri_aes_get_CTRLB_EOM_bit(const void * const hw)807 static inline bool hri_aes_get_CTRLB_EOM_bit(const void *const hw)
808 {
809 uint8_t tmp;
810 tmp = ((Aes *)hw)->CTRLB.reg;
811 tmp = (tmp & AES_CTRLB_EOM) >> AES_CTRLB_EOM_Pos;
812 return (bool)tmp;
813 }
814
hri_aes_write_CTRLB_EOM_bit(const void * const hw,bool value)815 static inline void hri_aes_write_CTRLB_EOM_bit(const void *const hw, bool value)
816 {
817 uint8_t tmp;
818 AES_CRITICAL_SECTION_ENTER();
819 tmp = ((Aes *)hw)->CTRLB.reg;
820 tmp &= ~AES_CTRLB_EOM;
821 tmp |= value << AES_CTRLB_EOM_Pos;
822 ((Aes *)hw)->CTRLB.reg = tmp;
823 AES_CRITICAL_SECTION_LEAVE();
824 }
825
hri_aes_clear_CTRLB_EOM_bit(const void * const hw)826 static inline void hri_aes_clear_CTRLB_EOM_bit(const void *const hw)
827 {
828 AES_CRITICAL_SECTION_ENTER();
829 ((Aes *)hw)->CTRLB.reg &= ~AES_CTRLB_EOM;
830 AES_CRITICAL_SECTION_LEAVE();
831 }
832
hri_aes_toggle_CTRLB_EOM_bit(const void * const hw)833 static inline void hri_aes_toggle_CTRLB_EOM_bit(const void *const hw)
834 {
835 AES_CRITICAL_SECTION_ENTER();
836 ((Aes *)hw)->CTRLB.reg ^= AES_CTRLB_EOM;
837 AES_CRITICAL_SECTION_LEAVE();
838 }
839
hri_aes_set_CTRLB_GFMUL_bit(const void * const hw)840 static inline void hri_aes_set_CTRLB_GFMUL_bit(const void *const hw)
841 {
842 AES_CRITICAL_SECTION_ENTER();
843 ((Aes *)hw)->CTRLB.reg |= AES_CTRLB_GFMUL;
844 AES_CRITICAL_SECTION_LEAVE();
845 }
846
hri_aes_get_CTRLB_GFMUL_bit(const void * const hw)847 static inline bool hri_aes_get_CTRLB_GFMUL_bit(const void *const hw)
848 {
849 uint8_t tmp;
850 tmp = ((Aes *)hw)->CTRLB.reg;
851 tmp = (tmp & AES_CTRLB_GFMUL) >> AES_CTRLB_GFMUL_Pos;
852 return (bool)tmp;
853 }
854
hri_aes_write_CTRLB_GFMUL_bit(const void * const hw,bool value)855 static inline void hri_aes_write_CTRLB_GFMUL_bit(const void *const hw, bool value)
856 {
857 uint8_t tmp;
858 AES_CRITICAL_SECTION_ENTER();
859 tmp = ((Aes *)hw)->CTRLB.reg;
860 tmp &= ~AES_CTRLB_GFMUL;
861 tmp |= value << AES_CTRLB_GFMUL_Pos;
862 ((Aes *)hw)->CTRLB.reg = tmp;
863 AES_CRITICAL_SECTION_LEAVE();
864 }
865
hri_aes_clear_CTRLB_GFMUL_bit(const void * const hw)866 static inline void hri_aes_clear_CTRLB_GFMUL_bit(const void *const hw)
867 {
868 AES_CRITICAL_SECTION_ENTER();
869 ((Aes *)hw)->CTRLB.reg &= ~AES_CTRLB_GFMUL;
870 AES_CRITICAL_SECTION_LEAVE();
871 }
872
hri_aes_toggle_CTRLB_GFMUL_bit(const void * const hw)873 static inline void hri_aes_toggle_CTRLB_GFMUL_bit(const void *const hw)
874 {
875 AES_CRITICAL_SECTION_ENTER();
876 ((Aes *)hw)->CTRLB.reg ^= AES_CTRLB_GFMUL;
877 AES_CRITICAL_SECTION_LEAVE();
878 }
879
hri_aes_set_CTRLB_reg(const void * const hw,hri_aes_ctrlb_reg_t mask)880 static inline void hri_aes_set_CTRLB_reg(const void *const hw, hri_aes_ctrlb_reg_t mask)
881 {
882 AES_CRITICAL_SECTION_ENTER();
883 ((Aes *)hw)->CTRLB.reg |= mask;
884 AES_CRITICAL_SECTION_LEAVE();
885 }
886
hri_aes_get_CTRLB_reg(const void * const hw,hri_aes_ctrlb_reg_t mask)887 static inline hri_aes_ctrlb_reg_t hri_aes_get_CTRLB_reg(const void *const hw, hri_aes_ctrlb_reg_t mask)
888 {
889 uint8_t tmp;
890 tmp = ((Aes *)hw)->CTRLB.reg;
891 tmp &= mask;
892 return tmp;
893 }
894
hri_aes_write_CTRLB_reg(const void * const hw,hri_aes_ctrlb_reg_t data)895 static inline void hri_aes_write_CTRLB_reg(const void *const hw, hri_aes_ctrlb_reg_t data)
896 {
897 AES_CRITICAL_SECTION_ENTER();
898 ((Aes *)hw)->CTRLB.reg = data;
899 AES_CRITICAL_SECTION_LEAVE();
900 }
901
hri_aes_clear_CTRLB_reg(const void * const hw,hri_aes_ctrlb_reg_t mask)902 static inline void hri_aes_clear_CTRLB_reg(const void *const hw, hri_aes_ctrlb_reg_t mask)
903 {
904 AES_CRITICAL_SECTION_ENTER();
905 ((Aes *)hw)->CTRLB.reg &= ~mask;
906 AES_CRITICAL_SECTION_LEAVE();
907 }
908
hri_aes_toggle_CTRLB_reg(const void * const hw,hri_aes_ctrlb_reg_t mask)909 static inline void hri_aes_toggle_CTRLB_reg(const void *const hw, hri_aes_ctrlb_reg_t mask)
910 {
911 AES_CRITICAL_SECTION_ENTER();
912 ((Aes *)hw)->CTRLB.reg ^= mask;
913 AES_CRITICAL_SECTION_LEAVE();
914 }
915
hri_aes_read_CTRLB_reg(const void * const hw)916 static inline hri_aes_ctrlb_reg_t hri_aes_read_CTRLB_reg(const void *const hw)
917 {
918 return ((Aes *)hw)->CTRLB.reg;
919 }
920
hri_aes_set_DATABUFPTR_INDATAPTR_bf(const void * const hw,hri_aes_databufptr_reg_t mask)921 static inline void hri_aes_set_DATABUFPTR_INDATAPTR_bf(const void *const hw, hri_aes_databufptr_reg_t mask)
922 {
923 AES_CRITICAL_SECTION_ENTER();
924 ((Aes *)hw)->DATABUFPTR.reg |= AES_DATABUFPTR_INDATAPTR(mask);
925 AES_CRITICAL_SECTION_LEAVE();
926 }
927
hri_aes_get_DATABUFPTR_INDATAPTR_bf(const void * const hw,hri_aes_databufptr_reg_t mask)928 static inline hri_aes_databufptr_reg_t hri_aes_get_DATABUFPTR_INDATAPTR_bf(const void *const hw,
929 hri_aes_databufptr_reg_t mask)
930 {
931 uint8_t tmp;
932 tmp = ((Aes *)hw)->DATABUFPTR.reg;
933 tmp = (tmp & AES_DATABUFPTR_INDATAPTR(mask)) >> AES_DATABUFPTR_INDATAPTR_Pos;
934 return tmp;
935 }
936
hri_aes_write_DATABUFPTR_INDATAPTR_bf(const void * const hw,hri_aes_databufptr_reg_t data)937 static inline void hri_aes_write_DATABUFPTR_INDATAPTR_bf(const void *const hw, hri_aes_databufptr_reg_t data)
938 {
939 uint8_t tmp;
940 AES_CRITICAL_SECTION_ENTER();
941 tmp = ((Aes *)hw)->DATABUFPTR.reg;
942 tmp &= ~AES_DATABUFPTR_INDATAPTR_Msk;
943 tmp |= AES_DATABUFPTR_INDATAPTR(data);
944 ((Aes *)hw)->DATABUFPTR.reg = tmp;
945 AES_CRITICAL_SECTION_LEAVE();
946 }
947
hri_aes_clear_DATABUFPTR_INDATAPTR_bf(const void * const hw,hri_aes_databufptr_reg_t mask)948 static inline void hri_aes_clear_DATABUFPTR_INDATAPTR_bf(const void *const hw, hri_aes_databufptr_reg_t mask)
949 {
950 AES_CRITICAL_SECTION_ENTER();
951 ((Aes *)hw)->DATABUFPTR.reg &= ~AES_DATABUFPTR_INDATAPTR(mask);
952 AES_CRITICAL_SECTION_LEAVE();
953 }
954
hri_aes_toggle_DATABUFPTR_INDATAPTR_bf(const void * const hw,hri_aes_databufptr_reg_t mask)955 static inline void hri_aes_toggle_DATABUFPTR_INDATAPTR_bf(const void *const hw, hri_aes_databufptr_reg_t mask)
956 {
957 AES_CRITICAL_SECTION_ENTER();
958 ((Aes *)hw)->DATABUFPTR.reg ^= AES_DATABUFPTR_INDATAPTR(mask);
959 AES_CRITICAL_SECTION_LEAVE();
960 }
961
hri_aes_read_DATABUFPTR_INDATAPTR_bf(const void * const hw)962 static inline hri_aes_databufptr_reg_t hri_aes_read_DATABUFPTR_INDATAPTR_bf(const void *const hw)
963 {
964 uint8_t tmp;
965 tmp = ((Aes *)hw)->DATABUFPTR.reg;
966 tmp = (tmp & AES_DATABUFPTR_INDATAPTR_Msk) >> AES_DATABUFPTR_INDATAPTR_Pos;
967 return tmp;
968 }
969
hri_aes_set_DATABUFPTR_reg(const void * const hw,hri_aes_databufptr_reg_t mask)970 static inline void hri_aes_set_DATABUFPTR_reg(const void *const hw, hri_aes_databufptr_reg_t mask)
971 {
972 AES_CRITICAL_SECTION_ENTER();
973 ((Aes *)hw)->DATABUFPTR.reg |= mask;
974 AES_CRITICAL_SECTION_LEAVE();
975 }
976
hri_aes_get_DATABUFPTR_reg(const void * const hw,hri_aes_databufptr_reg_t mask)977 static inline hri_aes_databufptr_reg_t hri_aes_get_DATABUFPTR_reg(const void *const hw, hri_aes_databufptr_reg_t mask)
978 {
979 uint8_t tmp;
980 tmp = ((Aes *)hw)->DATABUFPTR.reg;
981 tmp &= mask;
982 return tmp;
983 }
984
hri_aes_write_DATABUFPTR_reg(const void * const hw,hri_aes_databufptr_reg_t data)985 static inline void hri_aes_write_DATABUFPTR_reg(const void *const hw, hri_aes_databufptr_reg_t data)
986 {
987 AES_CRITICAL_SECTION_ENTER();
988 ((Aes *)hw)->DATABUFPTR.reg = data;
989 AES_CRITICAL_SECTION_LEAVE();
990 }
991
hri_aes_clear_DATABUFPTR_reg(const void * const hw,hri_aes_databufptr_reg_t mask)992 static inline void hri_aes_clear_DATABUFPTR_reg(const void *const hw, hri_aes_databufptr_reg_t mask)
993 {
994 AES_CRITICAL_SECTION_ENTER();
995 ((Aes *)hw)->DATABUFPTR.reg &= ~mask;
996 AES_CRITICAL_SECTION_LEAVE();
997 }
998
hri_aes_toggle_DATABUFPTR_reg(const void * const hw,hri_aes_databufptr_reg_t mask)999 static inline void hri_aes_toggle_DATABUFPTR_reg(const void *const hw, hri_aes_databufptr_reg_t mask)
1000 {
1001 AES_CRITICAL_SECTION_ENTER();
1002 ((Aes *)hw)->DATABUFPTR.reg ^= mask;
1003 AES_CRITICAL_SECTION_LEAVE();
1004 }
1005
hri_aes_read_DATABUFPTR_reg(const void * const hw)1006 static inline hri_aes_databufptr_reg_t hri_aes_read_DATABUFPTR_reg(const void *const hw)
1007 {
1008 return ((Aes *)hw)->DATABUFPTR.reg;
1009 }
1010
hri_aes_set_INDATA_reg(const void * const hw,hri_aes_indata_reg_t mask)1011 static inline void hri_aes_set_INDATA_reg(const void *const hw, hri_aes_indata_reg_t mask)
1012 {
1013 AES_CRITICAL_SECTION_ENTER();
1014 ((Aes *)hw)->INDATA.reg |= mask;
1015 AES_CRITICAL_SECTION_LEAVE();
1016 }
1017
hri_aes_get_INDATA_reg(const void * const hw,hri_aes_indata_reg_t mask)1018 static inline hri_aes_indata_reg_t hri_aes_get_INDATA_reg(const void *const hw, hri_aes_indata_reg_t mask)
1019 {
1020 uint32_t tmp;
1021 tmp = ((Aes *)hw)->INDATA.reg;
1022 tmp &= mask;
1023 return tmp;
1024 }
1025
hri_aes_write_INDATA_reg(const void * const hw,hri_aes_indata_reg_t data)1026 static inline void hri_aes_write_INDATA_reg(const void *const hw, hri_aes_indata_reg_t data)
1027 {
1028 AES_CRITICAL_SECTION_ENTER();
1029 ((Aes *)hw)->INDATA.reg = data;
1030 AES_CRITICAL_SECTION_LEAVE();
1031 }
1032
hri_aes_clear_INDATA_reg(const void * const hw,hri_aes_indata_reg_t mask)1033 static inline void hri_aes_clear_INDATA_reg(const void *const hw, hri_aes_indata_reg_t mask)
1034 {
1035 AES_CRITICAL_SECTION_ENTER();
1036 ((Aes *)hw)->INDATA.reg &= ~mask;
1037 AES_CRITICAL_SECTION_LEAVE();
1038 }
1039
hri_aes_toggle_INDATA_reg(const void * const hw,hri_aes_indata_reg_t mask)1040 static inline void hri_aes_toggle_INDATA_reg(const void *const hw, hri_aes_indata_reg_t mask)
1041 {
1042 AES_CRITICAL_SECTION_ENTER();
1043 ((Aes *)hw)->INDATA.reg ^= mask;
1044 AES_CRITICAL_SECTION_LEAVE();
1045 }
1046
hri_aes_read_INDATA_reg(const void * const hw)1047 static inline hri_aes_indata_reg_t hri_aes_read_INDATA_reg(const void *const hw)
1048 {
1049 return ((Aes *)hw)->INDATA.reg;
1050 }
1051
hri_aes_set_HASHKEY_reg(const void * const hw,uint8_t index,hri_aes_hashkey_reg_t mask)1052 static inline void hri_aes_set_HASHKEY_reg(const void *const hw, uint8_t index, hri_aes_hashkey_reg_t mask)
1053 {
1054 AES_CRITICAL_SECTION_ENTER();
1055 ((Aes *)hw)->HASHKEY[index].reg |= mask;
1056 AES_CRITICAL_SECTION_LEAVE();
1057 }
1058
hri_aes_get_HASHKEY_reg(const void * const hw,uint8_t index,hri_aes_hashkey_reg_t mask)1059 static inline hri_aes_hashkey_reg_t hri_aes_get_HASHKEY_reg(const void *const hw, uint8_t index,
1060 hri_aes_hashkey_reg_t mask)
1061 {
1062 uint32_t tmp;
1063 tmp = ((Aes *)hw)->HASHKEY[index].reg;
1064 tmp &= mask;
1065 return tmp;
1066 }
1067
hri_aes_write_HASHKEY_reg(const void * const hw,uint8_t index,hri_aes_hashkey_reg_t data)1068 static inline void hri_aes_write_HASHKEY_reg(const void *const hw, uint8_t index, hri_aes_hashkey_reg_t data)
1069 {
1070 AES_CRITICAL_SECTION_ENTER();
1071 ((Aes *)hw)->HASHKEY[index].reg = data;
1072 AES_CRITICAL_SECTION_LEAVE();
1073 }
1074
hri_aes_clear_HASHKEY_reg(const void * const hw,uint8_t index,hri_aes_hashkey_reg_t mask)1075 static inline void hri_aes_clear_HASHKEY_reg(const void *const hw, uint8_t index, hri_aes_hashkey_reg_t mask)
1076 {
1077 AES_CRITICAL_SECTION_ENTER();
1078 ((Aes *)hw)->HASHKEY[index].reg &= ~mask;
1079 AES_CRITICAL_SECTION_LEAVE();
1080 }
1081
hri_aes_toggle_HASHKEY_reg(const void * const hw,uint8_t index,hri_aes_hashkey_reg_t mask)1082 static inline void hri_aes_toggle_HASHKEY_reg(const void *const hw, uint8_t index, hri_aes_hashkey_reg_t mask)
1083 {
1084 AES_CRITICAL_SECTION_ENTER();
1085 ((Aes *)hw)->HASHKEY[index].reg ^= mask;
1086 AES_CRITICAL_SECTION_LEAVE();
1087 }
1088
hri_aes_read_HASHKEY_reg(const void * const hw,uint8_t index)1089 static inline hri_aes_hashkey_reg_t hri_aes_read_HASHKEY_reg(const void *const hw, uint8_t index)
1090 {
1091 return ((Aes *)hw)->HASHKEY[index].reg;
1092 }
1093
hri_aes_set_GHASH_reg(const void * const hw,uint8_t index,hri_aes_ghash_reg_t mask)1094 static inline void hri_aes_set_GHASH_reg(const void *const hw, uint8_t index, hri_aes_ghash_reg_t mask)
1095 {
1096 AES_CRITICAL_SECTION_ENTER();
1097 ((Aes *)hw)->GHASH[index].reg |= mask;
1098 AES_CRITICAL_SECTION_LEAVE();
1099 }
1100
hri_aes_get_GHASH_reg(const void * const hw,uint8_t index,hri_aes_ghash_reg_t mask)1101 static inline hri_aes_ghash_reg_t hri_aes_get_GHASH_reg(const void *const hw, uint8_t index, hri_aes_ghash_reg_t mask)
1102 {
1103 uint32_t tmp;
1104 tmp = ((Aes *)hw)->GHASH[index].reg;
1105 tmp &= mask;
1106 return tmp;
1107 }
1108
hri_aes_write_GHASH_reg(const void * const hw,uint8_t index,hri_aes_ghash_reg_t data)1109 static inline void hri_aes_write_GHASH_reg(const void *const hw, uint8_t index, hri_aes_ghash_reg_t data)
1110 {
1111 AES_CRITICAL_SECTION_ENTER();
1112 ((Aes *)hw)->GHASH[index].reg = data;
1113 AES_CRITICAL_SECTION_LEAVE();
1114 }
1115
hri_aes_clear_GHASH_reg(const void * const hw,uint8_t index,hri_aes_ghash_reg_t mask)1116 static inline void hri_aes_clear_GHASH_reg(const void *const hw, uint8_t index, hri_aes_ghash_reg_t mask)
1117 {
1118 AES_CRITICAL_SECTION_ENTER();
1119 ((Aes *)hw)->GHASH[index].reg &= ~mask;
1120 AES_CRITICAL_SECTION_LEAVE();
1121 }
1122
hri_aes_toggle_GHASH_reg(const void * const hw,uint8_t index,hri_aes_ghash_reg_t mask)1123 static inline void hri_aes_toggle_GHASH_reg(const void *const hw, uint8_t index, hri_aes_ghash_reg_t mask)
1124 {
1125 AES_CRITICAL_SECTION_ENTER();
1126 ((Aes *)hw)->GHASH[index].reg ^= mask;
1127 AES_CRITICAL_SECTION_LEAVE();
1128 }
1129
hri_aes_read_GHASH_reg(const void * const hw,uint8_t index)1130 static inline hri_aes_ghash_reg_t hri_aes_read_GHASH_reg(const void *const hw, uint8_t index)
1131 {
1132 return ((Aes *)hw)->GHASH[index].reg;
1133 }
1134
hri_aes_set_CIPLEN_reg(const void * const hw,hri_aes_ciplen_reg_t mask)1135 static inline void hri_aes_set_CIPLEN_reg(const void *const hw, hri_aes_ciplen_reg_t mask)
1136 {
1137 AES_CRITICAL_SECTION_ENTER();
1138 ((Aes *)hw)->CIPLEN.reg |= mask;
1139 AES_CRITICAL_SECTION_LEAVE();
1140 }
1141
hri_aes_get_CIPLEN_reg(const void * const hw,hri_aes_ciplen_reg_t mask)1142 static inline hri_aes_ciplen_reg_t hri_aes_get_CIPLEN_reg(const void *const hw, hri_aes_ciplen_reg_t mask)
1143 {
1144 uint32_t tmp;
1145 tmp = ((Aes *)hw)->CIPLEN.reg;
1146 tmp &= mask;
1147 return tmp;
1148 }
1149
hri_aes_write_CIPLEN_reg(const void * const hw,hri_aes_ciplen_reg_t data)1150 static inline void hri_aes_write_CIPLEN_reg(const void *const hw, hri_aes_ciplen_reg_t data)
1151 {
1152 AES_CRITICAL_SECTION_ENTER();
1153 ((Aes *)hw)->CIPLEN.reg = data;
1154 AES_CRITICAL_SECTION_LEAVE();
1155 }
1156
hri_aes_clear_CIPLEN_reg(const void * const hw,hri_aes_ciplen_reg_t mask)1157 static inline void hri_aes_clear_CIPLEN_reg(const void *const hw, hri_aes_ciplen_reg_t mask)
1158 {
1159 AES_CRITICAL_SECTION_ENTER();
1160 ((Aes *)hw)->CIPLEN.reg &= ~mask;
1161 AES_CRITICAL_SECTION_LEAVE();
1162 }
1163
hri_aes_toggle_CIPLEN_reg(const void * const hw,hri_aes_ciplen_reg_t mask)1164 static inline void hri_aes_toggle_CIPLEN_reg(const void *const hw, hri_aes_ciplen_reg_t mask)
1165 {
1166 AES_CRITICAL_SECTION_ENTER();
1167 ((Aes *)hw)->CIPLEN.reg ^= mask;
1168 AES_CRITICAL_SECTION_LEAVE();
1169 }
1170
hri_aes_read_CIPLEN_reg(const void * const hw)1171 static inline hri_aes_ciplen_reg_t hri_aes_read_CIPLEN_reg(const void *const hw)
1172 {
1173 return ((Aes *)hw)->CIPLEN.reg;
1174 }
1175
hri_aes_set_RANDSEED_reg(const void * const hw,hri_aes_randseed_reg_t mask)1176 static inline void hri_aes_set_RANDSEED_reg(const void *const hw, hri_aes_randseed_reg_t mask)
1177 {
1178 AES_CRITICAL_SECTION_ENTER();
1179 ((Aes *)hw)->RANDSEED.reg |= mask;
1180 AES_CRITICAL_SECTION_LEAVE();
1181 }
1182
hri_aes_get_RANDSEED_reg(const void * const hw,hri_aes_randseed_reg_t mask)1183 static inline hri_aes_randseed_reg_t hri_aes_get_RANDSEED_reg(const void *const hw, hri_aes_randseed_reg_t mask)
1184 {
1185 uint32_t tmp;
1186 tmp = ((Aes *)hw)->RANDSEED.reg;
1187 tmp &= mask;
1188 return tmp;
1189 }
1190
hri_aes_write_RANDSEED_reg(const void * const hw,hri_aes_randseed_reg_t data)1191 static inline void hri_aes_write_RANDSEED_reg(const void *const hw, hri_aes_randseed_reg_t data)
1192 {
1193 AES_CRITICAL_SECTION_ENTER();
1194 ((Aes *)hw)->RANDSEED.reg = data;
1195 AES_CRITICAL_SECTION_LEAVE();
1196 }
1197
hri_aes_clear_RANDSEED_reg(const void * const hw,hri_aes_randseed_reg_t mask)1198 static inline void hri_aes_clear_RANDSEED_reg(const void *const hw, hri_aes_randseed_reg_t mask)
1199 {
1200 AES_CRITICAL_SECTION_ENTER();
1201 ((Aes *)hw)->RANDSEED.reg &= ~mask;
1202 AES_CRITICAL_SECTION_LEAVE();
1203 }
1204
hri_aes_toggle_RANDSEED_reg(const void * const hw,hri_aes_randseed_reg_t mask)1205 static inline void hri_aes_toggle_RANDSEED_reg(const void *const hw, hri_aes_randseed_reg_t mask)
1206 {
1207 AES_CRITICAL_SECTION_ENTER();
1208 ((Aes *)hw)->RANDSEED.reg ^= mask;
1209 AES_CRITICAL_SECTION_LEAVE();
1210 }
1211
hri_aes_read_RANDSEED_reg(const void * const hw)1212 static inline hri_aes_randseed_reg_t hri_aes_read_RANDSEED_reg(const void *const hw)
1213 {
1214 return ((Aes *)hw)->RANDSEED.reg;
1215 }
1216
1217 #ifdef __cplusplus
1218 }
1219 #endif
1220
1221 #endif /* _HRI_AES_L21_H_INCLUDED */
1222 #endif /* _SAML21_AES_COMPONENT_ */
1223