mimxrt685s_pac/
puf.rs

1#[repr(C)]
2#[cfg_attr(feature = "debug", derive(Debug))]
3#[doc = "Register block"]
4pub struct RegisterBlock {
5    ctrl: Ctrl,
6    keyindex: Keyindex,
7    keysize: Keysize,
8    _reserved3: [u8; 0x14],
9    stat: Stat,
10    _reserved4: [u8; 0x04],
11    allow: Allow,
12    _reserved5: [u8; 0x14],
13    keyinput: Keyinput,
14    codeinput: Codeinput,
15    codeoutput: Codeoutput,
16    _reserved8: [u8; 0x14],
17    keyoutindex: Keyoutindex,
18    keyoutput: Keyoutput,
19    _reserved10: [u8; 0x74],
20    ifstat: Ifstat,
21    _reserved11: [u8; 0x1c],
22    version: Version,
23    inten: Inten,
24    intstat: Intstat,
25    pwrctrl: Pwrctrl,
26    cfg: Cfg,
27    _reserved16: [u8; 0xf0],
28    keylock: Keylock,
29    keyenable: Keyenable,
30    keyreset: Keyreset,
31    idxblk_l: IdxblkL,
32    idxblk_h_dp: IdxblkHDp,
33    keymask: [Keymask; 2],
34    _reserved22: [u8; 0x38],
35    idxblk_h: IdxblkH,
36    idxblk_l_dp: IdxblkLDp,
37}
38impl RegisterBlock {
39    #[doc = "0x00 - PUF Control"]
40    #[inline(always)]
41    pub const fn ctrl(&self) -> &Ctrl {
42        &self.ctrl
43    }
44    #[doc = "0x04 - PUF Key Index"]
45    #[inline(always)]
46    pub const fn keyindex(&self) -> &Keyindex {
47        &self.keyindex
48    }
49    #[doc = "0x08 - PUF Key Size"]
50    #[inline(always)]
51    pub const fn keysize(&self) -> &Keysize {
52        &self.keysize
53    }
54    #[doc = "0x20 - PUF Status"]
55    #[inline(always)]
56    pub const fn stat(&self) -> &Stat {
57        &self.stat
58    }
59    #[doc = "0x28 - PUF Allow"]
60    #[inline(always)]
61    pub const fn allow(&self) -> &Allow {
62        &self.allow
63    }
64    #[doc = "0x40 - PUF Key Input"]
65    #[inline(always)]
66    pub const fn keyinput(&self) -> &Keyinput {
67        &self.keyinput
68    }
69    #[doc = "0x44 - PUF Code Input"]
70    #[inline(always)]
71    pub const fn codeinput(&self) -> &Codeinput {
72        &self.codeinput
73    }
74    #[doc = "0x48 - PUF Code Output"]
75    #[inline(always)]
76    pub const fn codeoutput(&self) -> &Codeoutput {
77        &self.codeoutput
78    }
79    #[doc = "0x60 - PUF Key Output Index"]
80    #[inline(always)]
81    pub const fn keyoutindex(&self) -> &Keyoutindex {
82        &self.keyoutindex
83    }
84    #[doc = "0x64 - PUF Key Output"]
85    #[inline(always)]
86    pub const fn keyoutput(&self) -> &Keyoutput {
87        &self.keyoutput
88    }
89    #[doc = "0xdc - PUF Interface Status and Clear"]
90    #[inline(always)]
91    pub const fn ifstat(&self) -> &Ifstat {
92        &self.ifstat
93    }
94    #[doc = "0xfc - PUF Version"]
95    #[inline(always)]
96    pub const fn version(&self) -> &Version {
97        &self.version
98    }
99    #[doc = "0x100 - PUF Interrupt Enable"]
100    #[inline(always)]
101    pub const fn inten(&self) -> &Inten {
102        &self.inten
103    }
104    #[doc = "0x104 - PUF Interrupt Status"]
105    #[inline(always)]
106    pub const fn intstat(&self) -> &Intstat {
107        &self.intstat
108    }
109    #[doc = "0x108 - PUF Power Control"]
110    #[inline(always)]
111    pub const fn pwrctrl(&self) -> &Pwrctrl {
112        &self.pwrctrl
113    }
114    #[doc = "0x10c - PUF Configuration"]
115    #[inline(always)]
116    pub const fn cfg(&self) -> &Cfg {
117        &self.cfg
118    }
119    #[doc = "0x200 - Key Lock"]
120    #[inline(always)]
121    pub const fn keylock(&self) -> &Keylock {
122        &self.keylock
123    }
124    #[doc = "0x204 - Key Enable"]
125    #[inline(always)]
126    pub const fn keyenable(&self) -> &Keyenable {
127        &self.keyenable
128    }
129    #[doc = "0x208 - Key Reset"]
130    #[inline(always)]
131    pub const fn keyreset(&self) -> &Keyreset {
132        &self.keyreset
133    }
134    #[doc = "0x20c - Index Block Low"]
135    #[inline(always)]
136    pub const fn idxblk_l(&self) -> &IdxblkL {
137        &self.idxblk_l
138    }
139    #[doc = "0x210 - Index Block High Duplicate"]
140    #[inline(always)]
141    pub const fn idxblk_h_dp(&self) -> &IdxblkHDp {
142        &self.idxblk_h_dp
143    }
144    #[doc = "0x214..0x21c - Key Mask x"]
145    #[inline(always)]
146    pub const fn keymask(&self, n: usize) -> &Keymask {
147        &self.keymask[n]
148    }
149    #[doc = "Iterator for array of:"]
150    #[doc = "0x214..0x21c - Key Mask x"]
151    #[inline(always)]
152    pub fn keymask_iter(&self) -> impl Iterator<Item = &Keymask> {
153        self.keymask.iter()
154    }
155    #[doc = "0x254 - Index Block High"]
156    #[inline(always)]
157    pub const fn idxblk_h(&self) -> &IdxblkH {
158        &self.idxblk_h
159    }
160    #[doc = "0x258 - Index Block Low Duplicate"]
161    #[inline(always)]
162    pub const fn idxblk_l_dp(&self) -> &IdxblkLDp {
163        &self.idxblk_l_dp
164    }
165}
166#[doc = "CTRL (rw) register accessor: PUF Control\n\nYou can [`read`](crate::Reg::read) this register and get [`ctrl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ctrl::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ctrl`]
167module"]
168#[doc(alias = "CTRL")]
169pub type Ctrl = crate::Reg<ctrl::CtrlSpec>;
170#[doc = "PUF Control"]
171pub mod ctrl;
172#[doc = "KEYINDEX (rw) register accessor: PUF Key Index\n\nYou can [`read`](crate::Reg::read) this register and get [`keyindex::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keyindex::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyindex`]
173module"]
174#[doc(alias = "KEYINDEX")]
175pub type Keyindex = crate::Reg<keyindex::KeyindexSpec>;
176#[doc = "PUF Key Index"]
177pub mod keyindex;
178#[doc = "KEYSIZE (rw) register accessor: PUF Key Size\n\nYou can [`read`](crate::Reg::read) this register and get [`keysize::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keysize::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keysize`]
179module"]
180#[doc(alias = "KEYSIZE")]
181pub type Keysize = crate::Reg<keysize::KeysizeSpec>;
182#[doc = "PUF Key Size"]
183pub mod keysize;
184#[doc = "STAT (r) register accessor: PUF Status\n\nYou can [`read`](crate::Reg::read) this register and get [`stat::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@stat`]
185module"]
186#[doc(alias = "STAT")]
187pub type Stat = crate::Reg<stat::StatSpec>;
188#[doc = "PUF Status"]
189pub mod stat;
190#[doc = "ALLOW (r) register accessor: PUF Allow\n\nYou can [`read`](crate::Reg::read) this register and get [`allow::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@allow`]
191module"]
192#[doc(alias = "ALLOW")]
193pub type Allow = crate::Reg<allow::AllowSpec>;
194#[doc = "PUF Allow"]
195pub mod allow;
196#[doc = "KEYINPUT (w) register accessor: PUF Key Input\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keyinput::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyinput`]
197module"]
198#[doc(alias = "KEYINPUT")]
199pub type Keyinput = crate::Reg<keyinput::KeyinputSpec>;
200#[doc = "PUF Key Input"]
201pub mod keyinput;
202#[doc = "CODEINPUT (w) register accessor: PUF Code Input\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`codeinput::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@codeinput`]
203module"]
204#[doc(alias = "CODEINPUT")]
205pub type Codeinput = crate::Reg<codeinput::CodeinputSpec>;
206#[doc = "PUF Code Input"]
207pub mod codeinput;
208#[doc = "CODEOUTPUT (r) register accessor: PUF Code Output\n\nYou can [`read`](crate::Reg::read) this register and get [`codeoutput::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@codeoutput`]
209module"]
210#[doc(alias = "CODEOUTPUT")]
211pub type Codeoutput = crate::Reg<codeoutput::CodeoutputSpec>;
212#[doc = "PUF Code Output"]
213pub mod codeoutput;
214#[doc = "KEYOUTINDEX (r) register accessor: PUF Key Output Index\n\nYou can [`read`](crate::Reg::read) this register and get [`keyoutindex::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyoutindex`]
215module"]
216#[doc(alias = "KEYOUTINDEX")]
217pub type Keyoutindex = crate::Reg<keyoutindex::KeyoutindexSpec>;
218#[doc = "PUF Key Output Index"]
219pub mod keyoutindex;
220#[doc = "KEYOUTPUT (r) register accessor: PUF Key Output\n\nYou can [`read`](crate::Reg::read) this register and get [`keyoutput::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyoutput`]
221module"]
222#[doc(alias = "KEYOUTPUT")]
223pub type Keyoutput = crate::Reg<keyoutput::KeyoutputSpec>;
224#[doc = "PUF Key Output"]
225pub mod keyoutput;
226#[doc = "IFSTAT (rw) register accessor: PUF Interface Status and Clear\n\nYou can [`read`](crate::Reg::read) this register and get [`ifstat::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`ifstat::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ifstat`]
227module"]
228#[doc(alias = "IFSTAT")]
229pub type Ifstat = crate::Reg<ifstat::IfstatSpec>;
230#[doc = "PUF Interface Status and Clear"]
231pub mod ifstat;
232#[doc = "VERSION (r) register accessor: PUF Version\n\nYou can [`read`](crate::Reg::read) this register and get [`version::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@version`]
233module"]
234#[doc(alias = "VERSION")]
235pub type Version = crate::Reg<version::VersionSpec>;
236#[doc = "PUF Version"]
237pub mod version;
238#[doc = "INTEN (rw) register accessor: PUF Interrupt Enable\n\nYou can [`read`](crate::Reg::read) this register and get [`inten::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`inten::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@inten`]
239module"]
240#[doc(alias = "INTEN")]
241pub type Inten = crate::Reg<inten::IntenSpec>;
242#[doc = "PUF Interrupt Enable"]
243pub mod inten;
244#[doc = "INTSTAT (rw) register accessor: PUF Interrupt Status\n\nYou can [`read`](crate::Reg::read) this register and get [`intstat::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`intstat::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@intstat`]
245module"]
246#[doc(alias = "INTSTAT")]
247pub type Intstat = crate::Reg<intstat::IntstatSpec>;
248#[doc = "PUF Interrupt Status"]
249pub mod intstat;
250#[doc = "PWRCTRL (rw) register accessor: PUF Power Control\n\nYou can [`read`](crate::Reg::read) this register and get [`pwrctrl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`pwrctrl::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@pwrctrl`]
251module"]
252#[doc(alias = "PWRCTRL")]
253pub type Pwrctrl = crate::Reg<pwrctrl::PwrctrlSpec>;
254#[doc = "PUF Power Control"]
255pub mod pwrctrl;
256#[doc = "CFG (rw) register accessor: PUF Configuration\n\nYou can [`read`](crate::Reg::read) this register and get [`cfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`cfg::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@cfg`]
257module"]
258#[doc(alias = "CFG")]
259pub type Cfg = crate::Reg<cfg::CfgSpec>;
260#[doc = "PUF Configuration"]
261pub mod cfg;
262#[doc = "KEYLOCK (rw) register accessor: Key Lock\n\nYou can [`read`](crate::Reg::read) this register and get [`keylock::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keylock::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keylock`]
263module"]
264#[doc(alias = "KEYLOCK")]
265pub type Keylock = crate::Reg<keylock::KeylockSpec>;
266#[doc = "Key Lock"]
267pub mod keylock;
268#[doc = "KEYENABLE (rw) register accessor: Key Enable\n\nYou can [`read`](crate::Reg::read) this register and get [`keyenable::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keyenable::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyenable`]
269module"]
270#[doc(alias = "KEYENABLE")]
271pub type Keyenable = crate::Reg<keyenable::KeyenableSpec>;
272#[doc = "Key Enable"]
273pub mod keyenable;
274#[doc = "KEYRESET (w) register accessor: Key Reset\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keyreset::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keyreset`]
275module"]
276#[doc(alias = "KEYRESET")]
277pub type Keyreset = crate::Reg<keyreset::KeyresetSpec>;
278#[doc = "Key Reset"]
279pub mod keyreset;
280#[doc = "IDXBLK_L (rw) register accessor: Index Block Low\n\nYou can [`read`](crate::Reg::read) this register and get [`idxblk_l::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`idxblk_l::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@idxblk_l`]
281module"]
282#[doc(alias = "IDXBLK_L")]
283pub type IdxblkL = crate::Reg<idxblk_l::IdxblkLSpec>;
284#[doc = "Index Block Low"]
285pub mod idxblk_l;
286#[doc = "IDXBLK_H_DP (rw) register accessor: Index Block High Duplicate\n\nYou can [`read`](crate::Reg::read) this register and get [`idxblk_h_dp::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`idxblk_h_dp::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@idxblk_h_dp`]
287module"]
288#[doc(alias = "IDXBLK_H_DP")]
289pub type IdxblkHDp = crate::Reg<idxblk_h_dp::IdxblkHDpSpec>;
290#[doc = "Index Block High Duplicate"]
291pub mod idxblk_h_dp;
292#[doc = "KEYMASK (w) register accessor: Key Mask x\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`keymask::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@keymask`]
293module"]
294#[doc(alias = "KEYMASK")]
295pub type Keymask = crate::Reg<keymask::KeymaskSpec>;
296#[doc = "Key Mask x"]
297pub mod keymask;
298#[doc = "IDXBLK_H (rw) register accessor: Index Block High\n\nYou can [`read`](crate::Reg::read) this register and get [`idxblk_h::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`idxblk_h::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@idxblk_h`]
299module"]
300#[doc(alias = "IDXBLK_H")]
301pub type IdxblkH = crate::Reg<idxblk_h::IdxblkHSpec>;
302#[doc = "Index Block High"]
303pub mod idxblk_h;
304#[doc = "IDXBLK_L_DP (rw) register accessor: Index Block Low Duplicate\n\nYou can [`read`](crate::Reg::read) this register and get [`idxblk_l_dp::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`idxblk_l_dp::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@idxblk_l_dp`]
305module"]
306#[doc(alias = "IDXBLK_L_DP")]
307pub type IdxblkLDp = crate::Reg<idxblk_l_dp::IdxblkLDpSpec>;
308#[doc = "Index Block Low Duplicate"]
309pub mod idxblk_l_dp;