00001
00038 #ifndef AT90USB_REGS_H_INCLUDED
00039 #define AT90USB_REGS_H_INCLUDED
00040
00041
00042
00043
00044
00047 #define AT90USB_UHWCON_UVREGE (1 << 0) //!< USB pad regulator enable
00048 #define AT90USB_UHWCON_UVCONE (1 << 4) //!< UVCON pin enable
00049 #define AT90USB_UHWCON_UIDE (1 << 6) //!< UID pin enable
00050 #define AT90USB_UHWCON_UIMOD (1 << 7) //!< USB mode
00051
00052
00055 #define AT90USB_USBCON_VBUSTE (1 << 0) //!< VBUS transition interrupt enable
00056 #define AT90USB_USBCON_IDTE (1 << 1) //!< ID transition interrupt enable
00057 #define AT90USB_USBCON_OTGPADE (1 << 4) //!< OTG pad enable
00058 #define AT90USB_USBCON_FRZCLK (1 << 5) //!< Freeze USB clock
00059 #define AT90USB_USBCON_HOST (1 << 6) //!< HOST enable
00060 #define AT90USB_USBCON_USBE (1 << 7) //!< USB macro enable
00061
00062
00065 #define AT90USB_USBSTA_VBUS (1 << 0) //!< VBus flag
00066 #define AT90USB_USBSTA_ID (1 << 1) //!< IUD pin flag
00067 #define AT90USB_USBSTA_SPEED (1 << 3) //!< Speed status flag
00068
00069
00072 #define AT90USB_USBINT_VBUSTI (1 << 0) //!< IVBUS transition interrupt flag
00073 #define AT90USB_USBINT_IDTI (1 << 1) //!< D transition interrupt flag
00074
00075
00078 #define AT90USB_USBOTG_VBUSRQC (1 << 0) //!< VBUS request clear
00079 #define AT90USB_USBOTG_VBUSREQ (1 << 1) //!< VBUS request
00080 #define AT90USB_USBOTG_VBUSHWC (1 << 2) //!< VBus hardware control
00081 #define AT90USB_USBOTG_SRPSEL (1 << 3) //!< SRP selection
00082 #define AT90USB_USBOTG_SRPREQ (1 << 4) //!< SRP request
00083 #define AT90USB_USBOTG_HNPREQ (1 << 5) //!< HNP request
00084
00085
00088 #define AT90USB_OTGTCON_VALUE (1 << 0) //!< Value of the timer
00089 #define AT90USB_OTGTCON_PAGE (1 << 1) //!< Timer page access
00090
00091
00094 #define AT90USB_OTGIEN_SRPE (1 << 0) //!< SRP interrupt enable
00095 #define AT90USB_OTGIEN_VBERRE (1 << 1) //!< VBus error interrupt enable
00096 #define AT90USB_OTGIEN_BCERRE (1 << 2) //!< B-Connection error interrupt enable
00097 #define AT90USB_OTGIEN_ROLEEXE (1 << 3) //!< Role exchange interrupt enable
00098 #define AT90USB_OTGIEN_HNPERRE (1 << 4) //!< HNP error interrupt enable
00099 #define AT90USB_OTGIEN_STOE (1 << 5) //!< Suspend time out error interrupt enable
00100
00101
00104 #define AT90USB_OTGINT_SRPI (1 << 0) //!< SRP interrupt flag
00105 #define AT90USB_OTGINT_VBERRI (1 << 1) //!< VBus error interrupt flag
00106 #define AT90USB_OTGINT_BCERRI (1 << 2) //!< B-Connection error interrupt flag
00107 #define AT90USB_OTGINT_ROLEEXI (1 << 3) //!< Role exchange interrupt flag
00108 #define AT90USB_OTGINT_HNPERRI (1 << 4) //!< HNP error interrupt flag
00109 #define AT90USB_OTGINT_STOI (1 << 5) //!< Suspend time out error interrupt flag
00110
00111
00114 #define AT90USB_UDCON_DETACH (1 << 0) //!< Detatch the device
00115 #define AT90USB_UDCON_RMWKUP (1 << 1) //!< Remote wake up
00116 #define AT90USB_UDCON_LSM (1 << 2) //!< USB device low-speed mode selection
00117
00118
00121 #define AT90USB_UDINT_SUSPI (1 << 0) //!< Suspend interrupt flag
00122 #define AT90USB_UDINT_SOFI (1 << 2) //!< Start of frame interrupt flag
00123 #define AT90USB_UDINT_EORSTI (1 << 3) //!< End of reset interrupt flag
00124 #define AT90USB_UDINT_WAKEUPI (1 << 4) //!< Wake-up CPU interrupt flag
00125 #define AT90USB_UDINT_EORSMI (1 << 5) //!< End of resume interrupt flag
00126 #define AT90USB_UDINT_UPRSMI (1 << 6) //!< Upstream resume interrupt flag
00127
00128
00131 #define AT90USB_UDIEN_SUSPE (1 << 0) //!< Suspend interrupt enable
00132 #define AT90USB_UDIEN_SOFE (1 << 2) //!< Start of frame interrupt enable
00133 #define AT90USB_UDIEN_EORSTE (1 << 3) //!< End of reset interrupt enable
00134 #define AT90USB_UDIEN_WAKEUPE (1 << 4) //!< Wake-up CPU interrupt enable
00135 #define AT90USB_UDIEN_EORSME (1 << 5) //!< End of resume interrupt enable
00136 #define AT90USB_UDIEN_UPRSME (1 << 6) //!< Upstream resume interrupt enable
00137
00138
00141 #define AT90USB_UDADDR_UADD (1 << 0) //!< USB address bit field
00142 # define AT90USB_UDADDR_UADD_MASK ((1 << 8) - 1) //!< USB address bit mask
00143 #define AT90USB_UDADDR_ADDEN (1 << 7) //!< Address enable
00144
00145
00148 #define AT90USB_UDFNUMH_FNUM (1 << 0) //!< Frame number upper value
00149
00150
00153 #define AT90USB_UDFNUML_FNUM (1 << 0) //!< Frame number lower value
00154
00155
00158 #define AT90USB_UDMFN_FNCERR (1 << 4) //!< Frame number CRC error flag
00159
00160
00161
00162
00163
00164
00167 #define AT90USB_UENUM_EPNUM(x) ((x) << 0) //!< Endpoint number
00168
00169
00172 #define AT90USB_UERST_EPRST(x) (1 << (x)) //!< Endpoint x reset
00173
00174
00177 #define AT90USB_UECONX_EPEN (1 << 0) //!< Endpoint enable
00178 #define AT90USB_UECONX_RSTDT (1 << 3) //!< Reset data toggle
00179 #define AT90USB_UECONX_STALLRQC (1 << 4) //!< STALL request disable
00180 #define AT90USB_UECONX_STALLRQ (1 << 5) //!< STALL request enable
00181
00182
00185 #define AT90USB_UECFG0X_EPDIR (1 << 0) //!< Endpoint direction
00186 # define AT90USB_UECFG0X_EPDIR_IN (1 << 0) //!< IN endpoint
00187 # define AT90USB_UECFG0X_EPDIR_OUT (0 << 0) //!< OUT endpoint
00188 #define AT90USB_UECFG0X_EPTYPE(x) ((x) << 6) //!< Endpoint type
00189 # define AT90USB_UECFG0X_EPTYPE_CONTROL (0 << 6) //!< Control endpoint
00190 # define AT90USB_UECFG0X_EPTYPE_ISO (1 << 6) //!< Isochronous endpoint
00191 # define AT90USB_UECFG0X_EPTYPE_BULK (2 << 6) //!< Bulk endpoint
00192 # define AT90USB_UECFG0X_EPTYPE_INT (3 << 6) //!< Interrupt endpoint
00193
00194
00197 #define AT90USB_UECFG1X_ALLOC (1 << 1) //!< Endpoint allocate
00198 #define AT90USB_UECFG1X_EPBK(x) ((x) << 2) //!< Endpoint bank
00199 # define AT90USB_UECFG1X_GET_EPBK(x) ((x & 3) >> 2) //!< # banks
00200 #define AT90USB_UECFG1X_EPSIZE(x) ((x) << 4) //!< Endpoint size
00201 # define AT90USB_UECFG1X_EPSIZE_8 (0 << 4) //!< 8 byte endpoint size
00202 # define AT90USB_UECFG1X_EPSIZE_16 (1 << 4) //!< 16 byte endpoint size
00203 # define AT90USB_UECFG1X_EPSIZE_32 (2 << 4) //!< 32 byte endpoint size
00204 # define AT90USB_UECFG1X_EPSIZE_64 (3 << 4) //!< 64 byte endpoint size
00205 # define AT90USB_UECFG1X_EPSIZE_128 (4 << 4) //!< 128 byte endpoint size
00206 # define AT90USB_UECFG1X_EPSIZE_256 (5 << 4) //!< 256 byte endpoint size
00207
00208
00211 #define AT90USB_UESTA0X_NBUSYBK (1 << 0) //!< Busy bank flag
00212 # define AT90USB_UESTA0X_GET_NBUSYBK(x) ((x) & 3) //!< # busy banks
00213 #define AT90USB_UESTA0X_DTSEQ (1 << 2) //!< Data toggle sequencing flag
00214 #define AT90USB_UESTA0X_UDERFI (1 << 5) //!< Underflow error interrupt
00215 #define AT90USB_UESTA0X_OVERFI (1 << 6) //!< Overflow error interrupt
00216 #define AT90USB_UESTA0X_CFGOK (1 << 7) //!< Configuration status
00217
00218
00221 #define AT90USB_UESTA1X_CURRBK (1 << 0) //!< Current bank flag
00222 #define AT90USB_UESTA1X_CTRLDIR (1 << 2) //!< Control direction flag
00223
00224
00227 #define AT90USB_UEINTX_TXINI (1 << 0) //!< Transmitter ready interrupt flag
00228 #define AT90USB_UEINTX_STALLEDI (1 << 1) //!< STALL interrupt flag
00229 #define AT90USB_UEINTX_RXOUTI (1 << 2) //!< Received OUT data interrupt flag
00230 #define AT90USB_UEINTX_KILLBK (1 << 2) //!< Kill last written bank
00231 #define AT90USB_UEINTX_RXSTPI (1 << 3) //!< Received SETUP interrupt flag
00232 #define AT90USB_UEINTX_NAKOUTI (1 << 4) //!< NAK OUT received interrupt flag
00233 #define AT90USB_UEINTX_RWAL (1 << 5) //!< Read/write allowed flag
00234 #define AT90USB_UEINTX_NAKINI (1 << 6) //!< NAK IN received interrupt flag
00235 #define AT90USB_UEINTX_FIFOCON (1 << 7) //!< FIFO control
00236
00237
00240 #define AT90USB_UEIENX_TXINE (1 << 0) //!< Transmitter ready interrupt enable
00241 #define AT90USB_UEIENX_STALLEDE (1 << 1) //!< STALL interrupt enable
00242 #define AT90USB_UEIENX_RXOUTE (1 << 2) //!< Received OUT data interrupt enable
00243 #define AT90USB_UEIENX_RXSTPE (1 << 3) //!< Received SETUP interrupt enable
00244 #define AT90USB_UEIENX_NAKOUTE (1 << 4) //!< NAK OUT received interrupt enable
00245 #define AT90USB_UEIENX_NAKINE (1 << 6) //!< NAK IN received interrupt enable
00246 #define AT90USB_UEIENX_FLERRE (1 << 7) //!< Flow error interrupt enable
00247
00248
00251 #define AT90USB_UEDATX_DAT (1 << 0) //!< Data
00252
00253
00256 #define AT90USB_UEBCHX_BYCT (1 << 0) //!< Byte count MSB
00257
00258
00261 #define AT90USB_UEBCLX_BYCT (1 << 0) //!< Byte count LSB
00262
00263
00266 #define AT90USB_UEINT_EP(x) (1 << (x)) //!< Endpoint interrupts
00267
00268
00269
00270
00271
00272
00275 #define AT90USB_UHCON_SOFEN (1 << 0) //!< Start of frame generation enable
00276 #define AT90USB_UHCON_RESET (1 << 1) //!< Send USB reset
00277 #define AT90USB_UHCON_RESUME (1 << 2) //!< Send USB resume
00278
00279
00282 #define AT90USB_UHINT_DCONNI (1 << 0) //!< Device connection interrupt
00283 #define AT90USB_UHINT_DDISCI (1 << 1) //!< Device disconnection interrupt
00284 #define AT90USB_UHINT_RSTI (1 << 2) //!< USB reset sent interrupt
00285 #define AT90USB_UHINT_RSMEDI (1 << 3) //!< Downstream resume sent interrupt
00286 #define AT90USB_UHINT_RXRSMI (1 << 4) //!< Upstream resume received interrupt
00287 #define AT90USB_UHINT_HSOFI (1 << 5) //!< Host start of frame interrupt
00288 #define AT90USB_UHINT_HWUPI (1 << 6) //!< Host wake-up interrupt
00289
00290
00293 #define AT90USB_UHIEN_DCONNE (1 << 0) //!< Device connection interrupt enable
00294 #define AT90USB_UHIEN_DDISCE (1 << 1) //!< Device disconnection interrupt enable
00295 #define AT90USB_UHIEN_RSTE (1 << 2) //!< USB reset sent interrupt enable
00296 #define AT90USB_UHIEN_RSMEDE (1 << 3) //!< Downstream resume sent interrupt enable
00297 #define AT90USB_UHIEN_RXRSME (1 << 4) //!< Upstream resume received interrupt enable
00298 #define AT90USB_UHIEN_HSOFE (1 << 5) //!< Host start of frame interrupt enable
00299 #define AT90USB_UHIEN_HWUPE (1 << 6) //!< Host wake-up interrupt enable
00300
00301
00304 #define AT90USB_UHADDR_HADDR (1 << 0) //!< USB host address
00305
00306
00309 #define AT90USB_UHFNUMH_FNUM (1 << 0) //!< MSB frame number
00310
00311
00314 #define AT90USB_UHFNUML_FNUM (1 << 0) //!< LSB frame number
00315
00316
00319 #define AT90USB_UHFLEN_FLEN (1 << 0) //!< Frame length
00320
00321
00322
00323
00324
00325
00328 #define AT90USB_UPNUM_PNUM(x) ((x) << 0) //!< Pipe number
00329
00330
00333 #define AT90USB_UPRST_PRST(x) (1 << (x)) //!< Reset pipe at bit posistion N
00334
00335
00338 #define AT90USB_UPCONX_PEN (1 << 0) //!< Pipe enable
00339 #define AT90USB_UPCONX_RSTDT (1 << 3) //!< Reset data toggle
00340 #define AT90USB_UPCONX_INMODE (1 << 5) //!< IN request mode
00341 #define AT90USB_UPCONX_PFREEZE (1 << 6) //!< Pipe freeze
00342
00343
00346 #define AT90USB_UPCFG0X_PEPNUM(x) ((x) << 0) //!< Pipe endpoint number
00347 #define AT90USB_UPCFG0X_PTOKEN(x) ((x) << 4) //!< Pipe token
00348 # define AT90USB_UPCFG0X_PTOKEN_SETUP (0 << 4) //!< Setup pipe token
00349 # define AT90USB_UPCFG0X_PTOKEN_IN (1 << 4) //!< In pipe token
00350 # define AT90USB_UPCFG0X_PTOKEN_OUT (2 << 4) //!< Out pipe token
00351 #define AT90USB_UPCFG0X_PTYPE(x) ((x) << 6) //!< Pipe type
00352 # define AT90USB_UPCFG0X_PTYPE_CONTROL (0 << 6) //!< Control pipe
00353 # define AT90USB_UPCFG0X_PTYPE_ISO (1 << 6) //!< Isochronous pipe
00354 # define AT90USB_UPCFG0X_PTYPE_BULK (2 << 6) //!< Bulk pipe
00355 # define AT90USB_UPCFG0X_PTYPE_INT (3 << 6) //!< Interrupt pipe
00356
00357
00360 #define AT90USB_UPCFG1X_ALLOC (1 << 1) //!< Configure pipe memory
00361 #define AT90USB_UPCFG1X_PBK(x) ((x) << 2) //!< Pipe bank
00362 #define AT90USB_UPCFG1X_PSIZE ((x) << 4) //!< Pipe size
00363 # define AT90USB_UPCFG1X_PSIZE_8 (0 << 4) //!< 8 byte pipe size
00364 # define AT90USB_UPCFG1X_PSIZE_16 (1 << 4) //!< 16 byte pipe size
00365 # define AT90USB_UPCFG1X_PSIZE_32 (2 << 4) //!< 32 byte pipe size
00366 # define AT90USB_UPCFG1X_PSIZE_64 (3 << 4) //!< 64 byte pipe size
00367 # define AT90USB_UPCFG1X_PSIZE_128 (4 << 4) //!< 128 byte pipe size
00368 # define AT90USB_UPCFG1X_PSIZE_256 (5 << 4) //!< 256 byte pipe size
00369
00370
00373 #define AT90USB_UPCFG2X_INTFRQ(x) ((x) << 0) //!< Interrupt pipe request frequency
00374
00375
00378 #define AT90USB_UPSTAX_NBUSYBK (1 << 0) //!< Busy bank flag
00379 # define AT90USB_UPSTAX_GET_NBUSYBK(x) ((x) & 3) //!< # busy banks
00380 #define AT90USB_UPSTAX_DTSEQ (1 << 2) //!< Toggle sequencing flag
00381 #define AT90USB_UPSTAX_UNDERFI (1 << 5) //!< Underflow flag
00382 #define AT90USB_UPSTAX_OVERFI (1 << 6) //!< Overflow flag
00383 #define AT90USB_UPSTAX_CFGOK (1 << 7) //!< Configure pipe memory ok
00384
00385
00388 #define AT90USB_UPINRQX_INRQ(x) ((x) << 0) //!< IN request number before freeze
00389
00390
00393 #define AT90USB_UPERRX_DATATGL (1 << 0) //!< Bad data toggle error
00394 #define AT90USB_UPERRX_DATAPID (1 << 1) //!< Data PID error
00395 #define AT90USB_UPERRX_PID (1 << 3) //!< PID error
00396 #define AT90USB_UPERRX_TIMEOUT (1 << 4) //!< Time out error
00397 #define AT90USB_UPERRX_CRC16 (1 << 5) //!< CRC16 error
00398 #define AT90USB_UPERRX_COUNTER (1 << 6) //!< Error counter
00399 # define AT90USB_UPERRX_GET_COUNTER(x) (((x) & 0xc0) >> 6) //!< # errors
00400
00401
00404 #define AT90USB_UPINTX_RXINI (1 << 0) //!< IN data received
00405 #define AT90USB_UPINTX_RXSTALLI (1 << 1) //!< STALL received / ISO CRC error
00406 #define AT90USB_UPINTX_TXOUTI (1 << 2) //!< OUT bank ready
00407 #define AT90USB_UPINTX_TXSTPI (1 << 3) //!< SETUP bank ready
00408 #define AT90USB_UPINTX_PERRI (1 << 4) //!< Pipe error
00409 #define AT90USB_UPINTX_RWAL (1 << 5) //!< Read/write allowed
00410 #define AT90USB_UPINTX_NAKEDI (1 << 6) //!< NAK handshake received
00411 #define AT90USB_UPINTX_FIFOCON (1 << 7) //!< FIFO control
00412
00413
00416 #define AT90USB_UPINTX_RXINE (1 << 0) //!< IN data received enable
00417 #define AT90USB_UPINTX_RXSTALLE (1 << 1) //!< STALL received enable
00418 #define AT90USB_UPINTX_TXOUTE (1 << 2) //!< OUT bank ready enable
00419 #define AT90USB_UPINTX_TXSTPE (1 << 3) //!< SETUP bank ready enable
00420 #define AT90USB_UPINTX_PERRE (1 << 4) //!< Pipe error enable
00421 #define AT90USB_UPINTX_NAKEDE (1 << 6) //!< NAK handshake received enable
00422 #define AT90USB_UPINTX_FLERRE (1 << 7) //!< Flow error enable
00423
00424
00427 #define AT90USB_UPDATX_PDAT (1 << 0) //!< Pipe data bits
00428
00429
00432 #define AT90USB_UPBCHX_PBYCT (1 << 0) //!< Byte count MSB bits
00433
00434
00437 #define AT90USB_UPBCLX_PBYCT (1 << 0) //!< Byte count LSB bits
00438
00439
00442 #define AT90USB_UPINT_PINT(x) (1 << (x)) //!< Pipe interrupts
00443
00444
00445 #endif