libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
usb.h
Go to the documentation of this file.
1/*
2 * This file is part of the libopencm3 project.
3 *
4 * Copyright (C) 2012 Michael Ossmann <mike@ossmann.com>
5 *
6 * This library is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this library. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef LPC43XX_USB_H
21#define LPC43XX_USB_H
22
25
26#define BIT_MASK(base_name) \
27 (((1 << base_name##_WIDTH) - 1) << base_name##_SHIFT)
28#define BIT_ARG(base_name, x) ((x) << base_name##_SHIFT)
29
30/* USB device data structures */
31
32/* "The software must ensure that no interface data structure reachable
33 * by the Device controller crosses a 4kB-page boundary."
34 */
35
36/* --- Endpoint Transfer Descriptor (dTD) ---------------------------------- */
37
41 volatile uint32_t total_bytes;
42 volatile uint32_t buffer_pointer_page[5];
43 volatile uint32_t _reserved;
44};
45
46#define USB_TD_NEXT_DTD_POINTER_TERMINATE_SHIFT (0)
47#define USB_TD_NEXT_DTD_POINTER_TERMINATE \
48 ((volatile usb_transfer_descriptor_t *) \
49 (1 << USB_TD_NEXT_DTD_POINTER_TERMINATE_SHIFT))
50
51#define USB_TD_DTD_TOKEN_TOTAL_BYTES_SHIFT (16)
52#define USB_TD_DTD_TOKEN_TOTAL_BYTES_WIDTH (15)
53#define USB_TD_DTD_TOKEN_TOTAL_BYTES_MASK BIT_MASK(USB_TD_DTD_TOKEN_TOTAL_BYTES)
54#define USB_TD_DTD_TOKEN_TOTAL_BYTES(x) BIT_ARG(USB_TD_DTD_TOKEN_TOTAL_BYTES, (x))
55
56#define USB_TD_DTD_TOKEN_IOC_SHIFT (15)
57#define USB_TD_DTD_TOKEN_IOC (1 << USB_TD_DTD_TOKEN_IOC_SHIFT)
58
59#define USB_TD_DTD_TOKEN_MULTO_SHIFT (10)
60#define USB_TD_DTD_TOKEN_MULTO_WIDTH (2)
61#define USB_TD_DTD_TOKEN_MULTO_MASK BIT_MASK(USB_TD_DTD_TOKEN_MULTO)
62#define USB_TD_DTD_TOKEN_MULTO(x) BIT_ARG(USB_TD_DTD_TOKEN_MULTO, (x))
63
64#define USB_TD_DTD_TOKEN_STATUS_ACTIVE_SHIFT (7)
65#define USB_TD_DTD_TOKEN_STATUS_ACTIVE \
66 (1 << USB_TD_DTD_TOKEN_STATUS_ACTIVE_SHIFT)
67
68#define USB_TD_DTD_TOKEN_STATUS_HALTED_SHIFT (6)
69#define USB_TD_DTD_TOKEN_STATUS_HALTED \
70 (1 << USB_TD_DTD_TOKEN_STATUS_HALTED_SHIFT)
71
72#define USB_TD_DTD_TOKEN_STATUS_BUFFER_ERROR_SHIFT (5)
73#define USB_TD_DTD_TOKEN_STATUS_BUFFER_ERROR \
74 (1 << USB_TD_DTD_TOKEN_STATUS_BUFFER_ERROR_SHIFT)
75
76#define USB_TD_DTD_TOKEN_STATUS_TRANSACTION_ERROR_SHIFT (3)
77#define USB_TD_DTD_TOKEN_STATUS_TRANSACTION_ERROR \
78 (1 << USB_TD_DTD_TOKEN_STATUS_TRANSACTION_ERROR_SHIFT)
79
80/* --- Endpoint Queue Head (dQH) ------------------------------------------- */
81
82/* - must be aligned on 64-byte boundaries. */
83typedef struct {
84 volatile uint32_t capabilities;
87 volatile uint32_t total_bytes;
88 volatile uint32_t buffer_pointer_page[5];
89 volatile uint32_t _reserved_0;
90 volatile uint8_t setup[8];
91 volatile uint32_t _reserved_1[4];
93
94#define USB_QH_CAPABILITIES_IOS_SHIFT (15)
95#define USB_QH_CAPABILITIES_IOS (1 << USB_QH_CAPABILITIES_IOS_SHIFT)
96
97#define USB_QH_CAPABILITIES_MPL_SHIFT (16)
98#define USB_QH_CAPABILITIES_MPL_WIDTH (11)
99#define USB_QH_CAPABILITIES_MPL_MASK BIT_MASK(USB_QH_CAPABILITIES_MPL)
100#define USB_QH_CAPABILITIES_MPL(x) BIT_ARG(USB_QH_CAPABILITIES_MPL, (x))
101
102#define USB_QH_CAPABILITIES_ZLT_SHIFT (29)
103#define USB_QH_CAPABILITIES_ZLT (1 << USB_QH_CAPABILITIES_ZLT_SHIFT)
104
105#define USB_QH_CAPABILITIES_MULT_SHIFT (30)
106#define USB_QH_CAPABILITIES_MULT_WIDTH (2)
107#define USB_QH_CAPABILITIES_MULT_MASK BIT_MASK(USB_QH_CAPABILITIES_MULT)
108#define USB_QH_CAPABILITIES_MULT(x) BIT_ARG(USB_QH_CAPABILITIES_MULT, (x))
109
110/* --- USB0 registers ------------------------------------------------------ */
111
112/* Device/host capability registers */
113
114/* Capability register length */
115#define USB0_CAPLENGTH MMIO32(USB0_BASE + 0x100)
116
117/* Host controller structural parameters */
118#define USB0_HCSPARAMS MMIO32(USB0_BASE + 0x104)
119
120/* Host controller capability parameters */
121#define USB0_HCCPARAMS MMIO32(USB0_BASE + 0x108)
122
123/* Device interface version number */
124#define USB0_DCIVERSION MMIO32(USB0_BASE + 0x120)
125
126/* Device controller capability parameters */
127#define USB0_DCCPARAMS MMIO32(USB0_BASE + 0x124)
128
129
130/* Device/host operational registers */
131
132/* USB command (device mode) */
133#define USB0_USBCMD_D MMIO32(USB0_BASE + 0x140)
134
135/* USB command (host mode) */
136#define USB0_USBCMD_H MMIO32(USB0_BASE + 0x140)
137
138/* USB status (device mode) */
139#define USB0_USBSTS_D MMIO32(USB0_BASE + 0x144)
140
141/* USB status (host mode) */
142#define USB0_USBSTS_H MMIO32(USB0_BASE + 0x144)
143
144/* USB interrupt enable (device mode) */
145#define USB0_USBINTR_D MMIO32(USB0_BASE + 0x148)
146
147/* USB interrupt enable (host mode) */
148#define USB0_USBINTR_H MMIO32(USB0_BASE + 0x148)
149
150/* USB frame index (device mode) */
151#define USB0_FRINDEX_D MMIO32(USB0_BASE + 0x14C)
152
153/* USB frame index (host mode) */
154#define USB0_FRINDEX_H MMIO32(USB0_BASE + 0x14C)
155
156/* USB device address (device mode) */
157#define USB0_DEVICEADDR MMIO32(USB0_BASE + 0x154)
158
159/* Frame list base address (host mode) */
160#define USB0_PERIODICLISTBASE MMIO32(USB0_BASE + 0x154)
161
162/* Address of endpoint list in memory */
163#define USB0_ENDPOINTLISTADDR MMIO32(USB0_BASE + 0x158)
164
165/* Asynchronous list address */
166#define USB0_ASYNCLISTADDR MMIO32(USB0_BASE + 0x158)
167
168/* Asynchronous buffer status for embedded TT (host mode) */
169#define USB0_TTCTRL MMIO32(USB0_BASE + 0x15C)
170
171/* Programmable burst size */
172#define USB0_BURSTSIZE MMIO32(USB0_BASE + 0x160)
173
174/* Host transmit pre-buffer packet tuning (host mode) */
175#define USB0_TXFILLTUNING MMIO32(USB0_BASE + 0x164)
176
177/* Length of virtual frame */
178#define USB0_BINTERVAL MMIO32(USB0_BASE + 0x174)
179
180/* Endpoint NAK (device mode) */
181#define USB0_ENDPTNAK MMIO32(USB0_BASE + 0x178)
182
183/* Endpoint NAK Enable (device mode) */
184#define USB0_ENDPTNAKEN MMIO32(USB0_BASE + 0x17C)
185
186/* Port 1 status/control (device mode) */
187#define USB0_PORTSC1_D MMIO32(USB0_BASE + 0x184)
188
189/* Port 1 status/control (host mode) */
190#define USB0_PORTSC1_H MMIO32(USB0_BASE + 0x184)
191
192/* OTG status and control */
193#define USB0_OTGSC MMIO32(USB0_BASE + 0x1A4)
194
195/* USB device mode (device mode) */
196#define USB0_USBMODE_D MMIO32(USB0_BASE + 0x1A8)
197
198/* USB device mode (host mode) */
199#define USB0_USBMODE_H MMIO32(USB0_BASE + 0x1A8)
200
201
202/* Device endpoint registers */
203
204/* Endpoint setup status */
205#define USB0_ENDPTSETUPSTAT MMIO32(USB0_BASE + 0x1AC)
206
207/* Endpoint initialization */
208#define USB0_ENDPTPRIME MMIO32(USB0_BASE + 0x1B0)
209
210/* Endpoint de-initialization */
211#define USB0_ENDPTFLUSH MMIO32(USB0_BASE + 0x1B4)
212
213/* Endpoint status */
214#define USB0_ENDPTSTAT MMIO32(USB0_BASE + 0x1B8)
215
216/* Endpoint complete */
217#define USB0_ENDPTCOMPLETE MMIO32(USB0_BASE + 0x1BC)
218
219/* Endpoint control */
220#define USB0_ENDPTCTRL(logical_ep) MMIO32(USB0_BASE + 0x1C0 + \
221 ((logical_ep) * 4))
222
223/* Endpoint control 0 */
224#define USB0_ENDPTCTRL0 USB0_ENDPTCTRL(0)
225
226/* Endpoint control 1 */
227#define USB0_ENDPTCTRL1 USB0_ENDPTCTRL(1)
228
229/* Endpoint control 2 */
230#define USB0_ENDPTCTRL2 USB0_ENDPTCTRL(2)
231
232/* Endpoint control 3 */
233#define USB0_ENDPTCTRL3 USB0_ENDPTCTRL(3)
234
235/* Endpoint control 4 */
236#define USB0_ENDPTCTRL4 USB0_ENDPTCTRL(4)
237
238/* Endpoint control 5 */
239#define USB0_ENDPTCTRL5 USB0_ENDPTCTRL(5)
240
241/* --- USB0_CAPLENGTH values ------------------------------------ */
242
243/* CAPLENGTH: Indicates offset to add to the register base address at the
244 beginning of the Operational Register */
245#define USB0_CAPLENGTH_CAPLENGTH_SHIFT (0)
246#define USB0_CAPLENGTH_CAPLENGTH_MASK (0xff << USB0_CAPLENGTH_CAPLENGTH_SHIFT)
247#define USB0_CAPLENGTH_CAPLENGTH(x) ((x) << USB0_CAPLENGTH_CAPLENGTH_SHIFT)
248
249/* HCIVERSION: BCD encoding of the EHCI revision number supported by this host
250 controller */
251#define USB0_CAPLENGTH_HCIVERSION_SHIFT (8)
252#define USB0_CAPLENGTH_HCIVERSION_MASK \
253 (0xffff << USB0_CAPLENGTH_HCIVERSION_SHIFT)
254#define USB0_CAPLENGTH_HCIVERSION(x) ((x) << USB0_CAPLENGTH_HCIVERSION_SHIFT)
255
256/* --- USB0_HCSPARAMS values ------------------------------------ */
257
258/* N_PORTS: Number of downstream ports */
259#define USB0_HCSPARAMS_N_PORTS_SHIFT (0)
260#define USB0_HCSPARAMS_N_PORTS_MASK (0xf << USB0_HCSPARAMS_N_PORTS_SHIFT)
261#define USB0_HCSPARAMS_N_PORTS(x) ((x) << USB0_HCSPARAMS_N_PORTS_SHIFT)
262
263/* PPC: Port Power Control */
264#define USB0_HCSPARAMS_PPC_SHIFT (4)
265#define USB0_HCSPARAMS_PPC (1 << USB0_HCSPARAMS_PPC_SHIFT)
266
267/* N_PCC: Number of Ports per Companion Controller */
268#define USB0_HCSPARAMS_N_PCC_SHIFT (8)
269#define USB0_HCSPARAMS_N_PCC_MASK (0xf << USB0_HCSPARAMS_N_PCC_SHIFT)
270#define USB0_HCSPARAMS_N_PCC(x) ((x) << USB0_HCSPARAMS_N_PCC_SHIFT)
271
272/* N_CC: Number of Companion Controller */
273#define USB0_HCSPARAMS_N_CC_SHIFT (12)
274#define USB0_HCSPARAMS_N_CC_MASK (0xf << USB0_HCSPARAMS_N_CC_SHIFT)
275#define USB0_HCSPARAMS_N_CC(x) ((x) << USB0_HCSPARAMS_N_CC_SHIFT)
276
277/* PI: Port indicators */
278#define USB0_HCSPARAMS_PI_SHIFT (16)
279#define USB0_HCSPARAMS_PI (1 << USB0_HCSPARAMS_PI_SHIFT)
280
281/* N_PTT: Number of Ports per Transaction Translator */
282#define USB0_HCSPARAMS_N_PTT_SHIFT (20)
283#define USB0_HCSPARAMS_N_PTT_MASK (0xf << USB0_HCSPARAMS_N_PTT_SHIFT)
284#define USB0_HCSPARAMS_N_PTT(x) ((x) << USB0_HCSPARAMS_N_PTT_SHIFT)
285
286/* N_TT: Number of Transaction Translators */
287#define USB0_HCSPARAMS_N_TT_SHIFT (24)
288#define USB0_HCSPARAMS_N_TT_MASK (0xf << USB0_HCSPARAMS_N_TT_SHIFT)
289#define USB0_HCSPARAMS_N_TT(x) ((x) << USB0_HCSPARAMS_N_TT_SHIFT)
290
291/* --- USB0_HCCPARAMS values ------------------------------------ */
292
293/* ADC: 64-bit Addressing Capability */
294#define USB0_HCCPARAMS_ADC_SHIFT (0)
295#define USB0_HCCPARAMS_ADC (1 << USB0_HCCPARAMS_ADC_SHIFT)
296
297/* PFL: Programmable Frame List Flag */
298#define USB0_HCCPARAMS_PFL_SHIFT (1)
299#define USB0_HCCPARAMS_PFL (1 << USB0_HCCPARAMS_PFL_SHIFT)
300
301/* ASP: Asynchronous Schedule Park Capability */
302#define USB0_HCCPARAMS_ASP_SHIFT (2)
303#define USB0_HCCPARAMS_ASP (1 << USB0_HCCPARAMS_ASP_SHIFT)
304
305/* IST: Isochronous Scheduling Threshold */
306#define USB0_HCCPARAMS_IST_SHIFT (4)
307#define USB0_HCCPARAMS_IST_MASK (0xf << USB0_HCCPARAMS_IST_SHIFT)
308#define USB0_HCCPARAMS_IST(x) ((x) << USB0_HCCPARAMS_IST_SHIFT)
309
310/* EECP: EHCI Extended Capabilities Pointer */
311#define USB0_HCCPARAMS_EECP_SHIFT (8)
312#define USB0_HCCPARAMS_EECP_MASK (0xf << USB0_HCCPARAMS_EECP_SHIFT)
313#define USB0_HCCPARAMS_EECP(x) ((x) << USB0_HCCPARAMS_EECP_SHIFT)
314
315/* --- USB0_DCCPARAMS values ------------------------------------ */
316
317/* DEN: Device Endpoint Number */
318#define USB0_DCCPARAMS_DEN_SHIFT (0)
319#define USB0_DCCPARAMS_DEN_MASK (0x1f << USB0_DCCPARAMS_DEN_SHIFT)
320#define USB0_DCCPARAMS_DEN(x) ((x) << USB0_DCCPARAMS_DEN_SHIFT)
321
322/* DC: Device Capable */
323#define USB0_DCCPARAMS_DC_SHIFT (7)
324#define USB0_DCCPARAMS_DC (1 << USB0_DCCPARAMS_DC_SHIFT)
325
326/* HC: Host Capable */
327#define USB0_DCCPARAMS_HC_SHIFT (8)
328#define USB0_DCCPARAMS_HC (1 << USB0_DCCPARAMS_HC_SHIFT)
329
330/* --- USB0_USBCMD_D values ------------------------------------- */
331
332/* RS: Run/Stop */
333#define USB0_USBCMD_D_RS_SHIFT (0)
334#define USB0_USBCMD_D_RS (1 << USB0_USBCMD_D_RS_SHIFT)
335
336/* RST: Controller reset */
337#define USB0_USBCMD_D_RST_SHIFT (1)
338#define USB0_USBCMD_D_RST (1 << USB0_USBCMD_D_RST_SHIFT)
339
340/* SUTW: Setup trip wire */
341#define USB0_USBCMD_D_SUTW_SHIFT (13)
342#define USB0_USBCMD_D_SUTW (1 << USB0_USBCMD_D_SUTW_SHIFT)
343
344/* ATDTW: Add dTD trip wire */
345#define USB0_USBCMD_D_ATDTW_SHIFT (14)
346#define USB0_USBCMD_D_ATDTW (1 << USB0_USBCMD_D_ATDTW_SHIFT)
347
348/* ITC: Interrupt threshold control */
349#define USB0_USBCMD_D_ITC_SHIFT (16)
350#define USB0_USBCMD_D_ITC_MASK (0xff << USB0_USBCMD_D_ITC_SHIFT)
351#define USB0_USBCMD_D_ITC(x) ((x) << USB0_USBCMD_D_ITC_SHIFT)
352
353/* --- USB0_USBCMD_H values ------------------------------------- */
354
355/* RS: Run/Stop */
356#define USB0_USBCMD_H_RS_SHIFT (0)
357#define USB0_USBCMD_H_RS (1 << USB0_USBCMD_H_RS_SHIFT)
358
359/* RST: Controller reset */
360#define USB0_USBCMD_H_RST_SHIFT (1)
361#define USB0_USBCMD_H_RST (1 << USB0_USBCMD_H_RST_SHIFT)
362
363/* FS0: Bit 0 of the Frame List Size bits */
364#define USB0_USBCMD_H_FS0_SHIFT (2)
365#define USB0_USBCMD_H_FS0 (1 << USB0_USBCMD_H_FS0_SHIFT)
366
367/* FS1: Bit 1 of the Frame List Size bits */
368#define USB0_USBCMD_H_FS1_SHIFT (3)
369#define USB0_USBCMD_H_FS1 (1 << USB0_USBCMD_H_FS1_SHIFT)
370
371/* PSE: This bit controls whether the host controller skips processing the
372periodic schedule */
373#define USB0_USBCMD_H_PSE_SHIFT (4)
374#define USB0_USBCMD_H_PSE (1 << USB0_USBCMD_H_PSE_SHIFT)
375
376/* ASE: This bit controls whether the host controller skips processing the
377asynchronous schedule */
378#define USB0_USBCMD_H_ASE_SHIFT (5)
379#define USB0_USBCMD_H_ASE (1 << USB0_USBCMD_H_ASE_SHIFT)
380
381/* IAA: This bit is used as a doorbell by software to tell the host controller
382to issue an interrupt the next time it advances asynchronous schedule */
383#define USB0_USBCMD_H_IAA_SHIFT (6)
384#define USB0_USBCMD_H_IAA (1 << USB0_USBCMD_H_IAA_SHIFT)
385
386/* ASP1_0: Asynchronous schedule park mode */
387#define USB0_USBCMD_H_ASP1_0_SHIFT (8)
388#define USB0_USBCMD_H_ASP1_0_MASK (0x3 << USB0_USBCMD_H_ASP1_0_SHIFT)
389#define USB0_USBCMD_H_ASP1_0(x) ((x) << USB0_USBCMD_H_ASP1_0_SHIFT)
390
391/* ASPE: Asynchronous Schedule Park Mode Enable */
392#define USB0_USBCMD_H_ASPE_SHIFT (11)
393#define USB0_USBCMD_H_ASPE (1 << USB0_USBCMD_H_ASPE_SHIFT)
394
395/* FS2: Bit 2 of the Frame List Size bits */
396#define USB0_USBCMD_H_FS2_SHIFT (15)
397#define USB0_USBCMD_H_FS2 (1 << USB0_USBCMD_H_FS2_SHIFT)
398
399/* ITC: Interrupt threshold control */
400#define USB0_USBCMD_H_ITC_SHIFT (16)
401#define USB0_USBCMD_H_ITC_MASK (0xff << USB0_USBCMD_H_ITC_SHIFT)
402#define USB0_USBCMD_H_ITC(x) ((x) << USB0_USBCMD_H_ITC_SHIFT)
403
404/* --- USB0_USBSTS_D values ------------------------------------- */
405
406/* UI: USB interrupt */
407#define USB0_USBSTS_D_UI_SHIFT (0)
408#define USB0_USBSTS_D_UI (1 << USB0_USBSTS_D_UI_SHIFT)
409
410/* UEI: USB error interrupt */
411#define USB0_USBSTS_D_UEI_SHIFT (1)
412#define USB0_USBSTS_D_UEI (1 << USB0_USBSTS_D_UEI_SHIFT)
413
414/* PCI: Port change detect */
415#define USB0_USBSTS_D_PCI_SHIFT (2)
416#define USB0_USBSTS_D_PCI (1 << USB0_USBSTS_D_PCI_SHIFT)
417
418/* URI: USB reset received */
419#define USB0_USBSTS_D_URI_SHIFT (6)
420#define USB0_USBSTS_D_URI (1 << USB0_USBSTS_D_URI_SHIFT)
421
422/* SRI: SOF received */
423#define USB0_USBSTS_D_SRI_SHIFT (7)
424#define USB0_USBSTS_D_SRI (1 << USB0_USBSTS_D_SRI_SHIFT)
425
426/* SLI: DCSuspend */
427#define USB0_USBSTS_D_SLI_SHIFT (8)
428#define USB0_USBSTS_D_SLI (1 << USB0_USBSTS_D_SLI_SHIFT)
429
430/* NAKI: NAK interrupt bit */
431#define USB0_USBSTS_D_NAKI_SHIFT (16)
432#define USB0_USBSTS_D_NAKI (1 << USB0_USBSTS_D_NAKI_SHIFT)
433
434/* --- USB0_USBSTS_H values ------------------------------------- */
435
436/* UI: USB interrupt */
437#define USB0_USBSTS_H_UI_SHIFT (0)
438#define USB0_USBSTS_H_UI (1 << USB0_USBSTS_H_UI_SHIFT)
439
440/* UEI: USB error interrupt */
441#define USB0_USBSTS_H_UEI_SHIFT (1)
442#define USB0_USBSTS_H_UEI (1 << USB0_USBSTS_H_UEI_SHIFT)
443
444/* PCI: Port change detect */
445#define USB0_USBSTS_H_PCI_SHIFT (2)
446#define USB0_USBSTS_H_PCI (1 << USB0_USBSTS_H_PCI_SHIFT)
447
448/* FRI: Frame list roll-over */
449#define USB0_USBSTS_H_FRI_SHIFT (3)
450#define USB0_USBSTS_H_FRI (1 << USB0_USBSTS_H_FRI_SHIFT)
451
452/* AAI: Interrupt on async advance */
453#define USB0_USBSTS_H_AAI_SHIFT (5)
454#define USB0_USBSTS_H_AAI (1 << USB0_USBSTS_H_AAI_SHIFT)
455
456/* SRI: SOF received */
457#define USB0_USBSTS_H_SRI_SHIFT (7)
458#define USB0_USBSTS_H_SRI (1 << USB0_USBSTS_H_SRI_SHIFT)
459
460/* HCH: HCHalted */
461#define USB0_USBSTS_H_HCH_SHIFT (12)
462#define USB0_USBSTS_H_HCH (1 << USB0_USBSTS_H_HCH_SHIFT)
463
464/* RCL: Reclamation */
465#define USB0_USBSTS_H_RCL_SHIFT (13)
466#define USB0_USBSTS_H_RCL (1 << USB0_USBSTS_H_RCL_SHIFT)
467
468/* PS: Periodic schedule status */
469#define USB0_USBSTS_H_PS_SHIFT (14)
470#define USB0_USBSTS_H_PS (1 << USB0_USBSTS_H_PS_SHIFT)
471
472/* AS: Asynchronous schedule status */
473#define USB0_USBSTS_H_AS_SHIFT (15)
474#define USB0_USBSTS_H_AS (1 << USB0_USBSTS_H_AS_SHIFT)
475
476/* UAI: USB host asynchronous interrupt (USBHSTASYNCINT) */
477#define USB0_USBSTS_H_UAI_SHIFT (18)
478#define USB0_USBSTS_H_UAI (1 << USB0_USBSTS_H_UAI_SHIFT)
479
480/* UPI: USB host periodic interrupt (USBHSTPERINT) */
481#define USB0_USBSTS_H_UPI_SHIFT (19)
482#define USB0_USBSTS_H_UPI (1 << USB0_USBSTS_H_UPI_SHIFT)
483
484/* --- USB0_USBINTR_D values ------------------------------------ */
485
486/* UE: USB interrupt enable */
487#define USB0_USBINTR_D_UE_SHIFT (0)
488#define USB0_USBINTR_D_UE (1 << USB0_USBINTR_D_UE_SHIFT)
489
490/* UEE: USB error interrupt enable */
491#define USB0_USBINTR_D_UEE_SHIFT (1)
492#define USB0_USBINTR_D_UEE (1 << USB0_USBINTR_D_UEE_SHIFT)
493
494/* PCE: Port change detect enable */
495#define USB0_USBINTR_D_PCE_SHIFT (2)
496#define USB0_USBINTR_D_PCE (1 << USB0_USBINTR_D_PCE_SHIFT)
497
498/* URE: USB reset enable */
499#define USB0_USBINTR_D_URE_SHIFT (6)
500#define USB0_USBINTR_D_URE (1 << USB0_USBINTR_D_URE_SHIFT)
501
502/* SRE: SOF received enable */
503#define USB0_USBINTR_D_SRE_SHIFT (7)
504#define USB0_USBINTR_D_SRE (1 << USB0_USBINTR_D_SRE_SHIFT)
505
506/* SLE: Sleep enable */
507#define USB0_USBINTR_D_SLE_SHIFT (8)
508#define USB0_USBINTR_D_SLE (1 << USB0_USBINTR_D_SLE_SHIFT)
509
510/* NAKE: NAK interrupt enable */
511#define USB0_USBINTR_D_NAKE_SHIFT (16)
512#define USB0_USBINTR_D_NAKE (1 << USB0_USBINTR_D_NAKE_SHIFT)
513
514/* --- USB0_USBINTR_H values ------------------------------------ */
515
516/* UE: USB interrupt enable */
517#define USB0_USBINTR_H_UE_SHIFT (0)
518#define USB0_USBINTR_H_UE (1 << USB0_USBINTR_H_UE_SHIFT)
519
520/* UEE: USB error interrupt enable */
521#define USB0_USBINTR_H_UEE_SHIFT (1)
522#define USB0_USBINTR_H_UEE (1 << USB0_USBINTR_H_UEE_SHIFT)
523
524/* PCE: Port change detect enable */
525#define USB0_USBINTR_H_PCE_SHIFT (2)
526#define USB0_USBINTR_H_PCE (1 << USB0_USBINTR_H_PCE_SHIFT)
527
528/* FRE: Frame list rollover enable */
529#define USB0_USBINTR_H_FRE_SHIFT (3)
530#define USB0_USBINTR_H_FRE (1 << USB0_USBINTR_H_FRE_SHIFT)
531
532/* AAE: Interrupt on asynchronous advance enable */
533#define USB0_USBINTR_H_AAE_SHIFT (5)
534#define USB0_USBINTR_H_AAE (1 << USB0_USBINTR_H_AAE_SHIFT)
535
536/* SRE: SOF received enable */
537#define USB0_USBINTR_H_SRE_SHIFT (7)
538#define USB0_USBINTR_H_SRE (1 << USB0_USBINTR_H_SRE_SHIFT)
539
540/* UAIE: USB host asynchronous interrupt enable */
541#define USB0_USBINTR_H_UAIE_SHIFT (18)
542#define USB0_USBINTR_H_UAIE (1 << USB0_USBINTR_H_UAIE_SHIFT)
543
544/* UPIA: USB host periodic interrupt enable */
545#define USB0_USBINTR_H_UPIA_SHIFT (19)
546#define USB0_USBINTR_H_UPIA (1 << USB0_USBINTR_H_UPIA_SHIFT)
547
548/* --- USB0_FRINDEX_D values ------------------------------------ */
549
550/* FRINDEX2_0: Current micro frame number */
551#define USB0_FRINDEX_D_FRINDEX2_0_SHIFT (0)
552#define USB0_FRINDEX_D_FRINDEX2_0_MASK (0x7 << USB0_FRINDEX_D_FRINDEX2_0_SHIFT)
553#define USB0_FRINDEX_D_FRINDEX2_0(x) ((x) << USB0_FRINDEX_D_FRINDEX2_0_SHIFT)
554
555/* FRINDEX13_3: Current frame number of the last frame transmitted */
556#define USB0_FRINDEX_D_FRINDEX13_3_SHIFT (3)
557#define USB0_FRINDEX_D_FRINDEX13_3_MASK \
558 (0x7ff << USB0_FRINDEX_D_FRINDEX13_3_SHIFT)
559#define USB0_FRINDEX_D_FRINDEX13_3(x) ((x) << USB0_FRINDEX_D_FRINDEX13_3_SHIFT)
560
561/* --- USB0_FRINDEX_H values ------------------------------------ */
562
563/* FRINDEX2_0: Current micro frame number */
564#define USB0_FRINDEX_H_FRINDEX2_0_SHIFT (0)
565#define USB0_FRINDEX_H_FRINDEX2_0_MASK (0x7 << USB0_FRINDEX_H_FRINDEX2_0_SHIFT)
566#define USB0_FRINDEX_H_FRINDEX2_0(x) ((x) << USB0_FRINDEX_H_FRINDEX2_0_SHIFT)
567
568/* FRINDEX12_3: Frame list current index */
569#define USB0_FRINDEX_H_FRINDEX12_3_SHIFT (3)
570#define USB0_FRINDEX_H_FRINDEX12_3_MASK \
571 (0x3ff << USB0_FRINDEX_H_FRINDEX12_3_SHIFT)
572#define USB0_FRINDEX_H_FRINDEX12_3(x) ((x) << USB0_FRINDEX_H_FRINDEX12_3_SHIFT)
573
574/* --- USB0_DEVICEADDR values ----------------------------------- */
575
576/* USBADRA: Device address advance */
577#define USB0_DEVICEADDR_USBADRA_SHIFT (24)
578#define USB0_DEVICEADDR_USBADRA (1 << USB0_DEVICEADDR_USBADRA_SHIFT)
579
580/* USBADR: USB device address */
581#define USB0_DEVICEADDR_USBADR_SHIFT (25)
582#define USB0_DEVICEADDR_USBADR_MASK (0x7f << USB0_DEVICEADDR_USBADR_SHIFT)
583#define USB0_DEVICEADDR_USBADR(x) ((x) << USB0_DEVICEADDR_USBADR_SHIFT)
584
585/* --- USB0_PERIODICLISTBASE values ----------------------------- */
586
587/* PERBASE31_12: Base Address (Low) */
588#define USB0_PERIODICLISTBASE_PERBASE31_12_SHIFT (12)
589#define USB0_PERIODICLISTBASE_PERBASE31_12_MASK \
590 (0xfffff << USB0_PERIODICLISTBASE_PERBASE31_12_SHIFT)
591#define USB0_PERIODICLISTBASE_PERBASE31_12(x) \
592 ((x) << USB0_PERIODICLISTBASE_PERBASE31_12_SHIFT)
593
594/* --- USB0_ENDPOINTLISTADDR values ----------------------------- */
595
596/* EPBASE31_11: Endpoint list pointer (low) */
597#define USB0_ENDPOINTLISTADDR_EPBASE31_11_SHIFT (11)
598#define USB0_ENDPOINTLISTADDR_EPBASE31_11_MASK \
599 (0x1fffff << USB0_ENDPOINTLISTADDR_EPBASE31_11_SHIFT)
600#define USB0_ENDPOINTLISTADDR_EPBASE31_11(x) \
601 ((x) << USB0_ENDPOINTLISTADDR_EPBASE31_11_SHIFT)
602
603/* --- USB0_ASYNCLISTADDR values -------------------------------- */
604
605/* ASYBASE31_5: Link pointer (Low) LPL */
606#define USB0_ASYNCLISTADDR_ASYBASE31_5_SHIFT (5)
607#define USB0_ASYNCLISTADDR_ASYBASE31_5_MASK \
608 (0x7ffffff << USB0_ASYNCLISTADDR_ASYBASE31_5_SHIFT)
609#define USB0_ASYNCLISTADDR_ASYBASE31_5(x) \
610 ((x) << USB0_ASYNCLISTADDR_ASYBASE31_5_SHIFT)
611
612/* --- USB0_TTCTRL values --------------------------------------- */
613
614/* TTHA: Hub address when FS or LS device are connected directly */
615#define USB0_TTCTRL_TTHA_SHIFT (24)
616#define USB0_TTCTRL_TTHA_MASK (0x7f << USB0_TTCTRL_TTHA_SHIFT)
617#define USB0_TTCTRL_TTHA(x) ((x) << USB0_TTCTRL_TTHA_SHIFT)
618
619/* --- USB0_BURSTSIZE values ------------------------------------ */
620
621/* RXPBURST: Programmable RX burst length */
622#define USB0_BURSTSIZE_RXPBURST_SHIFT (0)
623#define USB0_BURSTSIZE_RXPBURST_MASK (0xff << USB0_BURSTSIZE_RXPBURST_SHIFT)
624#define USB0_BURSTSIZE_RXPBURST(x) ((x) << USB0_BURSTSIZE_RXPBURST_SHIFT)
625
626/* TXPBURST: Programmable TX burst length */
627#define USB0_BURSTSIZE_TXPBURST_SHIFT (8)
628#define USB0_BURSTSIZE_TXPBURST_MASK (0xff << USB0_BURSTSIZE_TXPBURST_SHIFT)
629#define USB0_BURSTSIZE_TXPBURST(x) ((x) << USB0_BURSTSIZE_TXPBURST_SHIFT)
630
631/* --- USB0_TXFILLTUNING values --------------------------------- */
632
633/* TXSCHOH: FIFO burst threshold */
634#define USB0_TXFILLTUNING_TXSCHOH_SHIFT (0)
635#define USB0_TXFILLTUNING_TXSCHOH_MASK (0xff << USB0_TXFILLTUNING_TXSCHOH_SHIFT)
636#define USB0_TXFILLTUNING_TXSCHOH(x) ((x) << USB0_TXFILLTUNING_TXSCHOH_SHIFT)
637
638/* TXSCHEATLTH: Scheduler health counter */
639#define USB0_TXFILLTUNING_TXSCHEATLTH_SHIFT (8)
640#define USB0_TXFILLTUNING_TXSCHEATLTH_MASK \
641 (0x1f << USB0_TXFILLTUNING_TXSCHEATLTH_SHIFT)
642#define USB0_TXFILLTUNING_TXSCHEATLTH(x) \
643 ((x) << USB0_TXFILLTUNING_TXSCHEATLTH_SHIFT)
644
645/* TXFIFOTHRES: Scheduler overhead */
646#define USB0_TXFILLTUNING_TXFIFOTHRES_SHIFT (16)
647#define USB0_TXFILLTUNING_TXFIFOTHRES_MASK \
648 (0x3f << USB0_TXFILLTUNING_TXFIFOTHRES_SHIFT)
649#define USB0_TXFILLTUNING_TXFIFOTHRES(x) \
650 ((x) << USB0_TXFILLTUNING_TXFIFOTHRES_SHIFT)
651
652/* --- USB0_BINTERVAL values ------------------------------------ */
653
654/* BINT: bInterval value */
655#define USB0_BINTERVAL_BINT_SHIFT (0)
656#define USB0_BINTERVAL_BINT_MASK (0xf << USB0_BINTERVAL_BINT_SHIFT)
657#define USB0_BINTERVAL_BINT(x) ((x) << USB0_BINTERVAL_BINT_SHIFT)
658
659/* --- USB0_ENDPTNAK values ------------------------------------- */
660
661/* EPRN: Rx endpoint NAK */
662#define USB0_ENDPTNAK_EPRN_SHIFT (0)
663#define USB0_ENDPTNAK_EPRN_MASK (0x3f << USB0_ENDPTNAK_EPRN_SHIFT)
664#define USB0_ENDPTNAK_EPRN(x) ((x) << USB0_ENDPTNAK_EPRN_SHIFT)
665
666/* EPTN: Tx endpoint NAK */
667#define USB0_ENDPTNAK_EPTN_SHIFT (16)
668#define USB0_ENDPTNAK_EPTN_MASK (0x3f << USB0_ENDPTNAK_EPTN_SHIFT)
669#define USB0_ENDPTNAK_EPTN(x) ((x) << USB0_ENDPTNAK_EPTN_SHIFT)
670
671/* --- USB0_ENDPTNAKEN values ----------------------------------- */
672
673/* EPRNE: Rx endpoint NAK enable */
674#define USB0_ENDPTNAKEN_EPRNE_SHIFT (0)
675#define USB0_ENDPTNAKEN_EPRNE_MASK (0x3f << USB0_ENDPTNAKEN_EPRNE_SHIFT)
676#define USB0_ENDPTNAKEN_EPRNE(x) ((x) << USB0_ENDPTNAKEN_EPRNE_SHIFT)
677
678/* EPTNE: Tx endpoint NAK */
679#define USB0_ENDPTNAKEN_EPTNE_SHIFT (16)
680#define USB0_ENDPTNAKEN_EPTNE_MASK (0x3f << USB0_ENDPTNAKEN_EPTNE_SHIFT)
681#define USB0_ENDPTNAKEN_EPTNE(x) ((x) << USB0_ENDPTNAKEN_EPTNE_SHIFT)
682
683/* --- USB0_PORTSC1_D values ------------------------------------ */
684
685/* CCS: Current connect status */
686#define USB0_PORTSC1_D_CCS_SHIFT (0)
687#define USB0_PORTSC1_D_CCS (1 << USB0_PORTSC1_D_CCS_SHIFT)
688
689/* PE: Port enable */
690#define USB0_PORTSC1_D_PE_SHIFT (2)
691#define USB0_PORTSC1_D_PE (1 << USB0_PORTSC1_D_PE_SHIFT)
692
693/* PEC: Port enable/disable change */
694#define USB0_PORTSC1_D_PEC_SHIFT (3)
695#define USB0_PORTSC1_D_PEC (1 << USB0_PORTSC1_D_PEC_SHIFT)
696
697/* FPR: Force port resume */
698#define USB0_PORTSC1_D_FPR_SHIFT (6)
699#define USB0_PORTSC1_D_FPR (1 << USB0_PORTSC1_D_FPR_SHIFT)
700
701/* SUSP: Suspend */
702#define USB0_PORTSC1_D_SUSP_SHIFT (7)
703#define USB0_PORTSC1_D_SUSP (1 << USB0_PORTSC1_D_SUSP_SHIFT)
704
705/* PR: Port reset */
706#define USB0_PORTSC1_D_PR_SHIFT (8)
707#define USB0_PORTSC1_D_PR (1 << USB0_PORTSC1_D_PR_SHIFT)
708
709/* HSP: High-speed status */
710#define USB0_PORTSC1_D_HSP_SHIFT (9)
711#define USB0_PORTSC1_D_HSP (1 << USB0_PORTSC1_D_HSP_SHIFT)
712
713/* PIC1_0: Port indicator control */
714#define USB0_PORTSC1_D_PIC1_0_SHIFT (14)
715#define USB0_PORTSC1_D_PIC1_0_MASK (0x3 << USB0_PORTSC1_D_PIC1_0_SHIFT)
716#define USB0_PORTSC1_D_PIC1_0(x) ((x) << USB0_PORTSC1_D_PIC1_0_SHIFT)
717
718/* PTC3_0: Port test control */
719#define USB0_PORTSC1_D_PTC3_0_SHIFT (16)
720#define USB0_PORTSC1_D_PTC3_0_MASK (0xf << USB0_PORTSC1_D_PTC3_0_SHIFT)
721#define USB0_PORTSC1_D_PTC3_0(x) ((x) << USB0_PORTSC1_D_PTC3_0_SHIFT)
722
723/* PHCD: PHY low power suspend - clock disable (PLPSCD) */
724#define USB0_PORTSC1_D_PHCD_SHIFT (23)
725#define USB0_PORTSC1_D_PHCD (1 << USB0_PORTSC1_D_PHCD_SHIFT)
726
727/* PFSC: Port force full speed connect */
728#define USB0_PORTSC1_D_PFSC_SHIFT (24)
729#define USB0_PORTSC1_D_PFSC (1 << USB0_PORTSC1_D_PFSC_SHIFT)
730
731/* PSPD: Port speed */
732#define USB0_PORTSC1_D_PSPD_SHIFT (26)
733#define USB0_PORTSC1_D_PSPD_MASK (0x3 << USB0_PORTSC1_D_PSPD_SHIFT)
734#define USB0_PORTSC1_D_PSPD(x) ((x) << USB0_PORTSC1_D_PSPD_SHIFT)
735
736/* --- USB0_PORTSC1_H values ------------------------------------ */
737
738/* CCS: Current connect status */
739#define USB0_PORTSC1_H_CCS_SHIFT (0)
740#define USB0_PORTSC1_H_CCS (1 << USB0_PORTSC1_H_CCS_SHIFT)
741
742/* CSC: Connect status change */
743#define USB0_PORTSC1_H_CSC_SHIFT (1)
744#define USB0_PORTSC1_H_CSC (1 << USB0_PORTSC1_H_CSC_SHIFT)
745
746/* PE: Port enable */
747#define USB0_PORTSC1_H_PE_SHIFT (2)
748#define USB0_PORTSC1_H_PE (1 << USB0_PORTSC1_H_PE_SHIFT)
749
750/* PEC: Port disable/enable change */
751#define USB0_PORTSC1_H_PEC_SHIFT (3)
752#define USB0_PORTSC1_H_PEC (1 << USB0_PORTSC1_H_PEC_SHIFT)
753
754/* OCA: Over-current active */
755#define USB0_PORTSC1_H_OCA_SHIFT (4)
756#define USB0_PORTSC1_H_OCA (1 << USB0_PORTSC1_H_OCA_SHIFT)
757
758/* OCC: Over-current change */
759#define USB0_PORTSC1_H_OCC_SHIFT (5)
760#define USB0_PORTSC1_H_OCC (1 << USB0_PORTSC1_H_OCC_SHIFT)
761
762/* FPR: Force port resume */
763#define USB0_PORTSC1_H_FPR_SHIFT (6)
764#define USB0_PORTSC1_H_FPR (1 << USB0_PORTSC1_H_FPR_SHIFT)
765
766/* SUSP: Suspend */
767#define USB0_PORTSC1_H_SUSP_SHIFT (7)
768#define USB0_PORTSC1_H_SUSP (1 << USB0_PORTSC1_H_SUSP_SHIFT)
769
770/* PR: Port reset */
771#define USB0_PORTSC1_H_PR_SHIFT (8)
772#define USB0_PORTSC1_H_PR (1 << USB0_PORTSC1_H_PR_SHIFT)
773
774/* HSP: High-speed status */
775#define USB0_PORTSC1_H_HSP_SHIFT (9)
776#define USB0_PORTSC1_H_HSP (1 << USB0_PORTSC1_H_HSP_SHIFT)
777
778/* LS: Line status */
779#define USB0_PORTSC1_H_LS_SHIFT (10)
780#define USB0_PORTSC1_H_LS_MASK (0x3 << USB0_PORTSC1_H_LS_SHIFT)
781#define USB0_PORTSC1_H_LS(x) ((x) << USB0_PORTSC1_H_LS_SHIFT)
782
783/* PP: Port power control */
784#define USB0_PORTSC1_H_PP_SHIFT (12)
785#define USB0_PORTSC1_H_PP (1 << USB0_PORTSC1_H_PP_SHIFT)
786
787/* PIC1_0: Port indicator control */
788#define USB0_PORTSC1_H_PIC1_0_SHIFT (14)
789#define USB0_PORTSC1_H_PIC1_0_MASK (0x3 << USB0_PORTSC1_H_PIC1_0_SHIFT)
790#define USB0_PORTSC1_H_PIC1_0(x) ((x) << USB0_PORTSC1_H_PIC1_0_SHIFT)
791
792/* PTC3_0: Port test control */
793#define USB0_PORTSC1_H_PTC3_0_SHIFT (16)
794#define USB0_PORTSC1_H_PTC3_0_MASK (0xf << USB0_PORTSC1_H_PTC3_0_SHIFT)
795#define USB0_PORTSC1_H_PTC3_0(x) ((x) << USB0_PORTSC1_H_PTC3_0_SHIFT)
796
797/* WKCN: Wake on connect enable (WKCNNT_E) */
798#define USB0_PORTSC1_H_WKCN_SHIFT (20)
799#define USB0_PORTSC1_H_WKCN (1 << USB0_PORTSC1_H_WKCN_SHIFT)
800
801/* WKDC: Wake on disconnect enable (WKDSCNNT_E) */
802#define USB0_PORTSC1_H_WKDC_SHIFT (21)
803#define USB0_PORTSC1_H_WKDC (1 << USB0_PORTSC1_H_WKDC_SHIFT)
804
805/* WKOC: Wake on over-current enable (WKOC_E) */
806#define USB0_PORTSC1_H_WKOC_SHIFT (22)
807#define USB0_PORTSC1_H_WKOC (1 << USB0_PORTSC1_H_WKOC_SHIFT)
808
809/* PHCD: PHY low power suspend - clock disable (PLPSCD) */
810#define USB0_PORTSC1_H_PHCD_SHIFT (23)
811#define USB0_PORTSC1_H_PHCD (1 << USB0_PORTSC1_H_PHCD_SHIFT)
812
813/* PFSC: Port force full speed connect */
814#define USB0_PORTSC1_H_PFSC_SHIFT (24)
815#define USB0_PORTSC1_H_PFSC (1 << USB0_PORTSC1_H_PFSC_SHIFT)
816
817/* PSPD: Port speed */
818#define USB0_PORTSC1_H_PSPD_SHIFT (26)
819#define USB0_PORTSC1_H_PSPD_MASK (0x3 << USB0_PORTSC1_H_PSPD_SHIFT)
820#define USB0_PORTSC1_H_PSPD(x) ((x) << USB0_PORTSC1_H_PSPD_SHIFT)
821
822/* --- USB0_OTGSC values ---------------------------------------- */
823
824/* VD: VBUS_Discharge */
825#define USB0_OTGSC_VD_SHIFT (0)
826#define USB0_OTGSC_VD (1 << USB0_OTGSC_VD_SHIFT)
827
828/* VC: VBUS_Charge */
829#define USB0_OTGSC_VC_SHIFT (1)
830#define USB0_OTGSC_VC (1 << USB0_OTGSC_VC_SHIFT)
831
832/* HAAR: Hardware assist auto_reset */
833#define USB0_OTGSC_HAAR_SHIFT (2)
834#define USB0_OTGSC_HAAR (1 << USB0_OTGSC_HAAR_SHIFT)
835
836/* OT: OTG termination */
837#define USB0_OTGSC_OT_SHIFT (3)
838#define USB0_OTGSC_OT (1 << USB0_OTGSC_OT_SHIFT)
839
840/* DP: Data pulsing */
841#define USB0_OTGSC_DP_SHIFT (4)
842#define USB0_OTGSC_DP (1 << USB0_OTGSC_DP_SHIFT)
843
844/* IDPU: ID pull-up */
845#define USB0_OTGSC_IDPU_SHIFT (5)
846#define USB0_OTGSC_IDPU (1 << USB0_OTGSC_IDPU_SHIFT)
847
848/* HADP: Hardware assist data pulse */
849#define USB0_OTGSC_HADP_SHIFT (6)
850#define USB0_OTGSC_HADP (1 << USB0_OTGSC_HADP_SHIFT)
851
852/* HABA: Hardware assist B-disconnect to A-connect */
853#define USB0_OTGSC_HABA_SHIFT (7)
854#define USB0_OTGSC_HABA (1 << USB0_OTGSC_HABA_SHIFT)
855
856/* ID: USB ID */
857#define USB0_OTGSC_ID_SHIFT (8)
858#define USB0_OTGSC_ID (1 << USB0_OTGSC_ID_SHIFT)
859
860/* AVV: A-VBUS valid */
861#define USB0_OTGSC_AVV_SHIFT (9)
862#define USB0_OTGSC_AVV (1 << USB0_OTGSC_AVV_SHIFT)
863
864/* ASV: A-session valid */
865#define USB0_OTGSC_ASV_SHIFT (10)
866#define USB0_OTGSC_ASV (1 << USB0_OTGSC_ASV_SHIFT)
867
868/* BSV: B-session valid */
869#define USB0_OTGSC_BSV_SHIFT (11)
870#define USB0_OTGSC_BSV (1 << USB0_OTGSC_BSV_SHIFT)
871
872/* BSE: B-session end */
873#define USB0_OTGSC_BSE_SHIFT (12)
874#define USB0_OTGSC_BSE (1 << USB0_OTGSC_BSE_SHIFT)
875
876/* MS1T: 1 millisecond timer toggle */
877#define USB0_OTGSC_MS1T_SHIFT (13)
878#define USB0_OTGSC_MS1T (1 << USB0_OTGSC_MS1T_SHIFT)
879
880/* DPS: Data bus pulsing status */
881#define USB0_OTGSC_DPS_SHIFT (14)
882#define USB0_OTGSC_DPS (1 << USB0_OTGSC_DPS_SHIFT)
883
884/* IDIS: USB ID interrupt status */
885#define USB0_OTGSC_IDIS_SHIFT (16)
886#define USB0_OTGSC_IDIS (1 << USB0_OTGSC_IDIS_SHIFT)
887
888/* AVVIS: A-VBUS valid interrupt status */
889#define USB0_OTGSC_AVVIS_SHIFT (17)
890#define USB0_OTGSC_AVVIS (1 << USB0_OTGSC_AVVIS_SHIFT)
891
892/* ASVIS: A-Session valid interrupt status */
893#define USB0_OTGSC_ASVIS_SHIFT (18)
894#define USB0_OTGSC_ASVIS (1 << USB0_OTGSC_ASVIS_SHIFT)
895
896/* BSVIS: B-Session valid interrupt status */
897#define USB0_OTGSC_BSVIS_SHIFT (19)
898#define USB0_OTGSC_BSVIS (1 << USB0_OTGSC_BSVIS_SHIFT)
899
900/* BSEIS: B-Session end interrupt status */
901#define USB0_OTGSC_BSEIS_SHIFT (20)
902#define USB0_OTGSC_BSEIS (1 << USB0_OTGSC_BSEIS_SHIFT)
903
904/* MS1S: 1 millisecond timer interrupt status */
905#define USB0_OTGSC_MS1S_SHIFT (21)
906#define USB0_OTGSC_MS1S (1 << USB0_OTGSC_MS1S_SHIFT)
907
908/* DPIS: Data pulse interrupt status */
909#define USB0_OTGSC_DPIS_SHIFT (22)
910#define USB0_OTGSC_DPIS (1 << USB0_OTGSC_DPIS_SHIFT)
911
912/* IDIE: USB ID interrupt enable */
913#define USB0_OTGSC_IDIE_SHIFT (24)
914#define USB0_OTGSC_IDIE (1 << USB0_OTGSC_IDIE_SHIFT)
915
916/* AVVIE: A-VBUS valid interrupt enable */
917#define USB0_OTGSC_AVVIE_SHIFT (25)
918#define USB0_OTGSC_AVVIE (1 << USB0_OTGSC_AVVIE_SHIFT)
919
920/* ASVIE: A-session valid interrupt enable */
921#define USB0_OTGSC_ASVIE_SHIFT (26)
922#define USB0_OTGSC_ASVIE (1 << USB0_OTGSC_ASVIE_SHIFT)
923
924/* BSVIE: B-session valid interrupt enable */
925#define USB0_OTGSC_BSVIE_SHIFT (27)
926#define USB0_OTGSC_BSVIE (1 << USB0_OTGSC_BSVIE_SHIFT)
927
928/* BSEIE: B-session end interrupt enable */
929#define USB0_OTGSC_BSEIE_SHIFT (28)
930#define USB0_OTGSC_BSEIE (1 << USB0_OTGSC_BSEIE_SHIFT)
931
932/* MS1E: 1 millisecond timer interrupt enable */
933#define USB0_OTGSC_MS1E_SHIFT (29)
934#define USB0_OTGSC_MS1E (1 << USB0_OTGSC_MS1E_SHIFT)
935
936/* DPIE: Data pulse interrupt enable */
937#define USB0_OTGSC_DPIE_SHIFT (30)
938#define USB0_OTGSC_DPIE (1 << USB0_OTGSC_DPIE_SHIFT)
939
940/* --- USB0_USBMODE_D values ------------------------------------ */
941
942/* CM1_0: Controller mode */
943#define USB0_USBMODE_D_CM1_0_SHIFT (0)
944#define USB0_USBMODE_D_CM1_0_MASK (0x3 << USB0_USBMODE_D_CM1_0_SHIFT)
945#define USB0_USBMODE_D_CM1_0(x) ((x) << USB0_USBMODE_D_CM1_0_SHIFT)
946
947/* ES: Endian select */
948#define USB0_USBMODE_D_ES_SHIFT (2)
949#define USB0_USBMODE_D_ES (1 << USB0_USBMODE_D_ES_SHIFT)
950
951/* SLOM: Setup Lockout mode */
952#define USB0_USBMODE_D_SLOM_SHIFT (3)
953#define USB0_USBMODE_D_SLOM (1 << USB0_USBMODE_D_SLOM_SHIFT)
954
955/* SDIS: Setup Lockout mode */
956#define USB0_USBMODE_D_SDIS_SHIFT (4)
957#define USB0_USBMODE_D_SDIS (1 << USB0_USBMODE_D_SDIS_SHIFT)
958
959/* --- USB0_USBMODE_H values ------------------------------------ */
960
961/* CM: Controller mode */
962#define USB0_USBMODE_H_CM_SHIFT (0)
963#define USB0_USBMODE_H_CM_MASK (0x3 << USB0_USBMODE_H_CM_SHIFT)
964#define USB0_USBMODE_H_CM(x) ((x) << USB0_USBMODE_H_CM_SHIFT)
965
966/* ES: Endian select */
967#define USB0_USBMODE_H_ES_SHIFT (2)
968#define USB0_USBMODE_H_ES (1 << USB0_USBMODE_H_ES_SHIFT)
969
970/* SDIS: Stream disable mode */
971#define USB0_USBMODE_H_SDIS_SHIFT (4)
972#define USB0_USBMODE_H_SDIS (1 << USB0_USBMODE_H_SDIS_SHIFT)
973
974/* VBPS: VBUS power select */
975#define USB0_USBMODE_H_VBPS_SHIFT (5)
976#define USB0_USBMODE_H_VBPS (1 << USB0_USBMODE_H_VBPS_SHIFT)
977
978/* --- USB0_ENDPTSETUPSTAT values ------------------------------- */
979
980/* ENDPSETUPSTAT: Setup endpoint status for logical endpoints 0 to 5 */
981#define USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT_SHIFT (0)
982#define USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT_MASK \
983 (0x3f << USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT_SHIFT)
984#define USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT(x) \
985 ((x) << USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT_SHIFT)
986
987/* --- USB0_ENDPTPRIME values ----------------------------------- */
988
989/* PERB: Prime endpoint receive buffer for physical OUT endpoints 5 to 0 */
990#define USB0_ENDPTPRIME_PERB_SHIFT (0)
991#define USB0_ENDPTPRIME_PERB_MASK (0x3f << USB0_ENDPTPRIME_PERB_SHIFT)
992#define USB0_ENDPTPRIME_PERB(x) ((x) << USB0_ENDPTPRIME_PERB_SHIFT)
993
994/* PETB: Prime endpoint transmit buffer for physical IN endpoints 5 to 0 */
995#define USB0_ENDPTPRIME_PETB_SHIFT (16)
996#define USB0_ENDPTPRIME_PETB_MASK (0x3f << USB0_ENDPTPRIME_PETB_SHIFT)
997#define USB0_ENDPTPRIME_PETB(x) ((x) << USB0_ENDPTPRIME_PETB_SHIFT)
998
999/* --- USB0_ENDPTFLUSH values ----------------------------------- */
1000
1001/* FERB: Flush endpoint receive buffer for physical OUT endpoints 5 to 0 */
1002#define USB0_ENDPTFLUSH_FERB_SHIFT (0)
1003#define USB0_ENDPTFLUSH_FERB_MASK (0x3f << USB0_ENDPTFLUSH_FERB_SHIFT)
1004#define USB0_ENDPTFLUSH_FERB(x) ((x) << USB0_ENDPTFLUSH_FERB_SHIFT)
1005
1006/* FETB: Flush endpoint transmit buffer for physical IN endpoints 5 to 0 */
1007#define USB0_ENDPTFLUSH_FETB_SHIFT (16)
1008#define USB0_ENDPTFLUSH_FETB_MASK (0x3f << USB0_ENDPTFLUSH_FETB_SHIFT)
1009#define USB0_ENDPTFLUSH_FETB(x) ((x) << USB0_ENDPTFLUSH_FETB_SHIFT)
1010
1011/* --- USB0_ENDPTSTAT values ------------------------------------ */
1012
1013/* ERBR: Endpoint receive buffer ready for physical OUT endpoints 5 to 0 */
1014#define USB0_ENDPTSTAT_ERBR_SHIFT (0)
1015#define USB0_ENDPTSTAT_ERBR_MASK (0x3f << USB0_ENDPTSTAT_ERBR_SHIFT)
1016#define USB0_ENDPTSTAT_ERBR(x) ((x) << USB0_ENDPTSTAT_ERBR_SHIFT)
1017
1018/* ETBR: Endpoint transmit buffer ready for physical IN endpoints 3 to 0 */
1019#define USB0_ENDPTSTAT_ETBR_SHIFT (16)
1020#define USB0_ENDPTSTAT_ETBR_MASK (0x3f << USB0_ENDPTSTAT_ETBR_SHIFT)
1021#define USB0_ENDPTSTAT_ETBR(x) ((x) << USB0_ENDPTSTAT_ETBR_SHIFT)
1022
1023/* --- USB0_ENDPTCOMPLETE values -------------------------------- */
1024
1025/* ERCE: Endpoint receive complete event for physical OUT endpoints 5 to 0 */
1026#define USB0_ENDPTCOMPLETE_ERCE_SHIFT (0)
1027#define USB0_ENDPTCOMPLETE_ERCE_MASK (0x3f << USB0_ENDPTCOMPLETE_ERCE_SHIFT)
1028#define USB0_ENDPTCOMPLETE_ERCE(x) ((x) << USB0_ENDPTCOMPLETE_ERCE_SHIFT)
1029
1030/* ETCE: Endpoint transmit complete event for physical IN endpoints 5 to 0 */
1031#define USB0_ENDPTCOMPLETE_ETCE_SHIFT (16)
1032#define USB0_ENDPTCOMPLETE_ETCE_MASK (0x3f << USB0_ENDPTCOMPLETE_ETCE_SHIFT)
1033#define USB0_ENDPTCOMPLETE_ETCE(x) ((x) << USB0_ENDPTCOMPLETE_ETCE_SHIFT)
1034
1035/* --- USB0_ENDPTCTRL0 values ----------------------------------- */
1036
1037/* RXS: Rx endpoint stall */
1038#define USB0_ENDPTCTRL0_RXS_SHIFT (0)
1039#define USB0_ENDPTCTRL0_RXS (1 << USB0_ENDPTCTRL0_RXS_SHIFT)
1040
1041/* RXT1_0: Endpoint type */
1042#define USB0_ENDPTCTRL0_RXT1_0_SHIFT (2)
1043#define USB0_ENDPTCTRL0_RXT1_0_MASK (0x3 << USB0_ENDPTCTRL0_RXT1_0_SHIFT)
1044#define USB0_ENDPTCTRL0_RXT1_0(x) ((x) << USB0_ENDPTCTRL0_RXT1_0_SHIFT)
1045
1046/* RXE: Rx endpoint enable */
1047#define USB0_ENDPTCTRL0_RXE_SHIFT (7)
1048#define USB0_ENDPTCTRL0_RXE (1 << USB0_ENDPTCTRL0_RXE_SHIFT)
1049
1050/* TXS: Tx endpoint stall */
1051#define USB0_ENDPTCTRL0_TXS_SHIFT (16)
1052#define USB0_ENDPTCTRL0_TXS (1 << USB0_ENDPTCTRL0_TXS_SHIFT)
1053
1054/* TXT1_0: Endpoint type */
1055#define USB0_ENDPTCTRL0_TXT1_0_SHIFT (18)
1056#define USB0_ENDPTCTRL0_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL0_TXT1_0_SHIFT)
1057#define USB0_ENDPTCTRL0_TXT1_0(x) ((x) << USB0_ENDPTCTRL0_TXT1_0_SHIFT)
1058
1059/* TXE: Tx endpoint enable */
1060#define USB0_ENDPTCTRL0_TXE_SHIFT (23)
1061#define USB0_ENDPTCTRL0_TXE (1 << USB0_ENDPTCTRL0_TXE_SHIFT)
1062
1063/* --- USB0_ENDPTCTRL1 values ----------------------------------- */
1064
1065/* RXS: Rx endpoint stall */
1066#define USB0_ENDPTCTRL1_RXS_SHIFT (0)
1067#define USB0_ENDPTCTRL1_RXS (1 << USB0_ENDPTCTRL1_RXS_SHIFT)
1068
1069/* RXT: Endpoint type */
1070#define USB0_ENDPTCTRL1_RXT_SHIFT (2)
1071#define USB0_ENDPTCTRL1_RXT_MASK (0x3 << USB0_ENDPTCTRL1_RXT_SHIFT)
1072#define USB0_ENDPTCTRL1_RXT(x) ((x) << USB0_ENDPTCTRL1_RXT_SHIFT)
1073
1074/* RXI: Rx data toggle inhibit */
1075#define USB0_ENDPTCTRL1_RXI_SHIFT (5)
1076#define USB0_ENDPTCTRL1_RXI (1 << USB0_ENDPTCTRL1_RXI_SHIFT)
1077
1078/* RXR: Rx data toggle reset */
1079#define USB0_ENDPTCTRL1_RXR_SHIFT (6)
1080#define USB0_ENDPTCTRL1_RXR (1 << USB0_ENDPTCTRL1_RXR_SHIFT)
1081
1082/* RXE: Rx endpoint enable */
1083#define USB0_ENDPTCTRL1_RXE_SHIFT (7)
1084#define USB0_ENDPTCTRL1_RXE (1 << USB0_ENDPTCTRL1_RXE_SHIFT)
1085
1086/* TXS: Tx endpoint stall */
1087#define USB0_ENDPTCTRL1_TXS_SHIFT (16)
1088#define USB0_ENDPTCTRL1_TXS (1 << USB0_ENDPTCTRL1_TXS_SHIFT)
1089
1090/* TXT1_0: Tx Endpoint type */
1091#define USB0_ENDPTCTRL1_TXT1_0_SHIFT (18)
1092#define USB0_ENDPTCTRL1_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL1_TXT1_0_SHIFT)
1093#define USB0_ENDPTCTRL1_TXT1_0(x) ((x) << USB0_ENDPTCTRL1_TXT1_0_SHIFT)
1094
1095/* TXI: Tx data toggle inhibit */
1096#define USB0_ENDPTCTRL1_TXI_SHIFT (21)
1097#define USB0_ENDPTCTRL1_TXI (1 << USB0_ENDPTCTRL1_TXI_SHIFT)
1098
1099/* TXR: Tx data toggle reset */
1100#define USB0_ENDPTCTRL1_TXR_SHIFT (22)
1101#define USB0_ENDPTCTRL1_TXR (1 << USB0_ENDPTCTRL1_TXR_SHIFT)
1102
1103/* TXE: Tx endpoint enable */
1104#define USB0_ENDPTCTRL1_TXE_SHIFT (23)
1105#define USB0_ENDPTCTRL1_TXE (1 << USB0_ENDPTCTRL1_TXE_SHIFT)
1106
1107/* --- USB0_ENDPTCTRL2 values ----------------------------------- */
1108
1109/* RXS: Rx endpoint stall */
1110#define USB0_ENDPTCTRL2_RXS_SHIFT (0)
1111#define USB0_ENDPTCTRL2_RXS (1 << USB0_ENDPTCTRL2_RXS_SHIFT)
1112
1113/* RXT: Endpoint type */
1114#define USB0_ENDPTCTRL2_RXT_SHIFT (2)
1115#define USB0_ENDPTCTRL2_RXT_MASK (0x3 << USB0_ENDPTCTRL2_RXT_SHIFT)
1116#define USB0_ENDPTCTRL2_RXT(x) ((x) << USB0_ENDPTCTRL2_RXT_SHIFT)
1117
1118/* RXI: Rx data toggle inhibit */
1119#define USB0_ENDPTCTRL2_RXI_SHIFT (5)
1120#define USB0_ENDPTCTRL2_RXI (1 << USB0_ENDPTCTRL2_RXI_SHIFT)
1121
1122/* RXR: Rx data toggle reset */
1123#define USB0_ENDPTCTRL2_RXR_SHIFT (6)
1124#define USB0_ENDPTCTRL2_RXR (1 << USB0_ENDPTCTRL2_RXR_SHIFT)
1125
1126/* RXE: Rx endpoint enable */
1127#define USB0_ENDPTCTRL2_RXE_SHIFT (7)
1128#define USB0_ENDPTCTRL2_RXE (1 << USB0_ENDPTCTRL2_RXE_SHIFT)
1129
1130/* TXS: Tx endpoint stall */
1131#define USB0_ENDPTCTRL2_TXS_SHIFT (16)
1132#define USB0_ENDPTCTRL2_TXS (1 << USB0_ENDPTCTRL2_TXS_SHIFT)
1133
1134/* TXT1_0: Tx Endpoint type */
1135#define USB0_ENDPTCTRL2_TXT1_0_SHIFT (18)
1136#define USB0_ENDPTCTRL2_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL2_TXT1_0_SHIFT)
1137#define USB0_ENDPTCTRL2_TXT1_0(x) ((x) << USB0_ENDPTCTRL2_TXT1_0_SHIFT)
1138
1139/* TXI: Tx data toggle inhibit */
1140#define USB0_ENDPTCTRL2_TXI_SHIFT (21)
1141#define USB0_ENDPTCTRL2_TXI (1 << USB0_ENDPTCTRL2_TXI_SHIFT)
1142
1143/* TXR: Tx data toggle reset */
1144#define USB0_ENDPTCTRL2_TXR_SHIFT (22)
1145#define USB0_ENDPTCTRL2_TXR (1 << USB0_ENDPTCTRL2_TXR_SHIFT)
1146
1147/* TXE: Tx endpoint enable */
1148#define USB0_ENDPTCTRL2_TXE_SHIFT (23)
1149#define USB0_ENDPTCTRL2_TXE (1 << USB0_ENDPTCTRL2_TXE_SHIFT)
1150
1151/* --- USB0_ENDPTCTRL3 values ----------------------------------- */
1152
1153/* RXS: Rx endpoint stall */
1154#define USB0_ENDPTCTRL3_RXS_SHIFT (0)
1155#define USB0_ENDPTCTRL3_RXS (1 << USB0_ENDPTCTRL3_RXS_SHIFT)
1156
1157/* RXT: Endpoint type */
1158#define USB0_ENDPTCTRL3_RXT_SHIFT (2)
1159#define USB0_ENDPTCTRL3_RXT_MASK (0x3 << USB0_ENDPTCTRL3_RXT_SHIFT)
1160#define USB0_ENDPTCTRL3_RXT(x) ((x) << USB0_ENDPTCTRL3_RXT_SHIFT)
1161
1162/* RXI: Rx data toggle inhibit */
1163#define USB0_ENDPTCTRL3_RXI_SHIFT (5)
1164#define USB0_ENDPTCTRL3_RXI (1 << USB0_ENDPTCTRL3_RXI_SHIFT)
1165
1166/* RXR: Rx data toggle reset */
1167#define USB0_ENDPTCTRL3_RXR_SHIFT (6)
1168#define USB0_ENDPTCTRL3_RXR (1 << USB0_ENDPTCTRL3_RXR_SHIFT)
1169
1170/* RXE: Rx endpoint enable */
1171#define USB0_ENDPTCTRL3_RXE_SHIFT (7)
1172#define USB0_ENDPTCTRL3_RXE (1 << USB0_ENDPTCTRL3_RXE_SHIFT)
1173
1174/* TXS: Tx endpoint stall */
1175#define USB0_ENDPTCTRL3_TXS_SHIFT (16)
1176#define USB0_ENDPTCTRL3_TXS (1 << USB0_ENDPTCTRL3_TXS_SHIFT)
1177
1178/* TXT1_0: Tx Endpoint type */
1179#define USB0_ENDPTCTRL3_TXT1_0_SHIFT (18)
1180#define USB0_ENDPTCTRL3_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL3_TXT1_0_SHIFT)
1181#define USB0_ENDPTCTRL3_TXT1_0(x) ((x) << USB0_ENDPTCTRL3_TXT1_0_SHIFT)
1182
1183/* TXI: Tx data toggle inhibit */
1184#define USB0_ENDPTCTRL3_TXI_SHIFT (21)
1185#define USB0_ENDPTCTRL3_TXI (1 << USB0_ENDPTCTRL3_TXI_SHIFT)
1186
1187/* TXR: Tx data toggle reset */
1188#define USB0_ENDPTCTRL3_TXR_SHIFT (22)
1189#define USB0_ENDPTCTRL3_TXR (1 << USB0_ENDPTCTRL3_TXR_SHIFT)
1190
1191/* TXE: Tx endpoint enable */
1192#define USB0_ENDPTCTRL3_TXE_SHIFT (23)
1193#define USB0_ENDPTCTRL3_TXE (1 << USB0_ENDPTCTRL3_TXE_SHIFT)
1194
1195/* --- USB0_ENDPTCTRL4 values ----------------------------------- */
1196
1197/* RXS: Rx endpoint stall */
1198#define USB0_ENDPTCTRL4_RXS_SHIFT (0)
1199#define USB0_ENDPTCTRL4_RXS (1 << USB0_ENDPTCTRL4_RXS_SHIFT)
1200
1201/* RXT: Endpoint type */
1202#define USB0_ENDPTCTRL4_RXT_SHIFT (2)
1203#define USB0_ENDPTCTRL4_RXT_MASK (0x3 << USB0_ENDPTCTRL4_RXT_SHIFT)
1204#define USB0_ENDPTCTRL4_RXT(x) ((x) << USB0_ENDPTCTRL4_RXT_SHIFT)
1205
1206/* RXI: Rx data toggle inhibit */
1207#define USB0_ENDPTCTRL4_RXI_SHIFT (5)
1208#define USB0_ENDPTCTRL4_RXI (1 << USB0_ENDPTCTRL4_RXI_SHIFT)
1209
1210/* RXR: Rx data toggle reset */
1211#define USB0_ENDPTCTRL4_RXR_SHIFT (6)
1212#define USB0_ENDPTCTRL4_RXR (1 << USB0_ENDPTCTRL4_RXR_SHIFT)
1213
1214/* RXE: Rx endpoint enable */
1215#define USB0_ENDPTCTRL4_RXE_SHIFT (7)
1216#define USB0_ENDPTCTRL4_RXE (1 << USB0_ENDPTCTRL4_RXE_SHIFT)
1217
1218/* TXS: Tx endpoint stall */
1219#define USB0_ENDPTCTRL4_TXS_SHIFT (16)
1220#define USB0_ENDPTCTRL4_TXS (1 << USB0_ENDPTCTRL4_TXS_SHIFT)
1221
1222/* TXT1_0: Tx Endpoint type */
1223#define USB0_ENDPTCTRL4_TXT1_0_SHIFT (18)
1224#define USB0_ENDPTCTRL4_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL4_TXT1_0_SHIFT)
1225#define USB0_ENDPTCTRL4_TXT1_0(x) ((x) << USB0_ENDPTCTRL4_TXT1_0_SHIFT)
1226
1227/* TXI: Tx data toggle inhibit */
1228#define USB0_ENDPTCTRL4_TXI_SHIFT (21)
1229#define USB0_ENDPTCTRL4_TXI (1 << USB0_ENDPTCTRL4_TXI_SHIFT)
1230
1231/* TXR: Tx data toggle reset */
1232#define USB0_ENDPTCTRL4_TXR_SHIFT (22)
1233#define USB0_ENDPTCTRL4_TXR (1 << USB0_ENDPTCTRL4_TXR_SHIFT)
1234
1235/* TXE: Tx endpoint enable */
1236#define USB0_ENDPTCTRL4_TXE_SHIFT (23)
1237#define USB0_ENDPTCTRL4_TXE (1 << USB0_ENDPTCTRL4_TXE_SHIFT)
1238
1239/* --- USB0_ENDPTCTRL5 values ----------------------------------- */
1240
1241/* RXS: Rx endpoint stall */
1242#define USB0_ENDPTCTRL5_RXS_SHIFT (0)
1243#define USB0_ENDPTCTRL5_RXS (1 << USB0_ENDPTCTRL5_RXS_SHIFT)
1244
1245/* RXT: Endpoint type */
1246#define USB0_ENDPTCTRL5_RXT_SHIFT (2)
1247#define USB0_ENDPTCTRL5_RXT_MASK (0x3 << USB0_ENDPTCTRL5_RXT_SHIFT)
1248#define USB0_ENDPTCTRL5_RXT(x) ((x) << USB0_ENDPTCTRL5_RXT_SHIFT)
1249
1250/* RXI: Rx data toggle inhibit */
1251#define USB0_ENDPTCTRL5_RXI_SHIFT (5)
1252#define USB0_ENDPTCTRL5_RXI (1 << USB0_ENDPTCTRL5_RXI_SHIFT)
1253
1254/* RXR: Rx data toggle reset */
1255#define USB0_ENDPTCTRL5_RXR_SHIFT (6)
1256#define USB0_ENDPTCTRL5_RXR (1 << USB0_ENDPTCTRL5_RXR_SHIFT)
1257
1258/* RXE: Rx endpoint enable */
1259#define USB0_ENDPTCTRL5_RXE_SHIFT (7)
1260#define USB0_ENDPTCTRL5_RXE (1 << USB0_ENDPTCTRL5_RXE_SHIFT)
1261
1262/* TXS: Tx endpoint stall */
1263#define USB0_ENDPTCTRL5_TXS_SHIFT (16)
1264#define USB0_ENDPTCTRL5_TXS (1 << USB0_ENDPTCTRL5_TXS_SHIFT)
1265
1266/* TXT1_0: Tx Endpoint type */
1267#define USB0_ENDPTCTRL5_TXT1_0_SHIFT (18)
1268#define USB0_ENDPTCTRL5_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL5_TXT1_0_SHIFT)
1269#define USB0_ENDPTCTRL5_TXT1_0(x) ((x) << USB0_ENDPTCTRL5_TXT1_0_SHIFT)
1270
1271/* TXI: Tx data toggle inhibit */
1272#define USB0_ENDPTCTRL5_TXI_SHIFT (21)
1273#define USB0_ENDPTCTRL5_TXI (1 << USB0_ENDPTCTRL5_TXI_SHIFT)
1274
1275/* TXR: Tx data toggle reset */
1276#define USB0_ENDPTCTRL5_TXR_SHIFT (22)
1277#define USB0_ENDPTCTRL5_TXR (1 << USB0_ENDPTCTRL5_TXR_SHIFT)
1278
1279/* TXE: Tx endpoint enable */
1280#define USB0_ENDPTCTRL5_TXE_SHIFT (23)
1281#define USB0_ENDPTCTRL5_TXE (1 << USB0_ENDPTCTRL5_TXE_SHIFT)
1282
1283/* -------------------------------------------------------------- */
1284
1285
1286/* --- USB0_ENDPTCTRL common values ----------------------------- */
1287
1288/* RXS: Rx endpoint stall */
1289#define USB0_ENDPTCTRL_RXS_SHIFT (0)
1290#define USB0_ENDPTCTRL_RXS (1 << USB0_ENDPTCTRL_RXS_SHIFT)
1291
1292/* RXT: Endpoint type */
1293#define USB0_ENDPTCTRL_RXT_SHIFT (2)
1294#define USB0_ENDPTCTRL_RXT_MASK (0x3 << USB0_ENDPTCTRL_RXT_SHIFT)
1295#define USB0_ENDPTCTRL_RXT(x) ((x) << USB0_ENDPTCTRL_RXT_SHIFT)
1296
1297/* RXI: Rx data toggle inhibit */
1298#define USB0_ENDPTCTRL_RXI_SHIFT (5)
1299#define USB0_ENDPTCTRL_RXI (1 << USB0_ENDPTCTRL_RXI_SHIFT)
1300
1301/* RXR: Rx data toggle reset */
1302#define USB0_ENDPTCTRL_RXR_SHIFT (6)
1303#define USB0_ENDPTCTRL_RXR (1 << USB0_ENDPTCTRL_RXR_SHIFT)
1304
1305/* RXE: Rx endpoint enable */
1306#define USB0_ENDPTCTRL_RXE_SHIFT (7)
1307#define USB0_ENDPTCTRL_RXE (1 << USB0_ENDPTCTRL_RXE_SHIFT)
1308
1309/* TXS: Tx endpoint stall */
1310#define USB0_ENDPTCTRL_TXS_SHIFT (16)
1311#define USB0_ENDPTCTRL_TXS (1 << USB0_ENDPTCTRL_TXS_SHIFT)
1312
1313/* TXT1_0: Tx Endpoint type */
1314#define USB0_ENDPTCTRL_TXT1_0_SHIFT (18)
1315#define USB0_ENDPTCTRL_TXT1_0_MASK (0x3 << USB0_ENDPTCTRL_TXT1_0_SHIFT)
1316#define USB0_ENDPTCTRL_TXT1_0(x) ((x) << USB0_ENDPTCTRL_TXT1_0_SHIFT)
1317
1318/* TXI: Tx data toggle inhibit */
1319#define USB0_ENDPTCTRL_TXI_SHIFT (21)
1320#define USB0_ENDPTCTRL_TXI (1 << USB0_ENDPTCTRL_TXI_SHIFT)
1321
1322/* TXR: Tx data toggle reset */
1323#define USB0_ENDPTCTRL_TXR_SHIFT (22)
1324#define USB0_ENDPTCTRL_TXR (1 << USB0_ENDPTCTRL_TXR_SHIFT)
1325
1326/* TXE: Tx endpoint enable */
1327#define USB0_ENDPTCTRL_TXE_SHIFT (23)
1328#define USB0_ENDPTCTRL_TXE (1 << USB0_ENDPTCTRL_TXE_SHIFT)
1329
1330
1331
1332
1333
1334/* --- USB1 registers ------------------------------------------------------ */
1335/* TODO */
1336
1337#endif
volatile uint32_t _reserved_0
Definition: usb.h:89
volatile uint32_t capabilities
Definition: usb.h:84
volatile usb_transfer_descriptor_t * next_dtd_pointer
Definition: usb.h:86
volatile uint32_t total_bytes
Definition: usb.h:87
volatile usb_transfer_descriptor_t * current_dtd_pointer
Definition: usb.h:85
volatile uint32_t _reserved
Definition: usb.h:43
volatile usb_transfer_descriptor_t * next_dtd_pointer
Definition: usb.h:40
volatile uint32_t buffer_pointer_page[5]
Definition: usb.h:42
volatile uint32_t total_bytes
Definition: usb.h:41