ra4m1/
usbfs.rs

1#[doc = r"Register block"]
2#[repr(C)]
3pub struct RegisterBlock {
4    #[doc = "0x00 - System Configuration Control Register"]
5    pub syscfg: SYSCFG,
6    _reserved1: [u8; 0x02],
7    #[doc = "0x04 - System Configuration Status Register 0"]
8    pub syssts0: SYSSTS0,
9    _reserved2: [u8; 0x02],
10    #[doc = "0x08 - Device State Control Register 0"]
11    pub dvstctr0: DVSTCTR0,
12    _reserved3: [u8; 0x0a],
13    _reserved_3_cfifo: [u8; 0x02],
14    _reserved4: [u8; 0x02],
15    _reserved_4_d: [u8; 0x02],
16    _reserved5: [u8; 0x02],
17    _reserved_5_d: [u8; 0x02],
18    _reserved6: [u8; 0x02],
19    #[doc = "0x20 - CFIFO Port Select Register"]
20    pub cfifosel: CFIFOSEL,
21    #[doc = "0x22 - CFIFO Port Control Register"]
22    pub cfifoctr: CFIFOCTR,
23    _reserved8: [u8; 0x04],
24    #[doc = "0x28 - D0FIFO Port Select Register"]
25    pub d0fifosel: D0FIFOSEL,
26    #[doc = "0x2a - D0FIFO Port Control Register"]
27    pub d0fifoctr: D0FIFOCTR,
28    #[doc = "0x2c - D1FIFO Port Select Register"]
29    pub d1fifosel: D1FIFOSEL,
30    #[doc = "0x2e - D1FIFO Port Control Register"]
31    pub d1fifoctr: D1FIFOCTR,
32    #[doc = "0x30 - Interrupt Enable Register 0"]
33    pub intenb0: INTENB0,
34    #[doc = "0x32 - Interrupt Enable Register 1"]
35    pub intenb1: INTENB1,
36    _reserved14: [u8; 0x02],
37    #[doc = "0x36 - BRDY Interrupt Enable Register"]
38    pub brdyenb: BRDYENB,
39    #[doc = "0x38 - NRDY Interrupt Enable Register"]
40    pub nrdyenb: NRDYENB,
41    #[doc = "0x3a - BEMP Interrupt Enable Register"]
42    pub bempenb: BEMPENB,
43    #[doc = "0x3c - SOF Output Configuration Register"]
44    pub sofcfg: SOFCFG,
45    _reserved18: [u8; 0x02],
46    #[doc = "0x40 - Interrupt Status Register 0"]
47    pub intsts0: INTSTS0,
48    #[doc = "0x42 - Interrupt Status Register 1"]
49    pub intsts1: INTSTS1,
50    _reserved20: [u8; 0x02],
51    #[doc = "0x46 - BRDY Interrupt Status Register"]
52    pub brdysts: BRDYSTS,
53    #[doc = "0x48 - NRDY Interrupt Status Register"]
54    pub nrdysts: NRDYSTS,
55    #[doc = "0x4a - BEMP Interrupt Status Register"]
56    pub bempsts: BEMPSTS,
57    #[doc = "0x4c - Frame Number Register"]
58    pub frmnum: FRMNUM,
59    _reserved24: [u8; 0x06],
60    #[doc = "0x54 - USB Request Type Register"]
61    pub usbreq: USBREQ,
62    #[doc = "0x56 - USB Request Value Register"]
63    pub usbval: USBVAL,
64    #[doc = "0x58 - USB Request Index Register"]
65    pub usbindx: USBINDX,
66    #[doc = "0x5a - USB Request Length Register"]
67    pub usbleng: USBLENG,
68    #[doc = "0x5c - DCP Configuration Register"]
69    pub dcpcfg: DCPCFG,
70    #[doc = "0x5e - DCP Maximum Packet Size Register"]
71    pub dcpmaxp: DCPMAXP,
72    #[doc = "0x60 - DCP Control Register"]
73    pub dcpctr: DCPCTR,
74    _reserved31: [u8; 0x02],
75    #[doc = "0x64 - Pipe Window Select Register"]
76    pub pipesel: PIPESEL,
77    _reserved32: [u8; 0x02],
78    #[doc = "0x68 - Pipe Configuration Register"]
79    pub pipecfg: PIPECFG,
80    _reserved33: [u8; 0x02],
81    #[doc = "0x6c - Pipe Maximum Packet Size Register"]
82    pub pipemaxp: PIPEMAXP,
83    #[doc = "0x6e - Pipe Cycle Control Register"]
84    pub pipeperi: PIPEPERI,
85    #[doc = "0x70..0x7a - Pipe %s Control Register"]
86    pub pipectr: [PIPECTR; 5],
87    #[doc = "0x7a - Pipe %s Control Register"]
88    pub pipe6ctr: PIPE6CTR,
89    #[doc = "0x7c - Pipe %s Control Register"]
90    pub pipe7ctr: PIPE6CTR,
91    #[doc = "0x7e - Pipe %s Control Register"]
92    pub pipe8ctr: PIPE6CTR,
93    #[doc = "0x80 - Pipe %s Control Register"]
94    pub pipe9ctr: PIPE6CTR,
95    _reserved40: [u8; 0x0e],
96    #[doc = "0x90 - Pipe %s Transaction Counter Enable Register"]
97    pub pipe1tre: PIPETRE,
98    #[doc = "0x92 - Pipe %s Transaction Counter Register"]
99    pub pipe1trn: PIPETRN,
100    #[doc = "0x94 - Pipe %s Transaction Counter Enable Register"]
101    pub pipe2tre: PIPETRE,
102    #[doc = "0x96 - Pipe %s Transaction Counter Register"]
103    pub pipe2trn: PIPETRN,
104    #[doc = "0x98 - Pipe %s Transaction Counter Enable Register"]
105    pub pipe3tre: PIPETRE,
106    #[doc = "0x9a - Pipe %s Transaction Counter Register"]
107    pub pipe3trn: PIPETRN,
108    #[doc = "0x9c - Pipe %s Transaction Counter Enable Register"]
109    pub pipe4tre: PIPETRE,
110    #[doc = "0x9e - Pipe %s Transaction Counter Register"]
111    pub pipe4trn: PIPETRN,
112    #[doc = "0xa0 - Pipe %s Transaction Counter Enable Register"]
113    pub pipe5tre: PIPETRE,
114    #[doc = "0xa2 - Pipe %s Transaction Counter Register"]
115    pub pipe5trn: PIPETRN,
116    _reserved50: [u8; 0x0c],
117    #[doc = "0xb0 - BC Control Register 0"]
118    pub usbbcctrl0: USBBCCTRL0,
119    _reserved51: [u8; 0x1a],
120    #[doc = "0xcc - USB Module Control Register"]
121    pub usbmc: USBMC,
122    _reserved52: [u8; 0x02],
123    #[doc = "0xd0..0xdc - Device Address %s Configuration Register"]
124    pub devadd: [DEVADD; 6],
125}
126impl RegisterBlock {
127    #[doc = "0x14 - CFIFO Port Register L"]
128    #[inline(always)]
129    pub const fn cfifol(&self) -> &CFIFOL {
130        unsafe { &*(self as *const Self).cast::<u8>().add(20usize).cast() }
131    }
132    #[doc = "0x14 - CFIFO Port Register"]
133    #[inline(always)]
134    pub const fn cfifo(&self) -> &CFIFO {
135        unsafe { &*(self as *const Self).cast::<u8>().add(20usize).cast() }
136    }
137    #[doc = "0x18 - D0FIFO Port Register L"]
138    #[inline(always)]
139    pub const fn d0fifol(&self) -> &D0FIFOL {
140        unsafe { &*(self as *const Self).cast::<u8>().add(24usize).cast() }
141    }
142    #[doc = "0x18 - D0FIFO Port Register"]
143    #[inline(always)]
144    pub const fn d0fifo(&self) -> &D0FIFO {
145        unsafe { &*(self as *const Self).cast::<u8>().add(24usize).cast() }
146    }
147    #[doc = "0x1c - D1FIFO Port Register L"]
148    #[inline(always)]
149    pub const fn d1fifol(&self) -> &D1FIFOL {
150        unsafe { &*(self as *const Self).cast::<u8>().add(28usize).cast() }
151    }
152    #[doc = "0x1c - D1FIFO Port Register"]
153    #[inline(always)]
154    pub const fn d1fifo(&self) -> &D1FIFO {
155        unsafe { &*(self as *const Self).cast::<u8>().add(28usize).cast() }
156    }
157    #[doc = "0x70 - Pipe %s Control Register"]
158    #[inline(always)]
159    pub fn pipe1ctr(&self) -> &PIPECTR {
160        &self.pipectr[0]
161    }
162    #[doc = "0x72 - Pipe %s Control Register"]
163    #[inline(always)]
164    pub fn pipe2ctr(&self) -> &PIPECTR {
165        &self.pipectr[1]
166    }
167    #[doc = "0x74 - Pipe %s Control Register"]
168    #[inline(always)]
169    pub fn pipe3ctr(&self) -> &PIPECTR {
170        &self.pipectr[2]
171    }
172    #[doc = "0x76 - Pipe %s Control Register"]
173    #[inline(always)]
174    pub fn pipe4ctr(&self) -> &PIPECTR {
175        &self.pipectr[3]
176    }
177    #[doc = "0x78 - Pipe %s Control Register"]
178    #[inline(always)]
179    pub fn pipe5ctr(&self) -> &PIPECTR {
180        &self.pipectr[4]
181    }
182}
183#[doc = "SYSCFG (rw) register accessor: an alias for `Reg<SYSCFG_SPEC>`"]
184pub type SYSCFG = crate::Reg<syscfg::SYSCFG_SPEC>;
185#[doc = "System Configuration Control Register"]
186pub mod syscfg;
187#[doc = "SYSSTS0 (r) register accessor: an alias for `Reg<SYSSTS0_SPEC>`"]
188pub type SYSSTS0 = crate::Reg<syssts0::SYSSTS0_SPEC>;
189#[doc = "System Configuration Status Register 0"]
190pub mod syssts0;
191#[doc = "DVSTCTR0 (rw) register accessor: an alias for `Reg<DVSTCTR0_SPEC>`"]
192pub type DVSTCTR0 = crate::Reg<dvstctr0::DVSTCTR0_SPEC>;
193#[doc = "Device State Control Register 0"]
194pub mod dvstctr0;
195#[doc = "CFIFO (rw) register accessor: an alias for `Reg<CFIFO_SPEC>`"]
196pub type CFIFO = crate::Reg<cfifo::CFIFO_SPEC>;
197#[doc = "CFIFO Port Register"]
198pub mod cfifo;
199#[doc = "CFIFOL (rw) register accessor: an alias for `Reg<CFIFOL_SPEC>`"]
200pub type CFIFOL = crate::Reg<cfifol::CFIFOL_SPEC>;
201#[doc = "CFIFO Port Register L"]
202pub mod cfifol;
203#[doc = "D0FIFO (rw) register accessor: an alias for `Reg<D0FIFO_SPEC>`"]
204pub type D0FIFO = crate::Reg<d0fifo::D0FIFO_SPEC>;
205#[doc = "D0FIFO Port Register"]
206pub mod d0fifo;
207#[doc = "D0FIFOL (rw) register accessor: an alias for `Reg<D0FIFOL_SPEC>`"]
208pub type D0FIFOL = crate::Reg<d0fifol::D0FIFOL_SPEC>;
209#[doc = "D0FIFO Port Register L"]
210pub mod d0fifol;
211#[doc = "D1FIFO (rw) register accessor: an alias for `Reg<D1FIFO_SPEC>`"]
212pub type D1FIFO = crate::Reg<d1fifo::D1FIFO_SPEC>;
213#[doc = "D1FIFO Port Register"]
214pub mod d1fifo;
215#[doc = "D1FIFOL (rw) register accessor: an alias for `Reg<D1FIFOL_SPEC>`"]
216pub type D1FIFOL = crate::Reg<d1fifol::D1FIFOL_SPEC>;
217#[doc = "D1FIFO Port Register L"]
218pub mod d1fifol;
219#[doc = "CFIFOSEL (rw) register accessor: an alias for `Reg<CFIFOSEL_SPEC>`"]
220pub type CFIFOSEL = crate::Reg<cfifosel::CFIFOSEL_SPEC>;
221#[doc = "CFIFO Port Select Register"]
222pub mod cfifosel;
223#[doc = "CFIFOCTR (rw) register accessor: an alias for `Reg<CFIFOCTR_SPEC>`"]
224pub type CFIFOCTR = crate::Reg<cfifoctr::CFIFOCTR_SPEC>;
225#[doc = "CFIFO Port Control Register"]
226pub mod cfifoctr;
227#[doc = "D0FIFOSEL (rw) register accessor: an alias for `Reg<D0FIFOSEL_SPEC>`"]
228pub type D0FIFOSEL = crate::Reg<d0fifosel::D0FIFOSEL_SPEC>;
229#[doc = "D0FIFO Port Select Register"]
230pub mod d0fifosel;
231#[doc = "D0FIFOCTR (rw) register accessor: an alias for `Reg<D0FIFOCTR_SPEC>`"]
232pub type D0FIFOCTR = crate::Reg<d0fifoctr::D0FIFOCTR_SPEC>;
233#[doc = "D0FIFO Port Control Register"]
234pub mod d0fifoctr;
235#[doc = "D1FIFOSEL (rw) register accessor: an alias for `Reg<D1FIFOSEL_SPEC>`"]
236pub type D1FIFOSEL = crate::Reg<d1fifosel::D1FIFOSEL_SPEC>;
237#[doc = "D1FIFO Port Select Register"]
238pub mod d1fifosel;
239#[doc = "D1FIFOCTR (rw) register accessor: an alias for `Reg<D1FIFOCTR_SPEC>`"]
240pub type D1FIFOCTR = crate::Reg<d1fifoctr::D1FIFOCTR_SPEC>;
241#[doc = "D1FIFO Port Control Register"]
242pub mod d1fifoctr;
243#[doc = "INTENB0 (rw) register accessor: an alias for `Reg<INTENB0_SPEC>`"]
244pub type INTENB0 = crate::Reg<intenb0::INTENB0_SPEC>;
245#[doc = "Interrupt Enable Register 0"]
246pub mod intenb0;
247#[doc = "INTENB1 (rw) register accessor: an alias for `Reg<INTENB1_SPEC>`"]
248pub type INTENB1 = crate::Reg<intenb1::INTENB1_SPEC>;
249#[doc = "Interrupt Enable Register 1"]
250pub mod intenb1;
251#[doc = "BRDYENB (rw) register accessor: an alias for `Reg<BRDYENB_SPEC>`"]
252pub type BRDYENB = crate::Reg<brdyenb::BRDYENB_SPEC>;
253#[doc = "BRDY Interrupt Enable Register"]
254pub mod brdyenb;
255#[doc = "NRDYENB (rw) register accessor: an alias for `Reg<NRDYENB_SPEC>`"]
256pub type NRDYENB = crate::Reg<nrdyenb::NRDYENB_SPEC>;
257#[doc = "NRDY Interrupt Enable Register"]
258pub mod nrdyenb;
259#[doc = "BEMPENB (rw) register accessor: an alias for `Reg<BEMPENB_SPEC>`"]
260pub type BEMPENB = crate::Reg<bempenb::BEMPENB_SPEC>;
261#[doc = "BEMP Interrupt Enable Register"]
262pub mod bempenb;
263#[doc = "SOFCFG (rw) register accessor: an alias for `Reg<SOFCFG_SPEC>`"]
264pub type SOFCFG = crate::Reg<sofcfg::SOFCFG_SPEC>;
265#[doc = "SOF Output Configuration Register"]
266pub mod sofcfg;
267#[doc = "INTSTS0 (rw) register accessor: an alias for `Reg<INTSTS0_SPEC>`"]
268pub type INTSTS0 = crate::Reg<intsts0::INTSTS0_SPEC>;
269#[doc = "Interrupt Status Register 0"]
270pub mod intsts0;
271#[doc = "INTSTS1 (rw) register accessor: an alias for `Reg<INTSTS1_SPEC>`"]
272pub type INTSTS1 = crate::Reg<intsts1::INTSTS1_SPEC>;
273#[doc = "Interrupt Status Register 1"]
274pub mod intsts1;
275#[doc = "BRDYSTS (rw) register accessor: an alias for `Reg<BRDYSTS_SPEC>`"]
276pub type BRDYSTS = crate::Reg<brdysts::BRDYSTS_SPEC>;
277#[doc = "BRDY Interrupt Status Register"]
278pub mod brdysts;
279#[doc = "NRDYSTS (rw) register accessor: an alias for `Reg<NRDYSTS_SPEC>`"]
280pub type NRDYSTS = crate::Reg<nrdysts::NRDYSTS_SPEC>;
281#[doc = "NRDY Interrupt Status Register"]
282pub mod nrdysts;
283#[doc = "BEMPSTS (rw) register accessor: an alias for `Reg<BEMPSTS_SPEC>`"]
284pub type BEMPSTS = crate::Reg<bempsts::BEMPSTS_SPEC>;
285#[doc = "BEMP Interrupt Status Register"]
286pub mod bempsts;
287#[doc = "FRMNUM (rw) register accessor: an alias for `Reg<FRMNUM_SPEC>`"]
288pub type FRMNUM = crate::Reg<frmnum::FRMNUM_SPEC>;
289#[doc = "Frame Number Register"]
290pub mod frmnum;
291#[doc = "USBREQ (rw) register accessor: an alias for `Reg<USBREQ_SPEC>`"]
292pub type USBREQ = crate::Reg<usbreq::USBREQ_SPEC>;
293#[doc = "USB Request Type Register"]
294pub mod usbreq;
295#[doc = "USBVAL (rw) register accessor: an alias for `Reg<USBVAL_SPEC>`"]
296pub type USBVAL = crate::Reg<usbval::USBVAL_SPEC>;
297#[doc = "USB Request Value Register"]
298pub mod usbval;
299#[doc = "USBINDX (rw) register accessor: an alias for `Reg<USBINDX_SPEC>`"]
300pub type USBINDX = crate::Reg<usbindx::USBINDX_SPEC>;
301#[doc = "USB Request Index Register"]
302pub mod usbindx;
303#[doc = "USBLENG (rw) register accessor: an alias for `Reg<USBLENG_SPEC>`"]
304pub type USBLENG = crate::Reg<usbleng::USBLENG_SPEC>;
305#[doc = "USB Request Length Register"]
306pub mod usbleng;
307#[doc = "DCPCFG (rw) register accessor: an alias for `Reg<DCPCFG_SPEC>`"]
308pub type DCPCFG = crate::Reg<dcpcfg::DCPCFG_SPEC>;
309#[doc = "DCP Configuration Register"]
310pub mod dcpcfg;
311#[doc = "DCPMAXP (rw) register accessor: an alias for `Reg<DCPMAXP_SPEC>`"]
312pub type DCPMAXP = crate::Reg<dcpmaxp::DCPMAXP_SPEC>;
313#[doc = "DCP Maximum Packet Size Register"]
314pub mod dcpmaxp;
315#[doc = "DCPCTR (rw) register accessor: an alias for `Reg<DCPCTR_SPEC>`"]
316pub type DCPCTR = crate::Reg<dcpctr::DCPCTR_SPEC>;
317#[doc = "DCP Control Register"]
318pub mod dcpctr;
319#[doc = "PIPESEL (rw) register accessor: an alias for `Reg<PIPESEL_SPEC>`"]
320pub type PIPESEL = crate::Reg<pipesel::PIPESEL_SPEC>;
321#[doc = "Pipe Window Select Register"]
322pub mod pipesel;
323#[doc = "PIPECFG (rw) register accessor: an alias for `Reg<PIPECFG_SPEC>`"]
324pub type PIPECFG = crate::Reg<pipecfg::PIPECFG_SPEC>;
325#[doc = "Pipe Configuration Register"]
326pub mod pipecfg;
327#[doc = "PIPEMAXP (rw) register accessor: an alias for `Reg<PIPEMAXP_SPEC>`"]
328pub type PIPEMAXP = crate::Reg<pipemaxp::PIPEMAXP_SPEC>;
329#[doc = "Pipe Maximum Packet Size Register"]
330pub mod pipemaxp;
331#[doc = "PIPEPERI (rw) register accessor: an alias for `Reg<PIPEPERI_SPEC>`"]
332pub type PIPEPERI = crate::Reg<pipeperi::PIPEPERI_SPEC>;
333#[doc = "Pipe Cycle Control Register"]
334pub mod pipeperi;
335#[doc = "PIPECTR (rw) register accessor: an alias for `Reg<PIPECTR_SPEC>`"]
336pub type PIPECTR = crate::Reg<pipectr::PIPECTR_SPEC>;
337#[doc = "Pipe %s Control Register"]
338pub mod pipectr;
339pub use pipectr as pipe6ctr;
340pub use PIPECTR as PIPE6CTR;
341#[doc = "PIPETRE (rw) register accessor: an alias for `Reg<PIPETRE_SPEC>`"]
342pub type PIPETRE = crate::Reg<pipetre::PIPETRE_SPEC>;
343#[doc = "Pipe %s Transaction Counter Enable Register"]
344pub mod pipetre;
345#[doc = "PIPETRN (rw) register accessor: an alias for `Reg<PIPETRN_SPEC>`"]
346pub type PIPETRN = crate::Reg<pipetrn::PIPETRN_SPEC>;
347#[doc = "Pipe %s Transaction Counter Register"]
348pub mod pipetrn;
349#[doc = "DEVADD (rw) register accessor: an alias for `Reg<DEVADD_SPEC>`"]
350pub type DEVADD = crate::Reg<devadd::DEVADD_SPEC>;
351#[doc = "Device Address %s Configuration Register"]
352pub mod devadd;
353#[doc = "USBMC (rw) register accessor: an alias for `Reg<USBMC_SPEC>`"]
354pub type USBMC = crate::Reg<usbmc::USBMC_SPEC>;
355#[doc = "USB Module Control Register"]
356pub mod usbmc;
357#[doc = "USBBCCTRL0 (rw) register accessor: an alias for `Reg<USBBCCTRL0_SPEC>`"]
358pub type USBBCCTRL0 = crate::Reg<usbbcctrl0::USBBCCTRL0_SPEC>;
359#[doc = "BC Control Register 0"]
360pub mod usbbcctrl0;