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