atsamd51g/dmac/
crcctrl.rs

1#[doc = "Register `CRCCTRL` reader"]
2pub type R = crate::R<CrcctrlSpec>;
3#[doc = "Register `CRCCTRL` writer"]
4pub type W = crate::W<CrcctrlSpec>;
5#[doc = "CRC Beat Size\n\nValue on reset: 0"]
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7#[repr(u8)]
8pub enum Crcbeatsizeselect {
9    #[doc = "0: 8-bit bus transfer"]
10    Byte = 0,
11    #[doc = "1: 16-bit bus transfer"]
12    Hword = 1,
13    #[doc = "2: 32-bit bus transfer"]
14    Word = 2,
15}
16impl From<Crcbeatsizeselect> for u8 {
17    #[inline(always)]
18    fn from(variant: Crcbeatsizeselect) -> Self {
19        variant as _
20    }
21}
22impl crate::FieldSpec for Crcbeatsizeselect {
23    type Ux = u8;
24}
25impl crate::IsEnum for Crcbeatsizeselect {}
26#[doc = "Field `CRCBEATSIZE` reader - CRC Beat Size"]
27pub type CrcbeatsizeR = crate::FieldReader<Crcbeatsizeselect>;
28impl CrcbeatsizeR {
29    #[doc = "Get enumerated values variant"]
30    #[inline(always)]
31    pub const fn variant(&self) -> Option<Crcbeatsizeselect> {
32        match self.bits {
33            0 => Some(Crcbeatsizeselect::Byte),
34            1 => Some(Crcbeatsizeselect::Hword),
35            2 => Some(Crcbeatsizeselect::Word),
36            _ => None,
37        }
38    }
39    #[doc = "8-bit bus transfer"]
40    #[inline(always)]
41    pub fn is_byte(&self) -> bool {
42        *self == Crcbeatsizeselect::Byte
43    }
44    #[doc = "16-bit bus transfer"]
45    #[inline(always)]
46    pub fn is_hword(&self) -> bool {
47        *self == Crcbeatsizeselect::Hword
48    }
49    #[doc = "32-bit bus transfer"]
50    #[inline(always)]
51    pub fn is_word(&self) -> bool {
52        *self == Crcbeatsizeselect::Word
53    }
54}
55#[doc = "Field `CRCBEATSIZE` writer - CRC Beat Size"]
56pub type CrcbeatsizeW<'a, REG> = crate::FieldWriter<'a, REG, 2, Crcbeatsizeselect>;
57impl<'a, REG> CrcbeatsizeW<'a, REG>
58where
59    REG: crate::Writable + crate::RegisterSpec,
60    REG::Ux: From<u8>,
61{
62    #[doc = "8-bit bus transfer"]
63    #[inline(always)]
64    pub fn byte(self) -> &'a mut crate::W<REG> {
65        self.variant(Crcbeatsizeselect::Byte)
66    }
67    #[doc = "16-bit bus transfer"]
68    #[inline(always)]
69    pub fn hword(self) -> &'a mut crate::W<REG> {
70        self.variant(Crcbeatsizeselect::Hword)
71    }
72    #[doc = "32-bit bus transfer"]
73    #[inline(always)]
74    pub fn word(self) -> &'a mut crate::W<REG> {
75        self.variant(Crcbeatsizeselect::Word)
76    }
77}
78#[doc = "CRC Polynomial Type\n\nValue on reset: 0"]
79#[derive(Clone, Copy, Debug, PartialEq, Eq)]
80#[repr(u8)]
81pub enum Crcpolyselect {
82    #[doc = "0: CRC-16 (CRC-CCITT)"]
83    Crc16 = 0,
84    #[doc = "1: CRC32 (IEEE 802.3)"]
85    Crc32 = 1,
86}
87impl From<Crcpolyselect> for u8 {
88    #[inline(always)]
89    fn from(variant: Crcpolyselect) -> Self {
90        variant as _
91    }
92}
93impl crate::FieldSpec for Crcpolyselect {
94    type Ux = u8;
95}
96impl crate::IsEnum for Crcpolyselect {}
97#[doc = "Field `CRCPOLY` reader - CRC Polynomial Type"]
98pub type CrcpolyR = crate::FieldReader<Crcpolyselect>;
99impl CrcpolyR {
100    #[doc = "Get enumerated values variant"]
101    #[inline(always)]
102    pub const fn variant(&self) -> Option<Crcpolyselect> {
103        match self.bits {
104            0 => Some(Crcpolyselect::Crc16),
105            1 => Some(Crcpolyselect::Crc32),
106            _ => None,
107        }
108    }
109    #[doc = "CRC-16 (CRC-CCITT)"]
110    #[inline(always)]
111    pub fn is_crc16(&self) -> bool {
112        *self == Crcpolyselect::Crc16
113    }
114    #[doc = "CRC32 (IEEE 802.3)"]
115    #[inline(always)]
116    pub fn is_crc32(&self) -> bool {
117        *self == Crcpolyselect::Crc32
118    }
119}
120#[doc = "Field `CRCPOLY` writer - CRC Polynomial Type"]
121pub type CrcpolyW<'a, REG> = crate::FieldWriter<'a, REG, 2, Crcpolyselect>;
122impl<'a, REG> CrcpolyW<'a, REG>
123where
124    REG: crate::Writable + crate::RegisterSpec,
125    REG::Ux: From<u8>,
126{
127    #[doc = "CRC-16 (CRC-CCITT)"]
128    #[inline(always)]
129    pub fn crc16(self) -> &'a mut crate::W<REG> {
130        self.variant(Crcpolyselect::Crc16)
131    }
132    #[doc = "CRC32 (IEEE 802.3)"]
133    #[inline(always)]
134    pub fn crc32(self) -> &'a mut crate::W<REG> {
135        self.variant(Crcpolyselect::Crc32)
136    }
137}
138#[doc = "CRC Input Source\n\nValue on reset: 0"]
139#[derive(Clone, Copy, Debug, PartialEq, Eq)]
140#[repr(u8)]
141pub enum Crcsrcselect {
142    #[doc = "0: CRC Disabled"]
143    Disable = 0,
144    #[doc = "1: I/O interface"]
145    Io = 1,
146    #[doc = "32: DMA Channel 0"]
147    Chn0 = 32,
148    #[doc = "33: DMA Channel 1"]
149    Chn1 = 33,
150    #[doc = "34: DMA Channel 2"]
151    Chn2 = 34,
152    #[doc = "35: DMA Channel 3"]
153    Chn3 = 35,
154    #[doc = "36: DMA Channel 4"]
155    Chn4 = 36,
156    #[doc = "37: DMA Channel 5"]
157    Chn5 = 37,
158    #[doc = "38: DMA Channel 6"]
159    Chn6 = 38,
160    #[doc = "39: DMA Channel 7"]
161    Chn7 = 39,
162    #[doc = "40: DMA Channel 8"]
163    Chn8 = 40,
164    #[doc = "41: DMA Channel 9"]
165    Chn9 = 41,
166    #[doc = "42: DMA Channel 10"]
167    Chn10 = 42,
168    #[doc = "43: DMA Channel 11"]
169    Chn11 = 43,
170    #[doc = "44: DMA Channel 12"]
171    Chn12 = 44,
172    #[doc = "45: DMA Channel 13"]
173    Chn13 = 45,
174    #[doc = "46: DMA Channel 14"]
175    Chn14 = 46,
176    #[doc = "47: DMA Channel 15"]
177    Chn15 = 47,
178    #[doc = "48: DMA Channel 16"]
179    Chn16 = 48,
180    #[doc = "49: DMA Channel 17"]
181    Chn17 = 49,
182    #[doc = "50: DMA Channel 18"]
183    Chn18 = 50,
184    #[doc = "51: DMA Channel 19"]
185    Chn19 = 51,
186    #[doc = "52: DMA Channel 20"]
187    Chn20 = 52,
188    #[doc = "53: DMA Channel 21"]
189    Chn21 = 53,
190    #[doc = "54: DMA Channel 22"]
191    Chn22 = 54,
192    #[doc = "55: DMA Channel 23"]
193    Chn23 = 55,
194    #[doc = "56: DMA Channel 24"]
195    Chn24 = 56,
196    #[doc = "57: DMA Channel 25"]
197    Chn25 = 57,
198    #[doc = "58: DMA Channel 26"]
199    Chn26 = 58,
200    #[doc = "59: DMA Channel 27"]
201    Chn27 = 59,
202    #[doc = "60: DMA Channel 28"]
203    Chn28 = 60,
204    #[doc = "61: DMA Channel 29"]
205    Chn29 = 61,
206    #[doc = "62: DMA Channel 30"]
207    Chn30 = 62,
208    #[doc = "63: DMA Channel 31"]
209    Chn31 = 63,
210}
211impl From<Crcsrcselect> for u8 {
212    #[inline(always)]
213    fn from(variant: Crcsrcselect) -> Self {
214        variant as _
215    }
216}
217impl crate::FieldSpec for Crcsrcselect {
218    type Ux = u8;
219}
220impl crate::IsEnum for Crcsrcselect {}
221#[doc = "Field `CRCSRC` reader - CRC Input Source"]
222pub type CrcsrcR = crate::FieldReader<Crcsrcselect>;
223impl CrcsrcR {
224    #[doc = "Get enumerated values variant"]
225    #[inline(always)]
226    pub const fn variant(&self) -> Option<Crcsrcselect> {
227        match self.bits {
228            0 => Some(Crcsrcselect::Disable),
229            1 => Some(Crcsrcselect::Io),
230            32 => Some(Crcsrcselect::Chn0),
231            33 => Some(Crcsrcselect::Chn1),
232            34 => Some(Crcsrcselect::Chn2),
233            35 => Some(Crcsrcselect::Chn3),
234            36 => Some(Crcsrcselect::Chn4),
235            37 => Some(Crcsrcselect::Chn5),
236            38 => Some(Crcsrcselect::Chn6),
237            39 => Some(Crcsrcselect::Chn7),
238            40 => Some(Crcsrcselect::Chn8),
239            41 => Some(Crcsrcselect::Chn9),
240            42 => Some(Crcsrcselect::Chn10),
241            43 => Some(Crcsrcselect::Chn11),
242            44 => Some(Crcsrcselect::Chn12),
243            45 => Some(Crcsrcselect::Chn13),
244            46 => Some(Crcsrcselect::Chn14),
245            47 => Some(Crcsrcselect::Chn15),
246            48 => Some(Crcsrcselect::Chn16),
247            49 => Some(Crcsrcselect::Chn17),
248            50 => Some(Crcsrcselect::Chn18),
249            51 => Some(Crcsrcselect::Chn19),
250            52 => Some(Crcsrcselect::Chn20),
251            53 => Some(Crcsrcselect::Chn21),
252            54 => Some(Crcsrcselect::Chn22),
253            55 => Some(Crcsrcselect::Chn23),
254            56 => Some(Crcsrcselect::Chn24),
255            57 => Some(Crcsrcselect::Chn25),
256            58 => Some(Crcsrcselect::Chn26),
257            59 => Some(Crcsrcselect::Chn27),
258            60 => Some(Crcsrcselect::Chn28),
259            61 => Some(Crcsrcselect::Chn29),
260            62 => Some(Crcsrcselect::Chn30),
261            63 => Some(Crcsrcselect::Chn31),
262            _ => None,
263        }
264    }
265    #[doc = "CRC Disabled"]
266    #[inline(always)]
267    pub fn is_disable(&self) -> bool {
268        *self == Crcsrcselect::Disable
269    }
270    #[doc = "I/O interface"]
271    #[inline(always)]
272    pub fn is_io(&self) -> bool {
273        *self == Crcsrcselect::Io
274    }
275    #[doc = "DMA Channel 0"]
276    #[inline(always)]
277    pub fn is_chn0(&self) -> bool {
278        *self == Crcsrcselect::Chn0
279    }
280    #[doc = "DMA Channel 1"]
281    #[inline(always)]
282    pub fn is_chn1(&self) -> bool {
283        *self == Crcsrcselect::Chn1
284    }
285    #[doc = "DMA Channel 2"]
286    #[inline(always)]
287    pub fn is_chn2(&self) -> bool {
288        *self == Crcsrcselect::Chn2
289    }
290    #[doc = "DMA Channel 3"]
291    #[inline(always)]
292    pub fn is_chn3(&self) -> bool {
293        *self == Crcsrcselect::Chn3
294    }
295    #[doc = "DMA Channel 4"]
296    #[inline(always)]
297    pub fn is_chn4(&self) -> bool {
298        *self == Crcsrcselect::Chn4
299    }
300    #[doc = "DMA Channel 5"]
301    #[inline(always)]
302    pub fn is_chn5(&self) -> bool {
303        *self == Crcsrcselect::Chn5
304    }
305    #[doc = "DMA Channel 6"]
306    #[inline(always)]
307    pub fn is_chn6(&self) -> bool {
308        *self == Crcsrcselect::Chn6
309    }
310    #[doc = "DMA Channel 7"]
311    #[inline(always)]
312    pub fn is_chn7(&self) -> bool {
313        *self == Crcsrcselect::Chn7
314    }
315    #[doc = "DMA Channel 8"]
316    #[inline(always)]
317    pub fn is_chn8(&self) -> bool {
318        *self == Crcsrcselect::Chn8
319    }
320    #[doc = "DMA Channel 9"]
321    #[inline(always)]
322    pub fn is_chn9(&self) -> bool {
323        *self == Crcsrcselect::Chn9
324    }
325    #[doc = "DMA Channel 10"]
326    #[inline(always)]
327    pub fn is_chn10(&self) -> bool {
328        *self == Crcsrcselect::Chn10
329    }
330    #[doc = "DMA Channel 11"]
331    #[inline(always)]
332    pub fn is_chn11(&self) -> bool {
333        *self == Crcsrcselect::Chn11
334    }
335    #[doc = "DMA Channel 12"]
336    #[inline(always)]
337    pub fn is_chn12(&self) -> bool {
338        *self == Crcsrcselect::Chn12
339    }
340    #[doc = "DMA Channel 13"]
341    #[inline(always)]
342    pub fn is_chn13(&self) -> bool {
343        *self == Crcsrcselect::Chn13
344    }
345    #[doc = "DMA Channel 14"]
346    #[inline(always)]
347    pub fn is_chn14(&self) -> bool {
348        *self == Crcsrcselect::Chn14
349    }
350    #[doc = "DMA Channel 15"]
351    #[inline(always)]
352    pub fn is_chn15(&self) -> bool {
353        *self == Crcsrcselect::Chn15
354    }
355    #[doc = "DMA Channel 16"]
356    #[inline(always)]
357    pub fn is_chn16(&self) -> bool {
358        *self == Crcsrcselect::Chn16
359    }
360    #[doc = "DMA Channel 17"]
361    #[inline(always)]
362    pub fn is_chn17(&self) -> bool {
363        *self == Crcsrcselect::Chn17
364    }
365    #[doc = "DMA Channel 18"]
366    #[inline(always)]
367    pub fn is_chn18(&self) -> bool {
368        *self == Crcsrcselect::Chn18
369    }
370    #[doc = "DMA Channel 19"]
371    #[inline(always)]
372    pub fn is_chn19(&self) -> bool {
373        *self == Crcsrcselect::Chn19
374    }
375    #[doc = "DMA Channel 20"]
376    #[inline(always)]
377    pub fn is_chn20(&self) -> bool {
378        *self == Crcsrcselect::Chn20
379    }
380    #[doc = "DMA Channel 21"]
381    #[inline(always)]
382    pub fn is_chn21(&self) -> bool {
383        *self == Crcsrcselect::Chn21
384    }
385    #[doc = "DMA Channel 22"]
386    #[inline(always)]
387    pub fn is_chn22(&self) -> bool {
388        *self == Crcsrcselect::Chn22
389    }
390    #[doc = "DMA Channel 23"]
391    #[inline(always)]
392    pub fn is_chn23(&self) -> bool {
393        *self == Crcsrcselect::Chn23
394    }
395    #[doc = "DMA Channel 24"]
396    #[inline(always)]
397    pub fn is_chn24(&self) -> bool {
398        *self == Crcsrcselect::Chn24
399    }
400    #[doc = "DMA Channel 25"]
401    #[inline(always)]
402    pub fn is_chn25(&self) -> bool {
403        *self == Crcsrcselect::Chn25
404    }
405    #[doc = "DMA Channel 26"]
406    #[inline(always)]
407    pub fn is_chn26(&self) -> bool {
408        *self == Crcsrcselect::Chn26
409    }
410    #[doc = "DMA Channel 27"]
411    #[inline(always)]
412    pub fn is_chn27(&self) -> bool {
413        *self == Crcsrcselect::Chn27
414    }
415    #[doc = "DMA Channel 28"]
416    #[inline(always)]
417    pub fn is_chn28(&self) -> bool {
418        *self == Crcsrcselect::Chn28
419    }
420    #[doc = "DMA Channel 29"]
421    #[inline(always)]
422    pub fn is_chn29(&self) -> bool {
423        *self == Crcsrcselect::Chn29
424    }
425    #[doc = "DMA Channel 30"]
426    #[inline(always)]
427    pub fn is_chn30(&self) -> bool {
428        *self == Crcsrcselect::Chn30
429    }
430    #[doc = "DMA Channel 31"]
431    #[inline(always)]
432    pub fn is_chn31(&self) -> bool {
433        *self == Crcsrcselect::Chn31
434    }
435}
436#[doc = "Field `CRCSRC` writer - CRC Input Source"]
437pub type CrcsrcW<'a, REG> = crate::FieldWriter<'a, REG, 6, Crcsrcselect>;
438impl<'a, REG> CrcsrcW<'a, REG>
439where
440    REG: crate::Writable + crate::RegisterSpec,
441    REG::Ux: From<u8>,
442{
443    #[doc = "CRC Disabled"]
444    #[inline(always)]
445    pub fn disable(self) -> &'a mut crate::W<REG> {
446        self.variant(Crcsrcselect::Disable)
447    }
448    #[doc = "I/O interface"]
449    #[inline(always)]
450    pub fn io(self) -> &'a mut crate::W<REG> {
451        self.variant(Crcsrcselect::Io)
452    }
453    #[doc = "DMA Channel 0"]
454    #[inline(always)]
455    pub fn chn0(self) -> &'a mut crate::W<REG> {
456        self.variant(Crcsrcselect::Chn0)
457    }
458    #[doc = "DMA Channel 1"]
459    #[inline(always)]
460    pub fn chn1(self) -> &'a mut crate::W<REG> {
461        self.variant(Crcsrcselect::Chn1)
462    }
463    #[doc = "DMA Channel 2"]
464    #[inline(always)]
465    pub fn chn2(self) -> &'a mut crate::W<REG> {
466        self.variant(Crcsrcselect::Chn2)
467    }
468    #[doc = "DMA Channel 3"]
469    #[inline(always)]
470    pub fn chn3(self) -> &'a mut crate::W<REG> {
471        self.variant(Crcsrcselect::Chn3)
472    }
473    #[doc = "DMA Channel 4"]
474    #[inline(always)]
475    pub fn chn4(self) -> &'a mut crate::W<REG> {
476        self.variant(Crcsrcselect::Chn4)
477    }
478    #[doc = "DMA Channel 5"]
479    #[inline(always)]
480    pub fn chn5(self) -> &'a mut crate::W<REG> {
481        self.variant(Crcsrcselect::Chn5)
482    }
483    #[doc = "DMA Channel 6"]
484    #[inline(always)]
485    pub fn chn6(self) -> &'a mut crate::W<REG> {
486        self.variant(Crcsrcselect::Chn6)
487    }
488    #[doc = "DMA Channel 7"]
489    #[inline(always)]
490    pub fn chn7(self) -> &'a mut crate::W<REG> {
491        self.variant(Crcsrcselect::Chn7)
492    }
493    #[doc = "DMA Channel 8"]
494    #[inline(always)]
495    pub fn chn8(self) -> &'a mut crate::W<REG> {
496        self.variant(Crcsrcselect::Chn8)
497    }
498    #[doc = "DMA Channel 9"]
499    #[inline(always)]
500    pub fn chn9(self) -> &'a mut crate::W<REG> {
501        self.variant(Crcsrcselect::Chn9)
502    }
503    #[doc = "DMA Channel 10"]
504    #[inline(always)]
505    pub fn chn10(self) -> &'a mut crate::W<REG> {
506        self.variant(Crcsrcselect::Chn10)
507    }
508    #[doc = "DMA Channel 11"]
509    #[inline(always)]
510    pub fn chn11(self) -> &'a mut crate::W<REG> {
511        self.variant(Crcsrcselect::Chn11)
512    }
513    #[doc = "DMA Channel 12"]
514    #[inline(always)]
515    pub fn chn12(self) -> &'a mut crate::W<REG> {
516        self.variant(Crcsrcselect::Chn12)
517    }
518    #[doc = "DMA Channel 13"]
519    #[inline(always)]
520    pub fn chn13(self) -> &'a mut crate::W<REG> {
521        self.variant(Crcsrcselect::Chn13)
522    }
523    #[doc = "DMA Channel 14"]
524    #[inline(always)]
525    pub fn chn14(self) -> &'a mut crate::W<REG> {
526        self.variant(Crcsrcselect::Chn14)
527    }
528    #[doc = "DMA Channel 15"]
529    #[inline(always)]
530    pub fn chn15(self) -> &'a mut crate::W<REG> {
531        self.variant(Crcsrcselect::Chn15)
532    }
533    #[doc = "DMA Channel 16"]
534    #[inline(always)]
535    pub fn chn16(self) -> &'a mut crate::W<REG> {
536        self.variant(Crcsrcselect::Chn16)
537    }
538    #[doc = "DMA Channel 17"]
539    #[inline(always)]
540    pub fn chn17(self) -> &'a mut crate::W<REG> {
541        self.variant(Crcsrcselect::Chn17)
542    }
543    #[doc = "DMA Channel 18"]
544    #[inline(always)]
545    pub fn chn18(self) -> &'a mut crate::W<REG> {
546        self.variant(Crcsrcselect::Chn18)
547    }
548    #[doc = "DMA Channel 19"]
549    #[inline(always)]
550    pub fn chn19(self) -> &'a mut crate::W<REG> {
551        self.variant(Crcsrcselect::Chn19)
552    }
553    #[doc = "DMA Channel 20"]
554    #[inline(always)]
555    pub fn chn20(self) -> &'a mut crate::W<REG> {
556        self.variant(Crcsrcselect::Chn20)
557    }
558    #[doc = "DMA Channel 21"]
559    #[inline(always)]
560    pub fn chn21(self) -> &'a mut crate::W<REG> {
561        self.variant(Crcsrcselect::Chn21)
562    }
563    #[doc = "DMA Channel 22"]
564    #[inline(always)]
565    pub fn chn22(self) -> &'a mut crate::W<REG> {
566        self.variant(Crcsrcselect::Chn22)
567    }
568    #[doc = "DMA Channel 23"]
569    #[inline(always)]
570    pub fn chn23(self) -> &'a mut crate::W<REG> {
571        self.variant(Crcsrcselect::Chn23)
572    }
573    #[doc = "DMA Channel 24"]
574    #[inline(always)]
575    pub fn chn24(self) -> &'a mut crate::W<REG> {
576        self.variant(Crcsrcselect::Chn24)
577    }
578    #[doc = "DMA Channel 25"]
579    #[inline(always)]
580    pub fn chn25(self) -> &'a mut crate::W<REG> {
581        self.variant(Crcsrcselect::Chn25)
582    }
583    #[doc = "DMA Channel 26"]
584    #[inline(always)]
585    pub fn chn26(self) -> &'a mut crate::W<REG> {
586        self.variant(Crcsrcselect::Chn26)
587    }
588    #[doc = "DMA Channel 27"]
589    #[inline(always)]
590    pub fn chn27(self) -> &'a mut crate::W<REG> {
591        self.variant(Crcsrcselect::Chn27)
592    }
593    #[doc = "DMA Channel 28"]
594    #[inline(always)]
595    pub fn chn28(self) -> &'a mut crate::W<REG> {
596        self.variant(Crcsrcselect::Chn28)
597    }
598    #[doc = "DMA Channel 29"]
599    #[inline(always)]
600    pub fn chn29(self) -> &'a mut crate::W<REG> {
601        self.variant(Crcsrcselect::Chn29)
602    }
603    #[doc = "DMA Channel 30"]
604    #[inline(always)]
605    pub fn chn30(self) -> &'a mut crate::W<REG> {
606        self.variant(Crcsrcselect::Chn30)
607    }
608    #[doc = "DMA Channel 31"]
609    #[inline(always)]
610    pub fn chn31(self) -> &'a mut crate::W<REG> {
611        self.variant(Crcsrcselect::Chn31)
612    }
613}
614#[doc = "CRC Operating Mode\n\nValue on reset: 0"]
615#[derive(Clone, Copy, Debug, PartialEq, Eq)]
616#[repr(u8)]
617pub enum Crcmodeselect {
618    #[doc = "0: Default operating mode"]
619    Default = 0,
620    #[doc = "2: Memory CRC monitor operating mode"]
621    Crcmon = 2,
622    #[doc = "3: Memory CRC generation operating mode"]
623    Crcgen = 3,
624}
625impl From<Crcmodeselect> for u8 {
626    #[inline(always)]
627    fn from(variant: Crcmodeselect) -> Self {
628        variant as _
629    }
630}
631impl crate::FieldSpec for Crcmodeselect {
632    type Ux = u8;
633}
634impl crate::IsEnum for Crcmodeselect {}
635#[doc = "Field `CRCMODE` reader - CRC Operating Mode"]
636pub type CrcmodeR = crate::FieldReader<Crcmodeselect>;
637impl CrcmodeR {
638    #[doc = "Get enumerated values variant"]
639    #[inline(always)]
640    pub const fn variant(&self) -> Option<Crcmodeselect> {
641        match self.bits {
642            0 => Some(Crcmodeselect::Default),
643            2 => Some(Crcmodeselect::Crcmon),
644            3 => Some(Crcmodeselect::Crcgen),
645            _ => None,
646        }
647    }
648    #[doc = "Default operating mode"]
649    #[inline(always)]
650    pub fn is_default(&self) -> bool {
651        *self == Crcmodeselect::Default
652    }
653    #[doc = "Memory CRC monitor operating mode"]
654    #[inline(always)]
655    pub fn is_crcmon(&self) -> bool {
656        *self == Crcmodeselect::Crcmon
657    }
658    #[doc = "Memory CRC generation operating mode"]
659    #[inline(always)]
660    pub fn is_crcgen(&self) -> bool {
661        *self == Crcmodeselect::Crcgen
662    }
663}
664#[doc = "Field `CRCMODE` writer - CRC Operating Mode"]
665pub type CrcmodeW<'a, REG> = crate::FieldWriter<'a, REG, 2, Crcmodeselect>;
666impl<'a, REG> CrcmodeW<'a, REG>
667where
668    REG: crate::Writable + crate::RegisterSpec,
669    REG::Ux: From<u8>,
670{
671    #[doc = "Default operating mode"]
672    #[inline(always)]
673    pub fn default(self) -> &'a mut crate::W<REG> {
674        self.variant(Crcmodeselect::Default)
675    }
676    #[doc = "Memory CRC monitor operating mode"]
677    #[inline(always)]
678    pub fn crcmon(self) -> &'a mut crate::W<REG> {
679        self.variant(Crcmodeselect::Crcmon)
680    }
681    #[doc = "Memory CRC generation operating mode"]
682    #[inline(always)]
683    pub fn crcgen(self) -> &'a mut crate::W<REG> {
684        self.variant(Crcmodeselect::Crcgen)
685    }
686}
687impl R {
688    #[doc = "Bits 0:1 - CRC Beat Size"]
689    #[inline(always)]
690    pub fn crcbeatsize(&self) -> CrcbeatsizeR {
691        CrcbeatsizeR::new((self.bits & 3) as u8)
692    }
693    #[doc = "Bits 2:3 - CRC Polynomial Type"]
694    #[inline(always)]
695    pub fn crcpoly(&self) -> CrcpolyR {
696        CrcpolyR::new(((self.bits >> 2) & 3) as u8)
697    }
698    #[doc = "Bits 8:13 - CRC Input Source"]
699    #[inline(always)]
700    pub fn crcsrc(&self) -> CrcsrcR {
701        CrcsrcR::new(((self.bits >> 8) & 0x3f) as u8)
702    }
703    #[doc = "Bits 14:15 - CRC Operating Mode"]
704    #[inline(always)]
705    pub fn crcmode(&self) -> CrcmodeR {
706        CrcmodeR::new(((self.bits >> 14) & 3) as u8)
707    }
708}
709impl W {
710    #[doc = "Bits 0:1 - CRC Beat Size"]
711    #[inline(always)]
712    #[must_use]
713    pub fn crcbeatsize(&mut self) -> CrcbeatsizeW<CrcctrlSpec> {
714        CrcbeatsizeW::new(self, 0)
715    }
716    #[doc = "Bits 2:3 - CRC Polynomial Type"]
717    #[inline(always)]
718    #[must_use]
719    pub fn crcpoly(&mut self) -> CrcpolyW<CrcctrlSpec> {
720        CrcpolyW::new(self, 2)
721    }
722    #[doc = "Bits 8:13 - CRC Input Source"]
723    #[inline(always)]
724    #[must_use]
725    pub fn crcsrc(&mut self) -> CrcsrcW<CrcctrlSpec> {
726        CrcsrcW::new(self, 8)
727    }
728    #[doc = "Bits 14:15 - CRC Operating Mode"]
729    #[inline(always)]
730    #[must_use]
731    pub fn crcmode(&mut self) -> CrcmodeW<CrcctrlSpec> {
732        CrcmodeW::new(self, 14)
733    }
734}
735#[doc = "CRC Control\n\nYou can [`read`](crate::Reg::read) this register and get [`crcctrl::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`crcctrl::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
736pub struct CrcctrlSpec;
737impl crate::RegisterSpec for CrcctrlSpec {
738    type Ux = u16;
739}
740#[doc = "`read()` method returns [`crcctrl::R`](R) reader structure"]
741impl crate::Readable for CrcctrlSpec {}
742#[doc = "`write(|w| ..)` method takes [`crcctrl::W`](W) writer structure"]
743impl crate::Writable for CrcctrlSpec {
744    type Safety = crate::Unsafe;
745    const ZERO_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
746    const ONE_TO_MODIFY_FIELDS_BITMAP: u16 = 0;
747}
748#[doc = "`reset()` method sets CRCCTRL to value 0"]
749impl crate::Resettable for CrcctrlSpec {
750    const RESET_VALUE: u16 = 0;
751}