mimxrt595s/i3c0/
scapabilities.rs

1#[doc = "Register `SCAPABILITIES` reader"]
2pub struct R(crate::R<SCAPABILITIES_SPEC>);
3impl core::ops::Deref for R {
4    type Target = crate::R<SCAPABILITIES_SPEC>;
5    #[inline(always)]
6    fn deref(&self) -> &Self::Target {
7        &self.0
8    }
9}
10impl From<crate::R<SCAPABILITIES_SPEC>> for R {
11    #[inline(always)]
12    fn from(reader: crate::R<SCAPABILITIES_SPEC>) -> Self {
13        R(reader)
14    }
15}
16#[doc = "Field `IDENA` reader - ID 48b handler"]
17pub type IDENA_R = crate::FieldReader<u8, IDENA_A>;
18#[doc = "ID 48b handler\n\nValue on reset: 0"]
19#[derive(Clone, Copy, Debug, PartialEq, Eq)]
20#[repr(u8)]
21pub enum IDENA_A {
22    #[doc = "0: APPLICATION"]
23    APPLICATION = 0,
24    #[doc = "1: HW"]
25    HW = 1,
26    #[doc = "2: HW_BUT"]
27    HW_BUT = 2,
28    #[doc = "3: PARTNO"]
29    PARTNO = 3,
30}
31impl From<IDENA_A> for u8 {
32    #[inline(always)]
33    fn from(variant: IDENA_A) -> Self {
34        variant as _
35    }
36}
37impl IDENA_R {
38    #[doc = "Get enumerated values variant"]
39    #[inline(always)]
40    pub fn variant(&self) -> IDENA_A {
41        match self.bits {
42            0 => IDENA_A::APPLICATION,
43            1 => IDENA_A::HW,
44            2 => IDENA_A::HW_BUT,
45            3 => IDENA_A::PARTNO,
46            _ => unreachable!(),
47        }
48    }
49    #[doc = "Checks if the value of the field is `APPLICATION`"]
50    #[inline(always)]
51    pub fn is_application(&self) -> bool {
52        *self == IDENA_A::APPLICATION
53    }
54    #[doc = "Checks if the value of the field is `HW`"]
55    #[inline(always)]
56    pub fn is_hw(&self) -> bool {
57        *self == IDENA_A::HW
58    }
59    #[doc = "Checks if the value of the field is `HW_BUT`"]
60    #[inline(always)]
61    pub fn is_hw_but(&self) -> bool {
62        *self == IDENA_A::HW_BUT
63    }
64    #[doc = "Checks if the value of the field is `PARTNO`"]
65    #[inline(always)]
66    pub fn is_partno(&self) -> bool {
67        *self == IDENA_A::PARTNO
68    }
69}
70#[doc = "Field `IDREG` reader - ID register"]
71pub type IDREG_R = crate::FieldReader<u8, u8>;
72#[doc = "Field `HDRSUPP` reader - HDR support"]
73pub type HDRSUPP_R = crate::FieldReader<u8, u8>;
74#[doc = "Field `MASTER` reader - Master"]
75pub type MASTER_R = crate::BitReader<MASTER_A>;
76#[doc = "Master\n\nValue on reset: 1"]
77#[derive(Clone, Copy, Debug, PartialEq, Eq)]
78pub enum MASTER_A {
79    #[doc = "0: MASTERNOTSUPPORTED"]
80    MASTERNOTSUPPORTED = 0,
81    #[doc = "1: MASTERSUPPORTED"]
82    MASTERSUPPORTED = 1,
83}
84impl From<MASTER_A> for bool {
85    #[inline(always)]
86    fn from(variant: MASTER_A) -> Self {
87        variant as u8 != 0
88    }
89}
90impl MASTER_R {
91    #[doc = "Get enumerated values variant"]
92    #[inline(always)]
93    pub fn variant(&self) -> MASTER_A {
94        match self.bits {
95            false => MASTER_A::MASTERNOTSUPPORTED,
96            true => MASTER_A::MASTERSUPPORTED,
97        }
98    }
99    #[doc = "Checks if the value of the field is `MASTERNOTSUPPORTED`"]
100    #[inline(always)]
101    pub fn is_masternotsupported(&self) -> bool {
102        *self == MASTER_A::MASTERNOTSUPPORTED
103    }
104    #[doc = "Checks if the value of the field is `MASTERSUPPORTED`"]
105    #[inline(always)]
106    pub fn is_mastersupported(&self) -> bool {
107        *self == MASTER_A::MASTERSUPPORTED
108    }
109}
110#[doc = "Field `SADDR` reader - Static address"]
111pub type SADDR_R = crate::FieldReader<u8, SADDR_A>;
112#[doc = "Static address\n\nValue on reset: 3"]
113#[derive(Clone, Copy, Debug, PartialEq, Eq)]
114#[repr(u8)]
115pub enum SADDR_A {
116    #[doc = "0: NO_STATIC"]
117    NO_STATIC = 0,
118    #[doc = "1: STATIC"]
119    STATIC = 1,
120    #[doc = "2: HW_CONTROL"]
121    HW_CONTROL = 2,
122    #[doc = "3: CONFIG"]
123    CONFIG = 3,
124}
125impl From<SADDR_A> for u8 {
126    #[inline(always)]
127    fn from(variant: SADDR_A) -> Self {
128        variant as _
129    }
130}
131impl SADDR_R {
132    #[doc = "Get enumerated values variant"]
133    #[inline(always)]
134    pub fn variant(&self) -> SADDR_A {
135        match self.bits {
136            0 => SADDR_A::NO_STATIC,
137            1 => SADDR_A::STATIC,
138            2 => SADDR_A::HW_CONTROL,
139            3 => SADDR_A::CONFIG,
140            _ => unreachable!(),
141        }
142    }
143    #[doc = "Checks if the value of the field is `NO_STATIC`"]
144    #[inline(always)]
145    pub fn is_no_static(&self) -> bool {
146        *self == SADDR_A::NO_STATIC
147    }
148    #[doc = "Checks if the value of the field is `STATIC`"]
149    #[inline(always)]
150    pub fn is_static(&self) -> bool {
151        *self == SADDR_A::STATIC
152    }
153    #[doc = "Checks if the value of the field is `HW_CONTROL`"]
154    #[inline(always)]
155    pub fn is_hw_control(&self) -> bool {
156        *self == SADDR_A::HW_CONTROL
157    }
158    #[doc = "Checks if the value of the field is `CONFIG`"]
159    #[inline(always)]
160    pub fn is_config(&self) -> bool {
161        *self == SADDR_A::CONFIG
162    }
163}
164#[doc = "Field `CCCHANDLE` reader - Common Command Codes (CCC) handling"]
165pub type CCCHANDLE_R = crate::FieldReader<u8, u8>;
166#[doc = "Field `IBI_MR_HJ` reader - In-Band Interrupts, Master Requests, Hot Join events"]
167pub type IBI_MR_HJ_R = crate::FieldReader<u8, u8>;
168#[doc = "Field `TIMECTRL` reader - Time control"]
169pub type TIMECTRL_R = crate::BitReader<TIMECTRL_A>;
170#[doc = "Time control\n\nValue on reset: 1"]
171#[derive(Clone, Copy, Debug, PartialEq, Eq)]
172pub enum TIMECTRL_A {
173    #[doc = "0: NO_TIME_CONTROL_TYPE"]
174    NO_TIME_CONTROL_TYPE = 0,
175    #[doc = "1: NO_TIME_CONTROL_TYPE"]
176    ATLEAST1_TIME_CONTROL = 1,
177}
178impl From<TIMECTRL_A> for bool {
179    #[inline(always)]
180    fn from(variant: TIMECTRL_A) -> Self {
181        variant as u8 != 0
182    }
183}
184impl TIMECTRL_R {
185    #[doc = "Get enumerated values variant"]
186    #[inline(always)]
187    pub fn variant(&self) -> TIMECTRL_A {
188        match self.bits {
189            false => TIMECTRL_A::NO_TIME_CONTROL_TYPE,
190            true => TIMECTRL_A::ATLEAST1_TIME_CONTROL,
191        }
192    }
193    #[doc = "Checks if the value of the field is `NO_TIME_CONTROL_TYPE`"]
194    #[inline(always)]
195    pub fn is_no_time_control_type(&self) -> bool {
196        *self == TIMECTRL_A::NO_TIME_CONTROL_TYPE
197    }
198    #[doc = "Checks if the value of the field is `ATLEAST1_TIME_CONTROL`"]
199    #[inline(always)]
200    pub fn is_atleast1_time_control(&self) -> bool {
201        *self == TIMECTRL_A::ATLEAST1_TIME_CONTROL
202    }
203}
204#[doc = "Field `EXTFIFO` reader - External FIFO"]
205pub type EXTFIFO_R = crate::FieldReader<u8, EXTFIFO_A>;
206#[doc = "External FIFO\n\nValue on reset: 0"]
207#[derive(Clone, Copy, Debug, PartialEq, Eq)]
208#[repr(u8)]
209pub enum EXTFIFO_A {
210    #[doc = "1: STD_EXT_FIFO:"]
211    STD_EXT_FIFO = 1,
212}
213impl From<EXTFIFO_A> for u8 {
214    #[inline(always)]
215    fn from(variant: EXTFIFO_A) -> Self {
216        variant as _
217    }
218}
219impl EXTFIFO_R {
220    #[doc = "Get enumerated values variant"]
221    #[inline(always)]
222    pub fn variant(&self) -> Option<EXTFIFO_A> {
223        match self.bits {
224            1 => Some(EXTFIFO_A::STD_EXT_FIFO),
225            _ => None,
226        }
227    }
228    #[doc = "Checks if the value of the field is `STD_EXT_FIFO`"]
229    #[inline(always)]
230    pub fn is_std_ext_fifo(&self) -> bool {
231        *self == EXTFIFO_A::STD_EXT_FIFO
232    }
233}
234#[doc = "Field `FIFOTX` reader - FIFO transmit"]
235pub type FIFOTX_R = crate::FieldReader<u8, FIFOTX_A>;
236#[doc = "FIFO transmit\n\nValue on reset: 2"]
237#[derive(Clone, Copy, Debug, PartialEq, Eq)]
238#[repr(u8)]
239pub enum FIFOTX_A {
240    #[doc = "0: FIFO_2BYTE"]
241    FIFO_2BYTE = 0,
242    #[doc = "1: FIFO_4BYTE"]
243    FIFO_4BYTE = 1,
244    #[doc = "2: FIFO_8BYTE"]
245    FIFO_8BYTE = 2,
246    #[doc = "3: FIFO_16BYTE"]
247    FIFO_16BYTE = 3,
248}
249impl From<FIFOTX_A> for u8 {
250    #[inline(always)]
251    fn from(variant: FIFOTX_A) -> Self {
252        variant as _
253    }
254}
255impl FIFOTX_R {
256    #[doc = "Get enumerated values variant"]
257    #[inline(always)]
258    pub fn variant(&self) -> FIFOTX_A {
259        match self.bits {
260            0 => FIFOTX_A::FIFO_2BYTE,
261            1 => FIFOTX_A::FIFO_4BYTE,
262            2 => FIFOTX_A::FIFO_8BYTE,
263            3 => FIFOTX_A::FIFO_16BYTE,
264            _ => unreachable!(),
265        }
266    }
267    #[doc = "Checks if the value of the field is `FIFO_2BYTE`"]
268    #[inline(always)]
269    pub fn is_fifo_2byte(&self) -> bool {
270        *self == FIFOTX_A::FIFO_2BYTE
271    }
272    #[doc = "Checks if the value of the field is `FIFO_4BYTE`"]
273    #[inline(always)]
274    pub fn is_fifo_4byte(&self) -> bool {
275        *self == FIFOTX_A::FIFO_4BYTE
276    }
277    #[doc = "Checks if the value of the field is `FIFO_8BYTE`"]
278    #[inline(always)]
279    pub fn is_fifo_8byte(&self) -> bool {
280        *self == FIFOTX_A::FIFO_8BYTE
281    }
282    #[doc = "Checks if the value of the field is `FIFO_16BYTE`"]
283    #[inline(always)]
284    pub fn is_fifo_16byte(&self) -> bool {
285        *self == FIFOTX_A::FIFO_16BYTE
286    }
287}
288#[doc = "Field `FIFORX` reader - FIFO receive"]
289pub type FIFORX_R = crate::FieldReader<u8, FIFORX_A>;
290#[doc = "FIFO receive\n\nValue on reset: 2"]
291#[derive(Clone, Copy, Debug, PartialEq, Eq)]
292#[repr(u8)]
293pub enum FIFORX_A {
294    #[doc = "0: FIFO_2BYTE"]
295    FIFO_2BYTE = 0,
296    #[doc = "1: FIFO_4BYTE"]
297    FIFO_4BYTE = 1,
298    #[doc = "2: FIFO_8BYTE"]
299    FIFO_8BYTE = 2,
300    #[doc = "3: FIFO_16BYTE"]
301    FIFO_16BYTE = 3,
302}
303impl From<FIFORX_A> for u8 {
304    #[inline(always)]
305    fn from(variant: FIFORX_A) -> Self {
306        variant as _
307    }
308}
309impl FIFORX_R {
310    #[doc = "Get enumerated values variant"]
311    #[inline(always)]
312    pub fn variant(&self) -> FIFORX_A {
313        match self.bits {
314            0 => FIFORX_A::FIFO_2BYTE,
315            1 => FIFORX_A::FIFO_4BYTE,
316            2 => FIFORX_A::FIFO_8BYTE,
317            3 => FIFORX_A::FIFO_16BYTE,
318            _ => unreachable!(),
319        }
320    }
321    #[doc = "Checks if the value of the field is `FIFO_2BYTE`"]
322    #[inline(always)]
323    pub fn is_fifo_2byte(&self) -> bool {
324        *self == FIFORX_A::FIFO_2BYTE
325    }
326    #[doc = "Checks if the value of the field is `FIFO_4BYTE`"]
327    #[inline(always)]
328    pub fn is_fifo_4byte(&self) -> bool {
329        *self == FIFORX_A::FIFO_4BYTE
330    }
331    #[doc = "Checks if the value of the field is `FIFO_8BYTE`"]
332    #[inline(always)]
333    pub fn is_fifo_8byte(&self) -> bool {
334        *self == FIFORX_A::FIFO_8BYTE
335    }
336    #[doc = "Checks if the value of the field is `FIFO_16BYTE`"]
337    #[inline(always)]
338    pub fn is_fifo_16byte(&self) -> bool {
339        *self == FIFORX_A::FIFO_16BYTE
340    }
341}
342#[doc = "Field `INT` reader - Interrupt"]
343pub type INT_R = crate::BitReader<INT_A>;
344#[doc = "Interrupt\n\nValue on reset: 1"]
345#[derive(Clone, Copy, Debug, PartialEq, Eq)]
346pub enum INT_A {
347    #[doc = "0: Interrupts are not supported"]
348    INTERRUPTSNO = 0,
349    #[doc = "1: Interrupts are supported."]
350    INTERRUPTSYES = 1,
351}
352impl From<INT_A> for bool {
353    #[inline(always)]
354    fn from(variant: INT_A) -> Self {
355        variant as u8 != 0
356    }
357}
358impl INT_R {
359    #[doc = "Get enumerated values variant"]
360    #[inline(always)]
361    pub fn variant(&self) -> INT_A {
362        match self.bits {
363            false => INT_A::INTERRUPTSNO,
364            true => INT_A::INTERRUPTSYES,
365        }
366    }
367    #[doc = "Checks if the value of the field is `INTERRUPTSNO`"]
368    #[inline(always)]
369    pub fn is_interruptsno(&self) -> bool {
370        *self == INT_A::INTERRUPTSNO
371    }
372    #[doc = "Checks if the value of the field is `INTERRUPTSYES`"]
373    #[inline(always)]
374    pub fn is_interruptsyes(&self) -> bool {
375        *self == INT_A::INTERRUPTSYES
376    }
377}
378#[doc = "Field `DMA` reader - DMA"]
379pub type DMA_R = crate::BitReader<DMA_A>;
380#[doc = "DMA\n\nValue on reset: 1"]
381#[derive(Clone, Copy, Debug, PartialEq, Eq)]
382pub enum DMA_A {
383    #[doc = "0: DMA is not supported"]
384    DMANO = 0,
385    #[doc = "1: DMA is supported"]
386    DMAYES = 1,
387}
388impl From<DMA_A> for bool {
389    #[inline(always)]
390    fn from(variant: DMA_A) -> Self {
391        variant as u8 != 0
392    }
393}
394impl DMA_R {
395    #[doc = "Get enumerated values variant"]
396    #[inline(always)]
397    pub fn variant(&self) -> DMA_A {
398        match self.bits {
399            false => DMA_A::DMANO,
400            true => DMA_A::DMAYES,
401        }
402    }
403    #[doc = "Checks if the value of the field is `DMANO`"]
404    #[inline(always)]
405    pub fn is_dmano(&self) -> bool {
406        *self == DMA_A::DMANO
407    }
408    #[doc = "Checks if the value of the field is `DMAYES`"]
409    #[inline(always)]
410    pub fn is_dmayes(&self) -> bool {
411        *self == DMA_A::DMAYES
412    }
413}
414impl R {
415    #[doc = "Bits 0:1 - ID 48b handler"]
416    #[inline(always)]
417    pub fn idena(&self) -> IDENA_R {
418        IDENA_R::new((self.bits & 3) as u8)
419    }
420    #[doc = "Bits 2:5 - ID register"]
421    #[inline(always)]
422    pub fn idreg(&self) -> IDREG_R {
423        IDREG_R::new(((self.bits >> 2) & 0x0f) as u8)
424    }
425    #[doc = "Bits 6:8 - HDR support"]
426    #[inline(always)]
427    pub fn hdrsupp(&self) -> HDRSUPP_R {
428        HDRSUPP_R::new(((self.bits >> 6) & 7) as u8)
429    }
430    #[doc = "Bit 9 - Master"]
431    #[inline(always)]
432    pub fn master(&self) -> MASTER_R {
433        MASTER_R::new(((self.bits >> 9) & 1) != 0)
434    }
435    #[doc = "Bits 10:11 - Static address"]
436    #[inline(always)]
437    pub fn saddr(&self) -> SADDR_R {
438        SADDR_R::new(((self.bits >> 10) & 3) as u8)
439    }
440    #[doc = "Bits 12:15 - Common Command Codes (CCC) handling"]
441    #[inline(always)]
442    pub fn ccchandle(&self) -> CCCHANDLE_R {
443        CCCHANDLE_R::new(((self.bits >> 12) & 0x0f) as u8)
444    }
445    #[doc = "Bits 16:20 - In-Band Interrupts, Master Requests, Hot Join events"]
446    #[inline(always)]
447    pub fn ibi_mr_hj(&self) -> IBI_MR_HJ_R {
448        IBI_MR_HJ_R::new(((self.bits >> 16) & 0x1f) as u8)
449    }
450    #[doc = "Bit 21 - Time control"]
451    #[inline(always)]
452    pub fn timectrl(&self) -> TIMECTRL_R {
453        TIMECTRL_R::new(((self.bits >> 21) & 1) != 0)
454    }
455    #[doc = "Bits 23:25 - External FIFO"]
456    #[inline(always)]
457    pub fn extfifo(&self) -> EXTFIFO_R {
458        EXTFIFO_R::new(((self.bits >> 23) & 7) as u8)
459    }
460    #[doc = "Bits 26:27 - FIFO transmit"]
461    #[inline(always)]
462    pub fn fifotx(&self) -> FIFOTX_R {
463        FIFOTX_R::new(((self.bits >> 26) & 3) as u8)
464    }
465    #[doc = "Bits 28:29 - FIFO receive"]
466    #[inline(always)]
467    pub fn fiforx(&self) -> FIFORX_R {
468        FIFORX_R::new(((self.bits >> 28) & 3) as u8)
469    }
470    #[doc = "Bit 30 - Interrupt"]
471    #[inline(always)]
472    pub fn int(&self) -> INT_R {
473        INT_R::new(((self.bits >> 30) & 1) != 0)
474    }
475    #[doc = "Bit 31 - DMA"]
476    #[inline(always)]
477    pub fn dma(&self) -> DMA_R {
478        DMA_R::new(((self.bits >> 31) & 1) != 0)
479    }
480}
481#[doc = "Slave Capabilities Register\n\nThis register you can [`read`](crate::generic::Reg::read). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [scapabilities](index.html) module"]
482pub struct SCAPABILITIES_SPEC;
483impl crate::RegisterSpec for SCAPABILITIES_SPEC {
484    type Ux = u32;
485}
486#[doc = "`read()` method returns [scapabilities::R](R) reader structure"]
487impl crate::Readable for SCAPABILITIES_SPEC {
488    type Reader = R;
489}
490#[doc = "`reset()` method sets SCAPABILITIES to value 0xe83f_fe78"]
491impl crate::Resettable for SCAPABILITIES_SPEC {
492    const RESET_VALUE: Self::Ux = 0xe83f_fe78;
493}