esp32s2/
usb0.rs

1#[repr(C)]
2#[cfg_attr(feature = "impl-register-debug", derive(Debug))]
3#[doc = "Register block"]
4pub struct RegisterBlock {
5    gotgctl: GOTGCTL,
6    gotgint: GOTGINT,
7    gahbcfg: GAHBCFG,
8    gusbcfg: GUSBCFG,
9    grstctl: GRSTCTL,
10    gintsts: GINTSTS,
11    gintmsk: GINTMSK,
12    grxstsr: GRXSTSR,
13    grxstsp: GRXSTSP,
14    grxfsiz: GRXFSIZ,
15    gnptxfsiz: GNPTXFSIZ,
16    gnptxsts: GNPTXSTS,
17    _reserved12: [u8; 0x10],
18    gsnpsid: GSNPSID,
19    ghwcfg1: GHWCFG1,
20    ghwcfg2: GHWCFG2,
21    ghwcfg3: GHWCFG3,
22    ghwcfg4: GHWCFG4,
23    _reserved17: [u8; 0x08],
24    gdfifocfg: GDFIFOCFG,
25    _reserved18: [u8; 0xa0],
26    hptxfsiz: HPTXFSIZ,
27    dieptxf: [DIEPTXF; 4],
28    _reserved20: [u8; 0x02ec],
29    hcfg: HCFG,
30    hfir: HFIR,
31    hfnum: HFNUM,
32    _reserved23: [u8; 0x04],
33    hptxsts: HPTXSTS,
34    haint: HAINT,
35    haintmsk: HAINTMSK,
36    hflbaddr: HFLBADDR,
37    _reserved27: [u8; 0x20],
38    hprt: HPRT,
39    _reserved28: [u8; 0xbc],
40    hc: [HC; 8],
41    _reserved29: [u8; 0x0200],
42    dcfg: DCFG,
43    dctl: DCTL,
44    dsts: DSTS,
45    _reserved32: [u8; 0x04],
46    diepmsk: DIEPMSK,
47    doepmsk: DOEPMSK,
48    daint: DAINT,
49    daintmsk: DAINTMSK,
50    _reserved36: [u8; 0x08],
51    dvbusdis: DVBUSDIS,
52    dvbuspulse: DVBUSPULSE,
53    dthrctl: DTHRCTL,
54    diepempmsk: DIEPEMPMSK,
55    _reserved40: [u8; 0xc8],
56    in_ep0: IN_EP0,
57    in_ep: [IN_EP; 6],
58    _reserved42: [u8; 0x0120],
59    out_ep0: OUT_EP0,
60    out_ep: [OUT_EP; 6],
61    _reserved44: [u8; 0x0220],
62    pcgcctl: PCGCCTL,
63    _reserved45: [u8; 0x01fc],
64    fifo: (),
65}
66impl RegisterBlock {
67    #[doc = "0x00 - "]
68    #[inline(always)]
69    pub const fn gotgctl(&self) -> &GOTGCTL {
70        &self.gotgctl
71    }
72    #[doc = "0x04 - "]
73    #[inline(always)]
74    pub const fn gotgint(&self) -> &GOTGINT {
75        &self.gotgint
76    }
77    #[doc = "0x08 - "]
78    #[inline(always)]
79    pub const fn gahbcfg(&self) -> &GAHBCFG {
80        &self.gahbcfg
81    }
82    #[doc = "0x0c - "]
83    #[inline(always)]
84    pub const fn gusbcfg(&self) -> &GUSBCFG {
85        &self.gusbcfg
86    }
87    #[doc = "0x10 - "]
88    #[inline(always)]
89    pub const fn grstctl(&self) -> &GRSTCTL {
90        &self.grstctl
91    }
92    #[doc = "0x14 - "]
93    #[inline(always)]
94    pub const fn gintsts(&self) -> &GINTSTS {
95        &self.gintsts
96    }
97    #[doc = "0x18 - "]
98    #[inline(always)]
99    pub const fn gintmsk(&self) -> &GINTMSK {
100        &self.gintmsk
101    }
102    #[doc = "0x1c - "]
103    #[inline(always)]
104    pub const fn grxstsr(&self) -> &GRXSTSR {
105        &self.grxstsr
106    }
107    #[doc = "0x20 - "]
108    #[inline(always)]
109    pub const fn grxstsp(&self) -> &GRXSTSP {
110        &self.grxstsp
111    }
112    #[doc = "0x24 - "]
113    #[inline(always)]
114    pub const fn grxfsiz(&self) -> &GRXFSIZ {
115        &self.grxfsiz
116    }
117    #[doc = "0x28 - "]
118    #[inline(always)]
119    pub const fn gnptxfsiz(&self) -> &GNPTXFSIZ {
120        &self.gnptxfsiz
121    }
122    #[doc = "0x2c - "]
123    #[inline(always)]
124    pub const fn gnptxsts(&self) -> &GNPTXSTS {
125        &self.gnptxsts
126    }
127    #[doc = "0x40 - "]
128    #[inline(always)]
129    pub const fn gsnpsid(&self) -> &GSNPSID {
130        &self.gsnpsid
131    }
132    #[doc = "0x44 - "]
133    #[inline(always)]
134    pub const fn ghwcfg1(&self) -> &GHWCFG1 {
135        &self.ghwcfg1
136    }
137    #[doc = "0x48 - "]
138    #[inline(always)]
139    pub const fn ghwcfg2(&self) -> &GHWCFG2 {
140        &self.ghwcfg2
141    }
142    #[doc = "0x4c - "]
143    #[inline(always)]
144    pub const fn ghwcfg3(&self) -> &GHWCFG3 {
145        &self.ghwcfg3
146    }
147    #[doc = "0x50 - "]
148    #[inline(always)]
149    pub const fn ghwcfg4(&self) -> &GHWCFG4 {
150        &self.ghwcfg4
151    }
152    #[doc = "0x5c - "]
153    #[inline(always)]
154    pub const fn gdfifocfg(&self) -> &GDFIFOCFG {
155        &self.gdfifocfg
156    }
157    #[doc = "0x100 - "]
158    #[inline(always)]
159    pub const fn hptxfsiz(&self) -> &HPTXFSIZ {
160        &self.hptxfsiz
161    }
162    #[doc = "0x104..0x114 - "]
163    #[doc = ""]
164    #[doc = "<div class=\"warning\">`n` is the index of register in the array. `n == 0` corresponds to `DIEPTXF1` register.</div>"]
165    #[inline(always)]
166    pub const fn dieptxf(&self, n: usize) -> &DIEPTXF {
167        &self.dieptxf[n]
168    }
169    #[doc = "Iterator for array of:"]
170    #[doc = "0x104..0x114 - "]
171    #[inline(always)]
172    pub fn dieptxf_iter(&self) -> impl Iterator<Item = &DIEPTXF> {
173        self.dieptxf.iter()
174    }
175    #[doc = "0x104 - DIEPTXF1"]
176    #[inline(always)]
177    pub const fn dieptxf1(&self) -> &DIEPTXF {
178        self.dieptxf(0)
179    }
180    #[doc = "0x108 - DIEPTXF2"]
181    #[inline(always)]
182    pub const fn dieptxf2(&self) -> &DIEPTXF {
183        self.dieptxf(1)
184    }
185    #[doc = "0x10c - DIEPTXF3"]
186    #[inline(always)]
187    pub const fn dieptxf3(&self) -> &DIEPTXF {
188        self.dieptxf(2)
189    }
190    #[doc = "0x110 - DIEPTXF4"]
191    #[inline(always)]
192    pub const fn dieptxf4(&self) -> &DIEPTXF {
193        self.dieptxf(3)
194    }
195    #[doc = "0x400 - "]
196    #[inline(always)]
197    pub const fn hcfg(&self) -> &HCFG {
198        &self.hcfg
199    }
200    #[doc = "0x404 - "]
201    #[inline(always)]
202    pub const fn hfir(&self) -> &HFIR {
203        &self.hfir
204    }
205    #[doc = "0x408 - "]
206    #[inline(always)]
207    pub const fn hfnum(&self) -> &HFNUM {
208        &self.hfnum
209    }
210    #[doc = "0x410 - "]
211    #[inline(always)]
212    pub const fn hptxsts(&self) -> &HPTXSTS {
213        &self.hptxsts
214    }
215    #[doc = "0x414 - "]
216    #[inline(always)]
217    pub const fn haint(&self) -> &HAINT {
218        &self.haint
219    }
220    #[doc = "0x418 - "]
221    #[inline(always)]
222    pub const fn haintmsk(&self) -> &HAINTMSK {
223        &self.haintmsk
224    }
225    #[doc = "0x41c - "]
226    #[inline(always)]
227    pub const fn hflbaddr(&self) -> &HFLBADDR {
228        &self.hflbaddr
229    }
230    #[doc = "0x440 - "]
231    #[inline(always)]
232    pub const fn hprt(&self) -> &HPRT {
233        &self.hprt
234    }
235    #[doc = "0x500..0x600 - Cluster HC%s, containing HCCHAR?, HCINT?, HCINTMSK?, HCTSIZ?, HCDMA?, HCDMAB?"]
236    #[inline(always)]
237    pub const fn hc(&self, n: usize) -> &HC {
238        &self.hc[n]
239    }
240    #[doc = "Iterator for array of:"]
241    #[doc = "0x500..0x600 - Cluster HC%s, containing HCCHAR?, HCINT?, HCINTMSK?, HCTSIZ?, HCDMA?, HCDMAB?"]
242    #[inline(always)]
243    pub fn hc_iter(&self) -> impl Iterator<Item = &HC> {
244        self.hc.iter()
245    }
246    #[doc = "0x800 - "]
247    #[inline(always)]
248    pub const fn dcfg(&self) -> &DCFG {
249        &self.dcfg
250    }
251    #[doc = "0x804 - "]
252    #[inline(always)]
253    pub const fn dctl(&self) -> &DCTL {
254        &self.dctl
255    }
256    #[doc = "0x808 - "]
257    #[inline(always)]
258    pub const fn dsts(&self) -> &DSTS {
259        &self.dsts
260    }
261    #[doc = "0x810 - "]
262    #[inline(always)]
263    pub const fn diepmsk(&self) -> &DIEPMSK {
264        &self.diepmsk
265    }
266    #[doc = "0x814 - "]
267    #[inline(always)]
268    pub const fn doepmsk(&self) -> &DOEPMSK {
269        &self.doepmsk
270    }
271    #[doc = "0x818 - "]
272    #[inline(always)]
273    pub const fn daint(&self) -> &DAINT {
274        &self.daint
275    }
276    #[doc = "0x81c - "]
277    #[inline(always)]
278    pub const fn daintmsk(&self) -> &DAINTMSK {
279        &self.daintmsk
280    }
281    #[doc = "0x828 - "]
282    #[inline(always)]
283    pub const fn dvbusdis(&self) -> &DVBUSDIS {
284        &self.dvbusdis
285    }
286    #[doc = "0x82c - "]
287    #[inline(always)]
288    pub const fn dvbuspulse(&self) -> &DVBUSPULSE {
289        &self.dvbuspulse
290    }
291    #[doc = "0x830 - "]
292    #[inline(always)]
293    pub const fn dthrctl(&self) -> &DTHRCTL {
294        &self.dthrctl
295    }
296    #[doc = "0x834 - "]
297    #[inline(always)]
298    pub const fn diepempmsk(&self) -> &DIEPEMPMSK {
299        &self.diepempmsk
300    }
301    #[doc = "0x900..0x920 - Device IN endpoint 0"]
302    #[inline(always)]
303    pub const fn in_ep0(&self) -> &IN_EP0 {
304        &self.in_ep0
305    }
306    #[doc = "0x920..0x9e0 - Device IN endpoints 1-6"]
307    #[doc = ""]
308    #[doc = "<div class=\"warning\">`n` is the index of cluster in the array. `n == 0` corresponds to `IN_EP1` cluster.</div>"]
309    #[inline(always)]
310    pub const fn in_ep(&self, n: usize) -> &IN_EP {
311        &self.in_ep[n]
312    }
313    #[doc = "Iterator for array of:"]
314    #[doc = "0x920..0x9e0 - Device IN endpoints 1-6"]
315    #[inline(always)]
316    pub fn in_ep_iter(&self) -> impl Iterator<Item = &IN_EP> {
317        self.in_ep.iter()
318    }
319    #[doc = "0x920..0x940 - Device IN endpoints 1-6"]
320    #[inline(always)]
321    pub const fn in_ep1(&self) -> &IN_EP {
322        self.in_ep(0)
323    }
324    #[doc = "0x940..0x960 - Device IN endpoints 1-6"]
325    #[inline(always)]
326    pub const fn in_ep2(&self) -> &IN_EP {
327        self.in_ep(1)
328    }
329    #[doc = "0x960..0x980 - Device IN endpoints 1-6"]
330    #[inline(always)]
331    pub const fn in_ep3(&self) -> &IN_EP {
332        self.in_ep(2)
333    }
334    #[doc = "0x980..0x9a0 - Device IN endpoints 1-6"]
335    #[inline(always)]
336    pub const fn in_ep4(&self) -> &IN_EP {
337        self.in_ep(3)
338    }
339    #[doc = "0x9a0..0x9c0 - Device IN endpoints 1-6"]
340    #[inline(always)]
341    pub const fn in_ep5(&self) -> &IN_EP {
342        self.in_ep(4)
343    }
344    #[doc = "0x9c0..0x9e0 - Device IN endpoints 1-6"]
345    #[inline(always)]
346    pub const fn in_ep6(&self) -> &IN_EP {
347        self.in_ep(5)
348    }
349    #[doc = "0xb00..0xb20 - Device OUT endpoint 0"]
350    #[inline(always)]
351    pub const fn out_ep0(&self) -> &OUT_EP0 {
352        &self.out_ep0
353    }
354    #[doc = "0xb20..0xbe0 - Device OUT endpoints 1-6"]
355    #[doc = ""]
356    #[doc = "<div class=\"warning\">`n` is the index of cluster in the array. `n == 0` corresponds to `OUT_EP1` cluster.</div>"]
357    #[inline(always)]
358    pub const fn out_ep(&self, n: usize) -> &OUT_EP {
359        &self.out_ep[n]
360    }
361    #[doc = "Iterator for array of:"]
362    #[doc = "0xb20..0xbe0 - Device OUT endpoints 1-6"]
363    #[inline(always)]
364    pub fn out_ep_iter(&self) -> impl Iterator<Item = &OUT_EP> {
365        self.out_ep.iter()
366    }
367    #[doc = "0xb20..0xb40 - Device OUT endpoints 1-6"]
368    #[inline(always)]
369    pub const fn out_ep1(&self) -> &OUT_EP {
370        self.out_ep(0)
371    }
372    #[doc = "0xb40..0xb60 - Device OUT endpoints 1-6"]
373    #[inline(always)]
374    pub const fn out_ep2(&self) -> &OUT_EP {
375        self.out_ep(1)
376    }
377    #[doc = "0xb60..0xb80 - Device OUT endpoints 1-6"]
378    #[inline(always)]
379    pub const fn out_ep3(&self) -> &OUT_EP {
380        self.out_ep(2)
381    }
382    #[doc = "0xb80..0xba0 - Device OUT endpoints 1-6"]
383    #[inline(always)]
384    pub const fn out_ep4(&self) -> &OUT_EP {
385        self.out_ep(3)
386    }
387    #[doc = "0xba0..0xbc0 - Device OUT endpoints 1-6"]
388    #[inline(always)]
389    pub const fn out_ep5(&self) -> &OUT_EP {
390        self.out_ep(4)
391    }
392    #[doc = "0xbc0..0xbe0 - Device OUT endpoints 1-6"]
393    #[inline(always)]
394    pub const fn out_ep6(&self) -> &OUT_EP {
395        self.out_ep(5)
396    }
397    #[doc = "0xe00 - "]
398    #[inline(always)]
399    pub const fn pcgcctl(&self) -> &PCGCCTL {
400        &self.pcgcctl
401    }
402    #[doc = "0x1000..0x1040 - Read and write data to the USB FIFOs through this register."]
403    #[inline(always)]
404    pub const fn fifo(&self, n: usize) -> &FIFO {
405        #[allow(clippy::no_effect)]
406        [(); 16][n];
407        unsafe {
408            &*core::ptr::from_ref(self)
409                .cast::<u8>()
410                .add(4096)
411                .add(4096 * n)
412                .cast()
413        }
414    }
415    #[doc = "Iterator for array of:"]
416    #[doc = "0x1000..0x1040 - Read and write data to the USB FIFOs through this register."]
417    #[inline(always)]
418    pub fn fifo_iter(&self) -> impl Iterator<Item = &FIFO> {
419        (0..16).map(move |n| unsafe {
420            &*core::ptr::from_ref(self)
421                .cast::<u8>()
422                .add(4096)
423                .add(4096 * n)
424                .cast()
425        })
426    }
427}
428#[doc = "GOTGCTL (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gotgctl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gotgctl::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@gotgctl`] module"]
429pub type GOTGCTL = crate::Reg<gotgctl::GOTGCTL_SPEC>;
430#[doc = ""]
431pub mod gotgctl;
432#[doc = "GOTGINT (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gotgint::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gotgint::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@gotgint`] module"]
433pub type GOTGINT = crate::Reg<gotgint::GOTGINT_SPEC>;
434#[doc = ""]
435pub mod gotgint;
436#[doc = "GAHBCFG (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gahbcfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gahbcfg::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@gahbcfg`] module"]
437pub type GAHBCFG = crate::Reg<gahbcfg::GAHBCFG_SPEC>;
438#[doc = ""]
439pub mod gahbcfg;
440#[doc = "GUSBCFG (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gusbcfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gusbcfg::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@gusbcfg`] module"]
441pub type GUSBCFG = crate::Reg<gusbcfg::GUSBCFG_SPEC>;
442#[doc = ""]
443pub mod gusbcfg;
444#[doc = "GRSTCTL (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`grstctl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`grstctl::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@grstctl`] module"]
445pub type GRSTCTL = crate::Reg<grstctl::GRSTCTL_SPEC>;
446#[doc = ""]
447pub mod grstctl;
448#[doc = "GINTSTS (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gintsts::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gintsts::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@gintsts`] module"]
449pub type GINTSTS = crate::Reg<gintsts::GINTSTS_SPEC>;
450#[doc = ""]
451pub mod gintsts;
452#[doc = "GINTMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gintmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gintmsk::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@gintmsk`] module"]
453pub type GINTMSK = crate::Reg<gintmsk::GINTMSK_SPEC>;
454#[doc = ""]
455pub mod gintmsk;
456#[doc = "GRXSTSR (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`grxstsr::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@grxstsr`] module"]
457pub type GRXSTSR = crate::Reg<grxstsr::GRXSTSR_SPEC>;
458#[doc = ""]
459pub mod grxstsr;
460#[doc = "GRXSTSP (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`grxstsp::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@grxstsp`] module"]
461pub type GRXSTSP = crate::Reg<grxstsp::GRXSTSP_SPEC>;
462#[doc = ""]
463pub mod grxstsp;
464#[doc = "GRXFSIZ (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`grxfsiz::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`grxfsiz::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@grxfsiz`] module"]
465pub type GRXFSIZ = crate::Reg<grxfsiz::GRXFSIZ_SPEC>;
466#[doc = ""]
467pub mod grxfsiz;
468#[doc = "GNPTXFSIZ (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gnptxfsiz::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gnptxfsiz::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@gnptxfsiz`] module"]
469pub type GNPTXFSIZ = crate::Reg<gnptxfsiz::GNPTXFSIZ_SPEC>;
470#[doc = ""]
471pub mod gnptxfsiz;
472#[doc = "GNPTXSTS (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gnptxsts::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@gnptxsts`] module"]
473pub type GNPTXSTS = crate::Reg<gnptxsts::GNPTXSTS_SPEC>;
474#[doc = ""]
475pub mod gnptxsts;
476#[doc = "GSNPSID (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gsnpsid::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@gsnpsid`] module"]
477pub type GSNPSID = crate::Reg<gsnpsid::GSNPSID_SPEC>;
478#[doc = ""]
479pub mod gsnpsid;
480#[doc = "GHWCFG1 (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`ghwcfg1::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ghwcfg1`] module"]
481pub type GHWCFG1 = crate::Reg<ghwcfg1::GHWCFG1_SPEC>;
482#[doc = ""]
483pub mod ghwcfg1;
484#[doc = "GHWCFG2 (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`ghwcfg2::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ghwcfg2`] module"]
485pub type GHWCFG2 = crate::Reg<ghwcfg2::GHWCFG2_SPEC>;
486#[doc = ""]
487pub mod ghwcfg2;
488#[doc = "GHWCFG3 (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`ghwcfg3::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ghwcfg3`] module"]
489pub type GHWCFG3 = crate::Reg<ghwcfg3::GHWCFG3_SPEC>;
490#[doc = ""]
491pub mod ghwcfg3;
492#[doc = "GHWCFG4 (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`ghwcfg4::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@ghwcfg4`] module"]
493pub type GHWCFG4 = crate::Reg<ghwcfg4::GHWCFG4_SPEC>;
494#[doc = ""]
495pub mod ghwcfg4;
496#[doc = "GDFIFOCFG (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`gdfifocfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`gdfifocfg::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@gdfifocfg`] module"]
497pub type GDFIFOCFG = crate::Reg<gdfifocfg::GDFIFOCFG_SPEC>;
498#[doc = ""]
499pub mod gdfifocfg;
500#[doc = "HPTXFSIZ (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hptxfsiz::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`hptxfsiz::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@hptxfsiz`] module"]
501pub type HPTXFSIZ = crate::Reg<hptxfsiz::HPTXFSIZ_SPEC>;
502#[doc = ""]
503pub mod hptxfsiz;
504#[doc = "DIEPTXF (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dieptxf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dieptxf::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@dieptxf`] module"]
505pub type DIEPTXF = crate::Reg<dieptxf::DIEPTXF_SPEC>;
506#[doc = ""]
507pub mod dieptxf;
508#[doc = "HCFG (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hcfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`hcfg::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@hcfg`] module"]
509pub type HCFG = crate::Reg<hcfg::HCFG_SPEC>;
510#[doc = ""]
511pub mod hcfg;
512#[doc = "HFIR (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hfir::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`hfir::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@hfir`] module"]
513pub type HFIR = crate::Reg<hfir::HFIR_SPEC>;
514#[doc = ""]
515pub mod hfir;
516#[doc = "HFNUM (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hfnum::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@hfnum`] module"]
517pub type HFNUM = crate::Reg<hfnum::HFNUM_SPEC>;
518#[doc = ""]
519pub mod hfnum;
520#[doc = "HPTXSTS (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hptxsts::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@hptxsts`] module"]
521pub type HPTXSTS = crate::Reg<hptxsts::HPTXSTS_SPEC>;
522#[doc = ""]
523pub mod hptxsts;
524#[doc = "HAINT (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`haint::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@haint`] module"]
525pub type HAINT = crate::Reg<haint::HAINT_SPEC>;
526#[doc = ""]
527pub mod haint;
528#[doc = "HAINTMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`haintmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`haintmsk::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@haintmsk`] module"]
529pub type HAINTMSK = crate::Reg<haintmsk::HAINTMSK_SPEC>;
530#[doc = ""]
531pub mod haintmsk;
532#[doc = "HFLBADDR (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hflbaddr::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`hflbaddr::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@hflbaddr`] module"]
533pub type HFLBADDR = crate::Reg<hflbaddr::HFLBADDR_SPEC>;
534#[doc = ""]
535pub mod hflbaddr;
536#[doc = "HPRT (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`hprt::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`hprt::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@hprt`] module"]
537pub type HPRT = crate::Reg<hprt::HPRT_SPEC>;
538#[doc = ""]
539pub mod hprt;
540#[doc = "Cluster HC%s, containing HCCHAR?, HCINT?, HCINTMSK?, HCTSIZ?, HCDMA?, HCDMAB?"]
541pub use self::hc::HC;
542#[doc = r"Cluster"]
543#[doc = "Cluster HC%s, containing HCCHAR?, HCINT?, HCINTMSK?, HCTSIZ?, HCDMA?, HCDMAB?"]
544pub mod hc;
545#[doc = "DCFG (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dcfg::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dcfg::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@dcfg`] module"]
546pub type DCFG = crate::Reg<dcfg::DCFG_SPEC>;
547#[doc = ""]
548pub mod dcfg;
549#[doc = "DCTL (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dctl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dctl::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@dctl`] module"]
550pub type DCTL = crate::Reg<dctl::DCTL_SPEC>;
551#[doc = ""]
552pub mod dctl;
553#[doc = "DSTS (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dsts::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@dsts`] module"]
554pub type DSTS = crate::Reg<dsts::DSTS_SPEC>;
555#[doc = ""]
556pub mod dsts;
557#[doc = "DIEPMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`diepmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`diepmsk::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@diepmsk`] module"]
558pub type DIEPMSK = crate::Reg<diepmsk::DIEPMSK_SPEC>;
559#[doc = ""]
560pub mod diepmsk;
561#[doc = "DOEPMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`doepmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`doepmsk::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@doepmsk`] module"]
562pub type DOEPMSK = crate::Reg<doepmsk::DOEPMSK_SPEC>;
563#[doc = ""]
564pub mod doepmsk;
565#[doc = "DAINT (r) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`daint::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@daint`] module"]
566pub type DAINT = crate::Reg<daint::DAINT_SPEC>;
567#[doc = ""]
568pub mod daint;
569#[doc = "DAINTMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`daintmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`daintmsk::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@daintmsk`] module"]
570pub type DAINTMSK = crate::Reg<daintmsk::DAINTMSK_SPEC>;
571#[doc = ""]
572pub mod daintmsk;
573#[doc = "DVBUSDIS (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dvbusdis::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dvbusdis::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@dvbusdis`] module"]
574pub type DVBUSDIS = crate::Reg<dvbusdis::DVBUSDIS_SPEC>;
575#[doc = ""]
576pub mod dvbusdis;
577#[doc = "DVBUSPULSE (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dvbuspulse::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dvbuspulse::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@dvbuspulse`] module"]
578pub type DVBUSPULSE = crate::Reg<dvbuspulse::DVBUSPULSE_SPEC>;
579#[doc = ""]
580pub mod dvbuspulse;
581#[doc = "DTHRCTL (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`dthrctl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`dthrctl::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@dthrctl`] module"]
582pub type DTHRCTL = crate::Reg<dthrctl::DTHRCTL_SPEC>;
583#[doc = ""]
584pub mod dthrctl;
585#[doc = "DIEPEMPMSK (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`diepempmsk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`diepempmsk::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@diepempmsk`] module"]
586pub type DIEPEMPMSK = crate::Reg<diepempmsk::DIEPEMPMSK_SPEC>;
587#[doc = ""]
588pub mod diepempmsk;
589#[doc = "Device IN endpoint 0"]
590pub use self::in_ep0::IN_EP0;
591#[doc = r"Cluster"]
592#[doc = "Device IN endpoint 0"]
593pub mod in_ep0;
594#[doc = "Device IN endpoints 1-6"]
595pub use self::in_ep::IN_EP;
596#[doc = r"Cluster"]
597#[doc = "Device IN endpoints 1-6"]
598pub mod in_ep;
599#[doc = "Device OUT endpoint 0"]
600pub use self::out_ep0::OUT_EP0;
601#[doc = r"Cluster"]
602#[doc = "Device OUT endpoint 0"]
603pub mod out_ep0;
604#[doc = "Device OUT endpoints 1-6"]
605pub use self::out_ep::OUT_EP;
606#[doc = r"Cluster"]
607#[doc = "Device OUT endpoints 1-6"]
608pub mod out_ep;
609#[doc = "PCGCCTL (rw) register accessor: \n\nYou can [`read`](crate::Reg::read) this register and get [`pcgcctl::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`pcgcctl::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@pcgcctl`] module"]
610pub type PCGCCTL = crate::Reg<pcgcctl::PCGCCTL_SPEC>;
611#[doc = ""]
612pub mod pcgcctl;
613#[doc = "FIFO (rw) register accessor: Read and write data to the USB FIFOs through this register.\n\nYou can [`read`](crate::Reg::read) this register and get [`fifo::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`fifo::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@fifo`] module"]
614pub type FIFO = crate::Reg<fifo::FIFO_SPEC>;
615#[doc = "Read and write data to the USB FIFOs through this register."]
616pub mod fifo;