1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
#[doc = r" Register block"]
#[repr(C)]
pub struct RegisterBlock {
    _reserved0: [u8; 256usize],
    #[doc = "0x100 - Capability register length"]
    pub caplength: CAPLENGTH,
    #[doc = "0x104 - Host controller structural parameters"]
    pub hcsparams: HCSPARAMS,
    #[doc = "0x108 - Host controller capability parameters"]
    pub hccparams: HCCPARAMS,
    _reserved1: [u8; 20usize],
    #[doc = "0x120 - Device interface version number"]
    pub dciversion: DCIVERSION,
    _reserved2: [u8; 28usize],
    #[doc = "0x140 - USB command (device mode)"]
    pub usbcmd_d: USBCMD_D,
    #[doc = "0x144 - USB status (device mode)"]
    pub usbsts_d: USBSTS_D,
    #[doc = "0x148 - USB interrupt enable (device mode)"]
    pub usbintr_d: USBINTR_D,
    #[doc = "0x14c - USB frame index (device mode)"]
    pub frindex_d: FRINDEX_D,
    _reserved3: [u8; 4usize],
    #[doc = "0x154 - USB device address (device mode)"]
    pub deviceaddr: DEVICEADDR,
    #[doc = "0x158 - Address of endpoint list in memory"]
    pub endpointlistaddr: ENDPOINTLISTADDR,
    #[doc = "0x15c - Asynchronous buffer status for embedded TT (host mode)"]
    pub ttctrl: TTCTRL,
    #[doc = "0x160 - Programmable burst size"]
    pub burstsize: BURSTSIZE,
    #[doc = "0x164 - Host transmit pre-buffer packet tuning (host mode)"]
    pub txfilltuning: TXFILLTUNING,
    _reserved4: [u8; 12usize],
    #[doc = "0x174 - Length of virtual frame"]
    pub binterval: BINTERVAL,
    #[doc = "0x178 - Endpoint NAK (device mode)"]
    pub endptnak: ENDPTNAK,
    #[doc = "0x17c - Endpoint NAK Enable (device mode)"]
    pub endptnaken: ENDPTNAKEN,
    _reserved5: [u8; 4usize],
    #[doc = "0x184 - Port 1 status/control (device mode)"]
    pub portsc1_d: PORTSC1_D,
    _reserved6: [u8; 28usize],
    #[doc = "0x1a4 - OTG status and control"]
    pub otgsc: OTGSC,
    #[doc = "0x1a8 - USB device mode (device mode)"]
    pub usbmode_d: USBMODE_D,
    #[doc = "0x1ac - Endpoint setup status"]
    pub endptsetupstat: ENDPTSETUPSTAT,
    #[doc = "0x1b0 - Endpoint initialization"]
    pub endptprime: ENDPTPRIME,
    #[doc = "0x1b4 - Endpoint de-initialization"]
    pub endptflush: ENDPTFLUSH,
    #[doc = "0x1b8 - Endpoint status"]
    pub endptstat: ENDPTSTAT,
    #[doc = "0x1bc - Endpoint complete"]
    pub endptcomplete: ENDPTCOMPLETE,
    #[doc = "0x1c0 - Endpoint control 0"]
    pub endptctrl0: ENDPTCTRL0,
    #[doc = "0x1c4 - Endpoint control"]
    pub endptctrl1: ENDPTCTRL,
    #[doc = "0x1c8 - Endpoint control"]
    pub endptctrl2: ENDPTCTRL,
    #[doc = "0x1cc - Endpoint control"]
    pub endptctrl3: ENDPTCTRL,
    #[doc = "0x1d0 - Endpoint control"]
    pub endptctrl4: ENDPTCTRL,
    #[doc = "0x1d4 - Endpoint control"]
    pub endptctrl5: ENDPTCTRL,
}
#[doc = "Capability register length"]
pub struct CAPLENGTH {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Capability register length"]
pub mod caplength;
#[doc = "Host controller structural parameters"]
pub struct HCSPARAMS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Host controller structural parameters"]
pub mod hcsparams;
#[doc = "Host controller capability parameters"]
pub struct HCCPARAMS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Host controller capability parameters"]
pub mod hccparams;
#[doc = "Device interface version number"]
pub struct DCIVERSION {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Device interface version number"]
pub mod dciversion;
#[doc = "USB command (device mode)"]
pub struct USBCMD_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB command (device mode)"]
pub mod usbcmd_d;
#[doc = "USB command (host mode)"]
pub struct USBCMD_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB command (host mode)"]
pub mod usbcmd_h;
#[doc = "USB status (device mode)"]
pub struct USBSTS_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB status (device mode)"]
pub mod usbsts_d;
#[doc = "USB status (host mode)"]
pub struct USBSTS_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB status (host mode)"]
pub mod usbsts_h;
#[doc = "USB interrupt enable (device mode)"]
pub struct USBINTR_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB interrupt enable (device mode)"]
pub mod usbintr_d;
#[doc = "USB interrupt enable (host mode)"]
pub struct USBINTR_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB interrupt enable (host mode)"]
pub mod usbintr_h;
#[doc = "USB frame index (device mode)"]
pub struct FRINDEX_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB frame index (device mode)"]
pub mod frindex_d;
#[doc = "USB frame index (host mode)"]
pub struct FRINDEX_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB frame index (host mode)"]
pub mod frindex_h;
#[doc = "USB device address (device mode)"]
pub struct DEVICEADDR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB device address (device mode)"]
pub mod deviceaddr;
#[doc = "Frame list base address (host mode)"]
pub struct PERIODICLISTBASE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Frame list base address (host mode)"]
pub mod periodiclistbase;
#[doc = "Address of endpoint list in memory"]
pub struct ENDPOINTLISTADDR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Address of endpoint list in memory"]
pub mod endpointlistaddr;
#[doc = "Address of endpoint list in memory"]
pub struct ASYNCLISTADDR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Address of endpoint list in memory"]
pub mod asynclistaddr;
#[doc = "Asynchronous buffer status for embedded TT (host mode)"]
pub struct TTCTRL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Asynchronous buffer status for embedded TT (host mode)"]
pub mod ttctrl;
#[doc = "Programmable burst size"]
pub struct BURSTSIZE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Programmable burst size"]
pub mod burstsize;
#[doc = "Host transmit pre-buffer packet tuning (host mode)"]
pub struct TXFILLTUNING {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Host transmit pre-buffer packet tuning (host mode)"]
pub mod txfilltuning;
#[doc = "Length of virtual frame"]
pub struct BINTERVAL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Length of virtual frame"]
pub mod binterval;
#[doc = "Endpoint NAK (device mode)"]
pub struct ENDPTNAK {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint NAK (device mode)"]
pub mod endptnak;
#[doc = "Endpoint NAK Enable (device mode)"]
pub struct ENDPTNAKEN {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint NAK Enable (device mode)"]
pub mod endptnaken;
#[doc = "Port 1 status/control (device mode)"]
pub struct PORTSC1_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Port 1 status/control (device mode)"]
pub mod portsc1_d;
#[doc = "Port 1 status/control (host mode)"]
pub struct PORTSC1_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Port 1 status/control (host mode)"]
pub mod portsc1_h;
#[doc = "OTG status and control"]
pub struct OTGSC {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "OTG status and control"]
pub mod otgsc;
#[doc = "USB device mode (device mode)"]
pub struct USBMODE_D {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB device mode (device mode)"]
pub mod usbmode_d;
#[doc = "USB mode (host mode)"]
pub struct USBMODE_H {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "USB mode (host mode)"]
pub mod usbmode_h;
#[doc = "Endpoint setup status"]
pub struct ENDPTSETUPSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint setup status"]
pub mod endptsetupstat;
#[doc = "Endpoint initialization"]
pub struct ENDPTPRIME {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint initialization"]
pub mod endptprime;
#[doc = "Endpoint de-initialization"]
pub struct ENDPTFLUSH {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint de-initialization"]
pub mod endptflush;
#[doc = "Endpoint status"]
pub struct ENDPTSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint status"]
pub mod endptstat;
#[doc = "Endpoint complete"]
pub struct ENDPTCOMPLETE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint complete"]
pub mod endptcomplete;
#[doc = "Endpoint control 0"]
pub struct ENDPTCTRL0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint control 0"]
pub mod endptctrl0;
#[doc = "Endpoint control"]
pub struct ENDPTCTRL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Endpoint control"]
pub mod endptctrl;