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;