00001
00002
00003
00004
00005
00006
00007
00008
00016
00017
00018
00019
00020
00021
00022
00023
00044 #ifndef _CSL_USB_H_
00045 #define _CSL_USB_H_
00046
00047 #ifdef __cplusplus
00048 extern "C" {
00049 #endif
00050
00051 #include <cslr.h>
00052 #include <csl_error.h>
00053 #include <csl_types.h>
00054 #include <cslr_usb.h>
00055 #include <soc.h>
00056 #include <csl_general.h>
00057
00058
00077
00078
00079
00087 #define CSL_USB_EP0 (0)
00088
00089 #define CSL_USB_EP1 (1)
00090
00091 #define CSL_USB_EP2 (2)
00092
00093 #define CSL_USB_EP3 (3)
00094
00095 #define CSL_USB_EP4 (4)
00096
00099 #define CSL_USB_IN_TRANSFER (0x80)
00100
00101 #define CSL_USB_OUT_TRANSFER (0x00)
00102
00103 #define CSL_USB_MAX_EP0_FIFO_LEN (0x0040)
00104
00105 #define CSL_USB_SETUP_PACKET_LEN (4)
00106
00108 #define CSL_USB_EP0_PACKET_SIZE (0x40)
00109
00110 #define CSL_USB_EP_PACKET_SIZE_FS (0x40)
00111
00112 #define CSL_USB_EP_PACKET_SIZE_HS (0x200)
00113
00114 #define CSL_USB_EP1_PACKET_SIZE_FS (0x40)
00115
00116 #define CSL_USB_EP1_PACKET_SIZE_HS (0x200)
00117
00118 #define CSL_USB_EP2_PACKET_SIZE_FS (0x40)
00119
00120 #define CSL_USB_EP2_PACKET_SIZE_HS (0x200)
00121
00122 #define CSL_USB_EP3_PACKET_SIZE_FS (0x40)
00123
00124 #define CSL_USB_EP3_PACKET_SIZE_HS (0x200)
00125
00126 #define CSL_USB_EP4_PACKET_SIZE_FS (0x40)
00127
00128 #define CSL_USB_EP4_PACKET_SIZE_HS (0x200)
00129
00132 #define CSL_USB_FIFO_SIZE (512)
00133
00134 #define CSL_USB_IN_EP_FIFO_START (8)
00135
00136 #define CSL_USB_OUT_EP_FIFO_START (8)
00137
00139 #define CSL_USB_TXRXFIFOSZ_TX_SHIFT (0)
00140
00141 #define CSL_USB_TXRXFIFOSZ_RX_SHIFT (8)
00142
00144 #define CSL_USB_TX_FIFO_SIZE_8 (0)
00145
00146 #define CSL_USB_TX_FIFO_SIZE_16 (1)
00147
00148 #define CSL_USB_TX_FIFO_SIZE_32 (2)
00149
00150 #define CSL_USB_TX_FIFO_SIZE_64 (3)
00151
00152 #define CSL_USB_TX_FIFO_SIZE_128 (4)
00153
00154 #define CSL_USB_TX_FIFO_SIZE_256 (5)
00155
00156 #define CSL_USB_TX_FIFO_SIZE_512 (6)
00157
00158 #define CSL_USB_TX_FIFO_SIZE_1024 (7)
00159
00160 #define CSL_USB_TX_FIFO_SIZE_2048 (8)
00161
00162 #define CSL_USB_TX_FIFO_SIZE_4096 (9)
00163
00165 #define CSL_USB_RX_FIFO_SIZE_8 (0 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00166
00167 #define CSL_USB_RX_FIFO_SIZE_16 (1 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00168
00169 #define CSL_USB_RX_FIFO_SIZE_32 (2 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00170
00171 #define CSL_USB_RX_FIFO_SIZE_64 (3 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00172
00173 #define CSL_USB_RX_FIFO_SIZE_128 (4 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00174
00175 #define CSL_USB_RX_FIFO_SIZE_256 (5 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00176
00177 #define CSL_USB_RX_FIFO_SIZE_512 (6 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00178
00179 #define CSL_USB_RX_FIFO_SIZE_1024 (7 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00180
00181 #define CSL_USB_RX_FIFO_SIZE_2048 (8 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00182
00183 #define CSL_USB_RX_FIFO_SIZE_4096 (9 << CSL_USB_TXRXFIFOSZ_RX_SHIFT)
00184
00186 #define CSL_USB_ENDPOINT_COUNT (8)
00187
00188 #define CSL_USB_MAX_OUTEP0BUF_LEN (128)
00189
00190 #define CSL_USB_MAX_NUMBER_OF_UI_MSG (2)
00191
00194 #define CSL_USB_IOFLAG_NONE (0x0000)
00195
00196 #define CSL_USB_IOFLAG_NOSHORT (0x0001)
00197
00198 #define CSL_USB_IOFLAG_SWAP (0x0002)
00199
00200 #define CSL_USB_IOFLAG_LNK (0x0004)
00201
00203 #define CSL_USB_IOFLAG_CAT (0x0008)
00204
00205 #define CSL_USB_IOFLAG_EOLL (0x0010)
00206
00207 #define CSL_USB_IOFLAG_NOT (0x0020)
00208
00211 #define CSL_USB_EVENT_NONE (0x0000)
00212
00213 #define CSL_USB_EVENT_RESET (0x0001)
00214
00215 #define CSL_USB_EVENT_SOF (0x0002)
00216
00217 #define CSL_USB_EVENT_SUSPEND (0x0004)
00218
00219 #define CSL_USB_EVENT_RESUME (0x0008)
00220
00221 #define CSL_USB_EVENT_SETUP (0x0010)
00222
00223 #define CSL_USB_EVENT_EOT (0x0020)
00224
00225 #define CSL_USB_EVENT_STPOW (0x0040)
00226
00227 #define CSL_USB_EVENT_PSOF (0x0080)
00228
00229 #define CSL_USB_EVENT_HINT (0x0100)
00230
00231 #define CSL_USB_EVENT_HERR (0x0200)
00232
00233 #define CSL_USB_EVENT_ISO_TX (0x0400)
00234
00235 #define CSL_USB_EVENT_ISO_RX (0x0800)
00236
00237 #define CSL_USB_EVENT_READ_MEDIA (0x1000)
00238
00239 #define CSL_USB_EVENT_WRITE_MEDIA (0x2000)
00240
00241 #define CSL_USB_EVENT_HID_REPORT_TX (0x4000)
00242
00245 #define CSL_USB_GET_STATUS (0x00)
00246
00247 #define CSL_USB_CLEAR_FEATURE (0x01)
00248
00249 #define CSL_USB_SET_FEATURE (0x03)
00250
00251 #define CSL_USB_SET_ADDRESS (0x05)
00252
00253 #define CSL_USB_GET_DESCRIPTOR (0x06)
00254
00255 #define CSL_USB_SET_DESCRIPTOR (0x07)
00256
00257 #define CSL_USB_GET_CONFIGURATION (0x08)
00258
00259 #define CSL_USB_SET_CONFIGURATION (0x09)
00260
00261 #define CSL_USB_GET_INTERFACE (0x0A)
00262
00263 #define CSL_USB_SET_INTERFACE (0x0B)
00264
00265 #define CSL_USB_SYNCH_FRAME (0x0C)
00266
00267 #define CSL_USB_GET_MAX_LUN (0xFE)
00268
00269 #define CSL_USB_BOT_MSC_RESET (0xFF)
00270
00272 #define CSL_USB_REQUEST_TYPE_DEVICE_STATUS (0x80)
00273 #define CSL_USB_REQUEST_TYPE_INTERFACE_STATUS (0x81)
00274 #define CSL_USB_REQUEST_TYPE_ENDPOINT_STATUS (0x82)
00275
00278 #define CSL_USB_SET_CUR (0x01)
00279
00280 #define CSL_USB_GET_CUR (0x81)
00281
00282 #define CSL_USB_SET_MIN (0x02)
00283
00284 #define CSL_USB_GET_MIN (0x82)
00285
00286 #define CSL_USB_SET_MAX (0x03)
00287
00288 #define CSL_USB_GET_MAX (0x83)
00289
00290 #define CSL_USB_SET_RES (0x04)
00291
00292 #define CSL_USB_GET_RES (0x84)
00293
00294 #define CSL_USB_SET_MEM (0x05)
00295
00296 #define CSL_USB_GET_MEM (0x85)
00297
00298 #define CSL_USB_GET_STAT (0xFF)
00299
00303 #define CSL_USB_GET_REPORT (0x01)
00304
00305 #define CSL_USB_GET_IDLE (0x02)
00306
00308 #define CSL_USB_GET_PROTOCOL (0x03)
00309
00311 #define CSL_USB_SET_REPORT (0x09)
00312
00314 #define CSL_USB_SET_IDLE (0x0A)
00315
00317 #define CSL_USB_SET_PROTOCOL (0x0B)
00318
00321 #define CSL_USB_DEVICE_DESCRIPTOR_TYPE (0x01)
00322
00323 #define CSL_USB_CONFIGURATION_DESCRIPTOR_TYPE (0x02)
00324
00325 #define CSL_USB_STRING_DESCRIPTOR_TYPE (0x03)
00326
00327 #define CSL_USB_INTERFACE_DESCRIPTOR_TYPE (0x04)
00328
00329 #define CSL_USB_ENDPOINT_DESCRIPTOR_TYPE (0x05)
00330
00331 #define CSL_USB_DEVICE_QUAL_DESCRIPTOR_TYPE (0x06)
00332
00333 #define CSL_USB_OTHERSPEED_CFG_DESCRIPTOR_TYPE (0x07)
00334
00335 #define CSL_USB_HID_DESCRIPTOR_TYPE (0x21)
00336
00337 #define CSL_USB_HID_REPORT_DESCRIPTOR_TYPE (0x22)
00338
00339 #define CSL_USB_FEATURE_ENDPOINT_STALL (0x0000)
00340
00341 #define CSL_USB_FEATURE_REMOTE_WAKEUP (0x0001)
00342
00345 #define CSL_USB_GBL_INT_SUSPEND (1<<0)
00346
00347 #define CSL_USB_GBL_INT_RESUME (1<<1)
00348
00349 #define CSL_USB_GBL_INT_RESET (1<<2)
00350
00351 #define CSL_USB_GBL_INT_SOF (1<<3)
00352
00353 #define CSL_USB_GBL_INT_DEVCONN (1<<4)
00354
00355 #define CSL_USB_GBL_INT_DEVDISCONN (1<<5)
00356
00357 #define CSL_USB_GBL_INT_SRP (1<<6)
00358
00359 #define CSL_USB_GBL_INT_VBUSERR (1<<7)
00360
00361 #define CSL_USB_GBL_INT_DRVVBUS (1<<8)
00362
00363
00366 #define CSL_USB_RX_INT_EP4 (1<<12)
00367
00368 #define CSL_USB_RX_INT_EP3 (1<<11)
00369
00370 #define CSL_USB_RX_INT_EP2 (1<<10)
00371
00372 #define CSL_USB_RX_INT_EP1 (1<<9)
00373
00376 #define CSL_USB_TX_INT_EP4 (1<<4)
00377
00378 #define CSL_USB_TX_INT_EP3 (1<<3)
00379
00380 #define CSL_USB_TX_INT_EP2 (1<<2)
00381
00382 #define CSL_USB_TX_INT_EP1 (1<<1)
00383
00384 #define CSL_USB_TX_RX_INT_EP0 (1<<0)
00385
00387 #define CSL_USB_DELAY (0xFF)
00388
00389 #define CSL_USB_DATA_DELAY (0xFFF)
00390
00392 #define CSL_USB_RESUME_DELAY (10)
00393
00395 #define CSL_USB_PER_RESTCOUNT (0x20)
00396
00399 #define CSL_USB_INTRUSB_INTRUSBE_DEFVAL (0x7fff)
00400
00401 #define CSL_USB_INTMSKSETR1_DEFVAL (0xFFFF)
00402
00403 #define CSL_USB_INTMSKSETR2_DEFVAL (0xFFF7)
00404
00405 #define CSL_USB_SYS_CTRL_REG_DEF_VAL (0x6040)
00406
00407 #define CSL_USB_CLOCKSTOP_REG_DEF_VAL (0x0)
00408
00411 #define CSL_USB_DMA_SCHED_CTRL1_DEFVAL (0x0001)
00412
00413 #define CSL_USB_ENTRYLSW_DEFVAL (0x0081)
00414
00415 #define CSL_USB_RXGCR1_DEFVAL (0x401A)
00416
00417 #define CSL_USB_RXGCR2_DEFVAL (0x8100)
00418
00419 #define CSL_USB_LRAM0SIZE_DEFVAL (0x200)
00420
00421 #define CSL_USB_QMEMRCTRL1_DEFVAL (0x200)
00422
00423 #define CSL_USB_QMEMRCTRL2_DEFVAL (0x0000)
00424
00425 #define CSL_USB_16BIT_REG_MASK (0xFFFF)
00426
00427 #define CSL_USB_16BIT_REG_SHIFT (16)
00428
00431 #if (defined(CHIP_C5505_C5515) || defined(CHIP_C5504_C5514))
00432
00433 #define CSL_USB_PLL_PLLCNTL1_DEFVAL (0x8BE8)
00434
00435 #else
00436 #define CSL_USB_PLL_PLLCNTL1_DEFVAL (0x82FA)
00437 #endif
00438
00440 #define CSL_USB_PLL_PLLINCNTL_DEFVAL (0x8000)
00441
00442 #define CSL_USB_PLL_PLLCNTL2_DEFVAL (0x0806)
00443
00444 #define CSL_USB_PLL_PLLOUTCNTL_DEFVAL (0x0000)
00445
00446 #define CSL_USB_PLL_TIMEOUT (0xFFFF)
00447
00449 #define CSL_USB_INTMASKEDRL_LSB (0)
00450
00451 #define CSL_USB_INTMASKEDRL_MSB (12)
00452
00453 #define CSL_USB_INTMASKEDRH_LSB (0)
00454
00455 #define CSL_USB_INTMASKEDRH_MSB (8)
00456
00457 #define CSL_USB_INTCLRRL_LSB (0)
00458
00459 #define CSL_USB_INTCLRRL_MSB (12)
00460
00461 #define CSL_USB_INTCLRRH_LSB (0)
00462
00463 #define CSL_USB_INTCLRRH_MSB (8)
00464
00466 #define CSL_USB_INVALID_MAXPOWER (0xFFFF)
00467
00469 #define CSL_USB_WORD_ACCESS (0)
00470
00471 #define CSL_USB_HIGHBYTE_ACCESS (1)
00472
00473 #define CSL_USB_LOWBYTE_ACCESS (2)
00474
00476 #define CSL_USB_MIN(a,b) (((a)<(b))?(a):(b))
00477
00484 #define CSL_USB_CHANGE_ACCESSTYPE(byte) \
00485 CSL_FINS(CSL_SYSCTRL_REGS->USBSCR, SYS_USBSCR_USBBYTEMODE, byte)
00486
00488 #define CSL_USB_BYTESWAP(word) \
00489 ((((word) >> 8u) & 0xFFu) | (((word) & 0xFFu) << 8u))
00490
00492 typedef Uint16 CSL_UsbIoFlags;
00494 typedef Uint16 CSL_UsbEventMask;
00496 typedef Uint16 CSL_UsbByteCount;
00498 typedef Uint16 CSL_UsbFrameNum;
00499
00501 typedef void (*CSL_USB_EVENT_ISR)();
00503 typedef void (*CSL_USB_APP_CALLBACK)(Uint16 flag);
00505 typedef CSL_Status (*CSL_USB_APP_TRANSFER_CALLBACK)(void *, void *);
00506
00510
00511
00512
00513
00523 typedef enum {
00526 CSL_USB_OUT_EP0 = 0x00,
00528 CSL_USB_OUT_EP1 = 0x01,
00530 CSL_USB_OUT_EP2 = 0x02,
00532 CSL_USB_OUT_EP3 = 0x03,
00534 CSL_USB_OUT_EP4 = 0x04,
00536 CSL_USB_OUT_EP5 = 0x05,
00538 CSL_USB_OUT_EP6 = 0x06,
00540 CSL_USB_OUT_EP7 = 0x07,
00543 CSL_USB_IN_EP0 = 0x08,
00545 CSL_USB_IN_EP1 = 0x09,
00547 CSL_USB_IN_EP2 = 0x0A,
00549 CSL_USB_IN_EP3 = 0x0B,
00551 CSL_USB_IN_EP4 = 0x0C,
00553 CSL_USB_IN_EP5 = 0x0D,
00555 CSL_USB_IN_EP6 = 0x0E,
00557 CSL_USB_IN_EP7 = 0x0F
00558 } CSL_UsbEpNum;
00559
00563 typedef enum {
00565 CSL_USB_EP0_IDLE = 0,
00567 CSL_USB_EP0_STATUS_IN,
00569 CSL_USB_EP0_TX,
00571 CSL_USB_EP0_RX
00572 } CSL_UsbEp0State;
00573
00577 typedef enum {
00579 CSL_USB_DEVICE_DETACH = 0,
00581 CSL_USB_DEVICE_ATTACH
00582 } CSL_UsbDeviceEvent;
00583
00587 typedef enum {
00589 CSL_USB_BS_UNKNOWN_SPEED = 0,
00591 CSL_USB_BS_FULL_SPEED = (1 << 1),
00593 CSL_USB_BS_HIGH_SPEED = (1 << 2)
00594 } CSL_UsbBusSpeed;
00595
00599 typedef enum {
00601 CSL_USB_MSG_MSC_CTL = 0,
00603 CSL_USB_MSG_MSC_BULK_IN,
00605 CSL_USB_MSG_MSC_BULK_OUT,
00607 CSL_USB_MSG_ISO_OUT,
00609 CSL_USB_MSG_ISO_IN,
00611 CSL_USB_MSG_HID_INT_IN,
00613 CSL_USB_MSG_MSC_TASK_EXIT
00614 } CSL_UsbMscMsg;
00615
00619 typedef enum {
00621 CSL_USB_MSG_USBUI_HOSTFEATURE = 0,
00623 CSL_USB_MSG_USBUI_USBERROR,
00625 CSL_USB_MSG_USBUI_TASK_EXIT
00626 } CSL_UsbUiMsg;
00627
00631 typedef enum {
00633 CSL_USB_MSG_DATA = 0,
00635 CSL_USB_MSG_USB_INT,
00637 CSL_USB_MSG_RESET_DEVICE,
00639 CSL_USB_MSG_CONNECT_DEVICE,
00641 CSL_USB_MSG_DISCONNECT_DEVICE,
00643 CSL_USB_MSG_STALL_ENDPOINT,
00645 CSL_USB_MSG_CLEAR_ENDPOINT_STALL,
00647 CSL_USB_MSG_ABORT_TRANSFER,
00649 CSL_USB_MSG_SEND_HAND_SHAKE,
00651 CSL_USB_MSG_MAIN_TASK_EXIT
00652 } CSL_UsbMainMsg;
00653
00657 typedef enum {
00659 CSL_USB_CTRL = 0x00,
00661 CSL_USB_BULK = 0x01,
00663 CSL_USB_INTR = 0x02,
00665 CSL_USB_ISO = 0x03,
00667 CSL_USB_HPORT = 0x04
00668 } CSL_UsbXferType;
00669
00673 typedef enum {
00674
00675 CSL_USB0 = 0x00,
00676
00677 CSL_USB1 = 0x01,
00678
00679 CSL_USB2 = 0x02
00680 } CSL_UsbDevNum;
00681
00685 typedef enum {
00686
00687 CSL_USB_EP0_DATA_OUT = 0x00,
00688
00689 CSL_USB_EP0_DATA_IN = 0x01
00690 } CSL_UsbEp0DataDir;
00691
00695 typedef enum {
00696
00697 CSL_USB_FALSE = 0,
00698
00699 CSL_USB_TRUE
00700 } CSL_UsbBoolean;
00701
00710 typedef enum {
00711
00712 CSL_USB_OPMODE_POLLED = 0,
00713
00714 CSL_USB_OPMODE_DMA,
00715
00716 CSL_USB_OPMODE_DMA_TXONLY
00717 } CSL_UsbOpMode;
00718
00719
00723
00724
00725
00726
00737 typedef struct CSL_UsbTransfer {
00739 DWORD dwFlags;
00741 DWORD dwEndpoint;
00743 PVOID pvBuffer;
00745 DWORD cbBuffer;
00747 DWORD cbTransferred;
00750 DWORD prevTxferLen;
00752 Bool fComplete;
00754 CSL_UsbIoFlags ioFlags;
00755 } CSL_UsbTransfer;
00756
00758 typedef CSL_UsbTransfer *pUsbTransfer;
00759
00765 typedef struct CSL_UsbEpStatus {
00767 DWORD dwEndpoint;
00769 CSL_UsbXferType xferType;
00771 DWORD dwPacketSizeAssigned;
00773 Bool fInitialized;
00775 DWORD* pFifoAddr;
00777 CSL_UsbTransfer *pTransfer;
00779 WORD wUSBEvents;
00781 WORD dataReadFromFifo;
00783 CSL_USB_EVENT_ISR hEventHandler;
00785 Bool fStalled;
00787 Bool fSelected;
00788 } CSL_UsbEpStatus;
00789
00791 typedef CSL_UsbEpStatus *pUsbEpStatus;
00792
00796 typedef struct CSL_UsbSetupStruct {
00798 int newPacket;
00800 Uint16 bmRequestType;
00802 Uint16 bRequest;
00804 Uint16 wValue;
00806 Uint16 wIndex;
00808 Uint16 wLength;
00809 } CSL_UsbSetupStruct;
00810
00818 typedef struct CSL_UsbDataStruct {
00820 Uint16 bytes;
00822 Uint16 *pBuffer;
00824 struct CSL_UsbDataStruct *pNextBuffer;
00825 } CSL_UsbDataStruct;
00826
00834 typedef struct CSL_UsbEpObj {
00836 CSL_UsbEpNum epNum;
00838 CSL_UsbXferType xferType;
00840 Uint16 maxPktSiz;
00842 Uint16 eventMask;
00847 CSL_USB_EVENT_ISR fxn;
00849 Uint16 dataFlags;
00851 Uint16 status;
00853 Uint16 epDescRegSAddr;
00855 Uint16 dmaRegSAddr;
00857 Uint16 totByteCnt;
00859 Uint16 byteInThisSeg;
00862 Uint16 *xferBytCnt;
00864 Uint16 *pBuffer;
00866 CSL_UsbDataStruct *pNextBuffer;
00868 Uint16 eventFlag;
00869 } CSL_UsbEpObj;
00870
00872 typedef CSL_UsbEpObj *pUsbEpHandle;
00873
00879 typedef struct CSL_UsbContext {
00881 CSL_UsbOpMode opMode;
00883 WORD maxCurrent;
00885 Bool fInitialized;
00887 Bool fSetupPktCmd;
00889 Bool fOutPhaseCmd;
00891 Bool fWaitingOnFlagA;
00893 Bool fWaitingOnFlagB;
00895 Bool fWaitingOnEP0BUFAvail;
00897 Bool fWaitingOnEP1InBUFAvail;
00899 WORD *rgbDescriptors;
00901 WORD cbDescriptors;
00903 DWORD dwFlagAEndpointAssigned;
00905 DWORD dwFlagBEndpointAssigned;
00907 DWORD *pFIFOBaseAddress;
00909 DWORD *pInterruptAddr;
00911 Bool fSendHandshake;
00913 Bool fMUSBIsReady;
00915 WORD cbOutEP0Buf;
00917 WORD cbOutEP0DataReceived;
00919 DWORD dwOutEP0Buf[CSL_USB_MAX_OUTEP0BUF_LEN / 4];
00920
00922 Bool fEP0BUFAvailable;
00924 Bool fEP1InBUFAvailable;
00926 WORD dwQueuePend1;
00928 Bool fEP3InBUFAvailable;
00930 WORD dwIntSourceL;
00932 WORD dwIntSourceH;
00934 CSL_UsbBoolean remoteWkpStat;
00936 CSL_UsbEpStatus *pEpStatus;
00938 CSL_UsbBusSpeed busSpeed;
00940 CSL_UsbEp0State ep0State;
00942 CSL_UsbDeviceEvent cableState;
00944 CSL_UsbSetupStruct usbSetup;
00946 CSL_USB_APP_CALLBACK suspendCallBackFxn;
00948 CSL_USB_APP_CALLBACK wakeupCallBackFxn;
00950 CSL_USB_APP_TRANSFER_CALLBACK startTransferCallback;
00952 CSL_USB_APP_TRANSFER_CALLBACK completeTransferCallback;
00953 WORD dwFIFOStartAddr;
00955 Uint16 *deviceDescPtr;
00957 Uint16 *deviceQualDescPtr;
00959 Uint16 *cfgDescPtr;
00961 Uint16 *cfgDescFSPtr;
00963 Uint16 *strDescPtr[4];
00965 Uint16 devAddr;
00967 CSL_UsbEpObj ctrlInEpObj;
00969 CSL_UsbDevNum devNum;
00971 CSL_UsbEpObj ctrlOutEpObj;
00973 Uint16 suspendFlag;
00975 pUsbEpHandle hEpObjArray[CSL_USB_ENDPOINT_COUNT];
00977 Uint16 curConfigStat;
00981 Bool usbSpeedCfg;
00982 } CSL_UsbContext;
00983
00985 typedef CSL_UsbContext *pUsbContext;
00986
00992 typedef struct CSL_UsbMsgObj {
00994 WORD wMsg;
00996 WORD wEndpoint;
00997 } CSL_UsbMsgObj;
00998
01005 typedef struct CSL_UsbConfig {
01007 CSL_UsbDevNum devNum;
01009 CSL_UsbOpMode opMode;
01011 Uint16 maxCurrent;
01013 CSL_USB_APP_CALLBACK appSuspendCallBack;
01015 CSL_USB_APP_CALLBACK appWakeupCallBack;
01017 CSL_USB_APP_TRANSFER_CALLBACK startTransferCallback;
01019 CSL_USB_APP_TRANSFER_CALLBACK completeTransferCallback;
01020 } CSL_UsbConfig;
01021
01022
01026 typedef struct CSL_UsbHostPktDescr {
01028 volatile Uint32 PacketInfoWord0;
01030 volatile Uint32 PacketInfoWord1;
01032 volatile Uint32 PacketInfoWord2;
01034 volatile Uint32 Buffer0InfoWord0;
01036 volatile Uint32 Buffer0InfoWord1;
01038 volatile Uint32 LinkingWord;
01040 volatile Uint32 OriginalBuffer0InfoWord0;
01042 volatile Uint32 OriginalBuffer0InfoWord1;
01043 } CSL_UsbHostPktDescr;
01044
01048 typedef struct CSL_UsbHostBufDescr {
01050 volatile Uint32 Reserved0;
01052 volatile Uint32 Reserved1;
01054 volatile Uint32 PacketInfoWord2;
01056 volatile Uint32 Buffer0InfoWord0;
01058 volatile Uint32 Buffer0InfoWord1;
01060 volatile Uint32 LinkingWord;
01062 volatile Uint32 OriginalBuffer0InfoWord0;
01064 volatile Uint32 OriginalBuffer0InfoWord1;
01065 } CSL_UsbHostBufDescr;
01066
01070
01071
01072
01073
01113 CSL_Status USB_init(CSL_UsbConfig *usbConfig);
01114
01154 CSL_Status USB_resetDev(CSL_UsbDevNum devNum);
01155
01214 CSL_Status USB_initEndptObj(CSL_UsbDevNum devNum,
01215 pUsbEpHandle hEp,
01216 CSL_UsbEpNum epNum,
01217 CSL_UsbXferType xferType,
01218 Uint16 maxPktSize,
01219 Uint16 evMask,
01220 CSL_USB_EVENT_ISR fxn);
01221
01270 CSL_UsbEventMask USB_getEvents(pUsbEpHandle hEp,
01271 CSL_Status *status);
01272
01323 CSL_UsbEventMask USB_peekEvents(pUsbEpHandle hEp,
01324 CSL_Status *status);
01325
01374 CSL_Status USB_getSetupPacket(CSL_UsbDevNum devNum,
01375 CSL_UsbSetupStruct *usbSetup,
01376 Bool readFromFifo);
01377
01426 CSL_Status USB_postTransaction(pUsbEpHandle hEp,
01427 Uint16 byteCnt,
01428 void *data,
01429 CSL_UsbIoFlags flags);
01430
01487 CSL_UsbBoolean USB_isTransactionDone(pUsbEpHandle hEp,
01488 CSL_Status *status);
01489
01543 CSL_UsbByteCount USB_bytesRemaining(pUsbEpHandle hEp,
01544 CSL_Status *status);
01545
01590 CSL_Status USB_stallEndpt(pUsbEpHandle hEp);
01591
01641 CSL_Status USB_clearEndptStall(pUsbEpHandle hEp);
01642
01693 CSL_UsbBoolean USB_getEndptStall(pUsbEpHandle hEp,
01694 CSL_Status *status);
01695
01741 pUsbEpHandle USB_epNumToHandle(CSL_UsbDevNum devNum,
01742 Uint16 endpt);
01743
01784 CSL_Status USB_abortTransaction(pUsbEpHandle hEp);
01785
01825 CSL_Status USB_abortAllTransaction(CSL_UsbDevNum devNum);
01826
01866 CSL_Status USB_connectDev(CSL_UsbDevNum devNum);
01867
01903 CSL_Status USB_disconnectDev(CSL_UsbDevNum devNum);
01904
01945 CSL_Status USB_setRemoteWakeup(CSL_UsbDevNum devNum,
01946 CSL_UsbBoolean rmtWkpStat);
01947
01986 CSL_UsbBoolean USB_getRemoteWakeupStat(CSL_UsbDevNum devNum);
01987
02031 CSL_Status USB_issueRemoteWakeup(CSL_UsbDevNum devNum,
02032 Bool resumeBitVal);
02033
02075 CSL_Status USB_setDevAddr(CSL_UsbDevNum devNum,
02076 Uint16 addr);
02077
02117 CSL_UsbFrameNum USB_getFrameNo(CSL_UsbDevNum devNum);
02118
02160 CSL_Status USB_suspendDevice(CSL_UsbDevNum devNum);
02161
02216 CSL_Status USB_selfwakeup(CSL_UsbDevNum devNum,
02217 Uint32 wakeupDelay);
02218
02249 void USB_initPLL(void);
02250
02286 CSL_Status USB_setParams(CSL_UsbDevNum devNum,
02287 pUsbEpHandle hEpObj[],
02288 Uint16 pSofTmrCnt);
02289
02330 WORD USB_getMaxPower(CSL_UsbDevNum devNum);
02331
02370 void USB_setFullSpeedMode(Uint16 ep0DataSize);
02371
02416 Uint16 USB_getDataCountReadFromFifo (pUsbEpHandle hEp);
02417
02418
02419 Uint16 USB_findFifoSize(Uint16 maxPktSize, CSL_UsbXferType xferType);
02420
02421
02422
02423 CSL_Status USB_coreEventProcessEp0(pUsbContext pContext);
02424
02428 #ifdef __cplusplus
02429 }
02430 #endif
02431
02432 #endif //_CSL_USB_H_
02433