lpc55_pac/ahb_secure_ctrl/
sec_vio_misc_info.rs

1#[doc = "Register `sec_vio_misc_info[%s]` reader"]
2pub struct R(crate::R<SEC_VIO_MISC_INFO_SPEC>);
3impl core::ops::Deref for R {
4    type Target = crate::R<SEC_VIO_MISC_INFO_SPEC>;
5    #[inline(always)]
6    fn deref(&self) -> &Self::Target {
7        &self.0
8    }
9}
10impl From<crate::R<SEC_VIO_MISC_INFO_SPEC>> for R {
11    #[inline(always)]
12    fn from(reader: crate::R<SEC_VIO_MISC_INFO_SPEC>) -> Self {
13        R(reader)
14    }
15}
16#[doc = "security violation access read/write indicator.\n\nValue on reset: 0"]
17#[derive(Clone, Copy, Debug, PartialEq)]
18pub enum SEC_VIO_INFO_WRITE_A {
19    #[doc = "0: Read access."]
20    READ = 0,
21    #[doc = "1: Write access."]
22    WRITE = 1,
23}
24impl From<SEC_VIO_INFO_WRITE_A> for bool {
25    #[inline(always)]
26    fn from(variant: SEC_VIO_INFO_WRITE_A) -> Self {
27        variant as u8 != 0
28    }
29}
30#[doc = "Field `SEC_VIO_INFO_WRITE` reader - security violation access read/write indicator."]
31pub struct SEC_VIO_INFO_WRITE_R(crate::FieldReader<bool, SEC_VIO_INFO_WRITE_A>);
32impl SEC_VIO_INFO_WRITE_R {
33    #[inline(always)]
34    pub(crate) fn new(bits: bool) -> Self {
35        SEC_VIO_INFO_WRITE_R(crate::FieldReader::new(bits))
36    }
37    #[doc = r"Get enumerated values variant"]
38    #[inline(always)]
39    pub fn variant(&self) -> SEC_VIO_INFO_WRITE_A {
40        match self.bits {
41            false => SEC_VIO_INFO_WRITE_A::READ,
42            true => SEC_VIO_INFO_WRITE_A::WRITE,
43        }
44    }
45    #[doc = "Checks if the value of the field is `READ`"]
46    #[inline(always)]
47    pub fn is_read(&self) -> bool {
48        **self == SEC_VIO_INFO_WRITE_A::READ
49    }
50    #[doc = "Checks if the value of the field is `WRITE`"]
51    #[inline(always)]
52    pub fn is_write(&self) -> bool {
53        **self == SEC_VIO_INFO_WRITE_A::WRITE
54    }
55}
56impl core::ops::Deref for SEC_VIO_INFO_WRITE_R {
57    type Target = crate::FieldReader<bool, SEC_VIO_INFO_WRITE_A>;
58    #[inline(always)]
59    fn deref(&self) -> &Self::Target {
60        &self.0
61    }
62}
63#[doc = "security violation access data/code indicator.\n\nValue on reset: 0"]
64#[derive(Clone, Copy, Debug, PartialEq)]
65pub enum SEC_VIO_INFO_DATA_ACCESS_A {
66    #[doc = "0: Code access."]
67    CODE = 0,
68    #[doc = "1: Data access."]
69    DATA = 1,
70}
71impl From<SEC_VIO_INFO_DATA_ACCESS_A> for bool {
72    #[inline(always)]
73    fn from(variant: SEC_VIO_INFO_DATA_ACCESS_A) -> Self {
74        variant as u8 != 0
75    }
76}
77#[doc = "Field `SEC_VIO_INFO_DATA_ACCESS` reader - security violation access data/code indicator."]
78pub struct SEC_VIO_INFO_DATA_ACCESS_R(crate::FieldReader<bool, SEC_VIO_INFO_DATA_ACCESS_A>);
79impl SEC_VIO_INFO_DATA_ACCESS_R {
80    #[inline(always)]
81    pub(crate) fn new(bits: bool) -> Self {
82        SEC_VIO_INFO_DATA_ACCESS_R(crate::FieldReader::new(bits))
83    }
84    #[doc = r"Get enumerated values variant"]
85    #[inline(always)]
86    pub fn variant(&self) -> SEC_VIO_INFO_DATA_ACCESS_A {
87        match self.bits {
88            false => SEC_VIO_INFO_DATA_ACCESS_A::CODE,
89            true => SEC_VIO_INFO_DATA_ACCESS_A::DATA,
90        }
91    }
92    #[doc = "Checks if the value of the field is `CODE`"]
93    #[inline(always)]
94    pub fn is_code(&self) -> bool {
95        **self == SEC_VIO_INFO_DATA_ACCESS_A::CODE
96    }
97    #[doc = "Checks if the value of the field is `DATA`"]
98    #[inline(always)]
99    pub fn is_data(&self) -> bool {
100        **self == SEC_VIO_INFO_DATA_ACCESS_A::DATA
101    }
102}
103impl core::ops::Deref for SEC_VIO_INFO_DATA_ACCESS_R {
104    type Target = crate::FieldReader<bool, SEC_VIO_INFO_DATA_ACCESS_A>;
105    #[inline(always)]
106    fn deref(&self) -> &Self::Target {
107        &self.0
108    }
109}
110#[doc = "Field `SEC_VIO_INFO_MASTER_SEC_LEVEL` reader - bit \\[5:4\\]: master sec level and privilege level bit \\[7:6\\]: anti-pol value for master sec level and privilege level"]
111pub struct SEC_VIO_INFO_MASTER_SEC_LEVEL_R(crate::FieldReader<u8, u8>);
112impl SEC_VIO_INFO_MASTER_SEC_LEVEL_R {
113    #[inline(always)]
114    pub(crate) fn new(bits: u8) -> Self {
115        SEC_VIO_INFO_MASTER_SEC_LEVEL_R(crate::FieldReader::new(bits))
116    }
117}
118impl core::ops::Deref for SEC_VIO_INFO_MASTER_SEC_LEVEL_R {
119    type Target = crate::FieldReader<u8, u8>;
120    #[inline(always)]
121    fn deref(&self) -> &Self::Target {
122        &self.0
123    }
124}
125#[doc = "security violation master number\n\nValue on reset: 0"]
126#[derive(Clone, Copy, Debug, PartialEq)]
127#[repr(u8)]
128pub enum SEC_VIO_INFO_MASTER_A {
129    #[doc = "0: CPU0 Code."]
130    VALUE_0 = 0,
131    #[doc = "1: CPU0 System."]
132    VALUE_1 = 1,
133    #[doc = "2: CPU1 Data."]
134    VALUE_2 = 2,
135    #[doc = "3: CPU1 System."]
136    VALUE_3 = 3,
137    #[doc = "4: USB-HS Device."]
138    VALUE_4 = 4,
139    #[doc = "5: SDMA0."]
140    VALUE_5 = 5,
141    #[doc = "8: SDIO."]
142    VALUE_8 = 8,
143    #[doc = "9: PowerQuad."]
144    VALUE_9 = 9,
145    #[doc = "10: HASH."]
146    VALUE_10 = 10,
147    #[doc = "11: USB-FS Host."]
148    VALUE_11 = 11,
149    #[doc = "12: SDMA1."]
150    VALUE_12 = 12,
151}
152impl From<SEC_VIO_INFO_MASTER_A> for u8 {
153    #[inline(always)]
154    fn from(variant: SEC_VIO_INFO_MASTER_A) -> Self {
155        variant as _
156    }
157}
158#[doc = "Field `SEC_VIO_INFO_MASTER` reader - security violation master number"]
159pub struct SEC_VIO_INFO_MASTER_R(crate::FieldReader<u8, SEC_VIO_INFO_MASTER_A>);
160impl SEC_VIO_INFO_MASTER_R {
161    #[inline(always)]
162    pub(crate) fn new(bits: u8) -> Self {
163        SEC_VIO_INFO_MASTER_R(crate::FieldReader::new(bits))
164    }
165    #[doc = r"Get enumerated values variant"]
166    #[inline(always)]
167    pub fn variant(&self) -> Option<SEC_VIO_INFO_MASTER_A> {
168        match self.bits {
169            0 => Some(SEC_VIO_INFO_MASTER_A::VALUE_0),
170            1 => Some(SEC_VIO_INFO_MASTER_A::VALUE_1),
171            2 => Some(SEC_VIO_INFO_MASTER_A::VALUE_2),
172            3 => Some(SEC_VIO_INFO_MASTER_A::VALUE_3),
173            4 => Some(SEC_VIO_INFO_MASTER_A::VALUE_4),
174            5 => Some(SEC_VIO_INFO_MASTER_A::VALUE_5),
175            8 => Some(SEC_VIO_INFO_MASTER_A::VALUE_8),
176            9 => Some(SEC_VIO_INFO_MASTER_A::VALUE_9),
177            10 => Some(SEC_VIO_INFO_MASTER_A::VALUE_10),
178            11 => Some(SEC_VIO_INFO_MASTER_A::VALUE_11),
179            12 => Some(SEC_VIO_INFO_MASTER_A::VALUE_12),
180            _ => None,
181        }
182    }
183    #[doc = "Checks if the value of the field is `VALUE_0`"]
184    #[inline(always)]
185    pub fn is_value_0(&self) -> bool {
186        **self == SEC_VIO_INFO_MASTER_A::VALUE_0
187    }
188    #[doc = "Checks if the value of the field is `VALUE_1`"]
189    #[inline(always)]
190    pub fn is_value_1(&self) -> bool {
191        **self == SEC_VIO_INFO_MASTER_A::VALUE_1
192    }
193    #[doc = "Checks if the value of the field is `VALUE_2`"]
194    #[inline(always)]
195    pub fn is_value_2(&self) -> bool {
196        **self == SEC_VIO_INFO_MASTER_A::VALUE_2
197    }
198    #[doc = "Checks if the value of the field is `VALUE_3`"]
199    #[inline(always)]
200    pub fn is_value_3(&self) -> bool {
201        **self == SEC_VIO_INFO_MASTER_A::VALUE_3
202    }
203    #[doc = "Checks if the value of the field is `VALUE_4`"]
204    #[inline(always)]
205    pub fn is_value_4(&self) -> bool {
206        **self == SEC_VIO_INFO_MASTER_A::VALUE_4
207    }
208    #[doc = "Checks if the value of the field is `VALUE_5`"]
209    #[inline(always)]
210    pub fn is_value_5(&self) -> bool {
211        **self == SEC_VIO_INFO_MASTER_A::VALUE_5
212    }
213    #[doc = "Checks if the value of the field is `VALUE_8`"]
214    #[inline(always)]
215    pub fn is_value_8(&self) -> bool {
216        **self == SEC_VIO_INFO_MASTER_A::VALUE_8
217    }
218    #[doc = "Checks if the value of the field is `VALUE_9`"]
219    #[inline(always)]
220    pub fn is_value_9(&self) -> bool {
221        **self == SEC_VIO_INFO_MASTER_A::VALUE_9
222    }
223    #[doc = "Checks if the value of the field is `VALUE_10`"]
224    #[inline(always)]
225    pub fn is_value_10(&self) -> bool {
226        **self == SEC_VIO_INFO_MASTER_A::VALUE_10
227    }
228    #[doc = "Checks if the value of the field is `VALUE_11`"]
229    #[inline(always)]
230    pub fn is_value_11(&self) -> bool {
231        **self == SEC_VIO_INFO_MASTER_A::VALUE_11
232    }
233    #[doc = "Checks if the value of the field is `VALUE_12`"]
234    #[inline(always)]
235    pub fn is_value_12(&self) -> bool {
236        **self == SEC_VIO_INFO_MASTER_A::VALUE_12
237    }
238}
239impl core::ops::Deref for SEC_VIO_INFO_MASTER_R {
240    type Target = crate::FieldReader<u8, SEC_VIO_INFO_MASTER_A>;
241    #[inline(always)]
242    fn deref(&self) -> &Self::Target {
243        &self.0
244    }
245}
246impl R {
247    #[doc = "Bit 0 - security violation access read/write indicator."]
248    #[inline(always)]
249    pub fn sec_vio_info_write(&self) -> SEC_VIO_INFO_WRITE_R {
250        SEC_VIO_INFO_WRITE_R::new((self.bits & 0x01) != 0)
251    }
252    #[doc = "Bit 1 - security violation access data/code indicator."]
253    #[inline(always)]
254    pub fn sec_vio_info_data_access(&self) -> SEC_VIO_INFO_DATA_ACCESS_R {
255        SEC_VIO_INFO_DATA_ACCESS_R::new(((self.bits >> 1) & 0x01) != 0)
256    }
257    #[doc = "Bits 4:7 - bit \\[5:4\\]: master sec level and privilege level bit \\[7:6\\]: anti-pol value for master sec level and privilege level"]
258    #[inline(always)]
259    pub fn sec_vio_info_master_sec_level(&self) -> SEC_VIO_INFO_MASTER_SEC_LEVEL_R {
260        SEC_VIO_INFO_MASTER_SEC_LEVEL_R::new(((self.bits >> 4) & 0x0f) as u8)
261    }
262    #[doc = "Bits 8:11 - security violation master number"]
263    #[inline(always)]
264    pub fn sec_vio_info_master(&self) -> SEC_VIO_INFO_MASTER_R {
265        SEC_VIO_INFO_MASTER_R::new(((self.bits >> 8) & 0x0f) as u8)
266    }
267}
268#[doc = "most recent security violation miscellaneous information for AHB port n\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 [sec_vio_misc_info](index.html) module"]
269pub struct SEC_VIO_MISC_INFO_SPEC;
270impl crate::RegisterSpec for SEC_VIO_MISC_INFO_SPEC {
271    type Ux = u32;
272}
273#[doc = "`read()` method returns [sec_vio_misc_info::R](R) reader structure"]
274impl crate::Readable for SEC_VIO_MISC_INFO_SPEC {
275    type Reader = R;
276}
277#[doc = "`reset()` method sets sec_vio_misc_info[%s]
278to value 0"]
279impl crate::Resettable for SEC_VIO_MISC_INFO_SPEC {
280    #[inline(always)]
281    fn reset_value() -> Self::Ux {
282        0
283    }
284}