_c5509_usb.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:6k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /* 
  10.  * ======== _c5509_usb.h ========
  11.  * This file defines internal data struct and data for C5509 USB IOM
  12.  *  mini-driver.
  13.  */
  14. #ifndef _C5509_USB_
  15. #define _C5509_USB_
  16. #include <csl.h>
  17. #include <csl_std.h>
  18. #include <csl_usb.h>
  19. #include <iom.h>
  20. #include <c5509_usb.h>
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /*
  25.  * Total number of USB endpoints supported by device.
  26.  */
  27. #define _C5509_USB_ENDPTNUMS 16    /* 16 endpoints in C5509 */
  28. /*
  29.  *  Internal mini-driver control endpoint(EP) 0 attrs.
  30.  */
  31. #define _C5509_USB_NUMEPSRSVD    2    /* EP0 IN & OUT reserved for control */
  32. #define _C5509_USB_EP0RSVDSIZE  64    /* EP0 max transfer size in bytes */
  33. /* 
  34.  * Internal EP 0 IN & OUT event mask 
  35.  */
  36. #define _C5509_USB_EP0RSVDMASK   (USB_EVENT_RESET | USB_EVENT_SETUP | 
  37.         USB_EVENT_SUSPEND | USB_EVENT_RESUME | USB_EVENT_EOT)    
  38. /*
  39.  *  Desired clock frequency (in MHz) for the USB module.
  40.  *  Must be 48 MHz for the proper operation of the USB device.
  41.  *  Used in CSL USB_initPLL() call.
  42.  */
  43. #define _C5509_USB_OUTCLK48MHZ 48
  44. /* 
  45.  *  Internal endpoint control objects 
  46.  */
  47. extern USB_EpObj _C5509_USB_usbEpObjIn0, _C5509_USB_usbEpObjOut0;
  48. /*
  49.  *  Internal pointer to device parameters.
  50.  */
  51. extern C5509_USB_DevParams *_C5509_USB_devParams;
  52. /*
  53.  *  USB setup packet 
  54.  */
  55. extern USB_SetupStruct _C5509_USB_usbSetup;  
  56. /* 
  57.  *  global device object -- initialized by mdBindDev
  58.  */
  59. typedef struct _C5509_USB_DevObj {
  60.     volatile Bool busConnected;   /* Set TRUE after host enumerates bus */
  61.     Uint16  lastRequest; /* last control channel request */
  62.     C5509_USB_ChanHandle chans[_C5509_USB_ENDPTNUMS]; /* IOM chan ptr array */
  63.     USB_EpHandle eps[_C5509_USB_ENDPTNUMS+1];  /* array of null term'd EPs */
  64.     C5509_USB_StateInfo stateInfo;
  65. } _C5509_USB_DevObj, *_C5509_USB_DevHandle;
  66. extern _C5509_USB_DevObj _C5509_USB_devObj;
  67. typedef struct {
  68.     Uint16 request;                         /* request ID */
  69.     C5509_USB_UsbReqHandler usbReqHandler;  /* request handler function ptr */
  70. } _C5509_USB_UsbRequestStruct;
  71. /*
  72.  * USB request unknown or not implemented supported
  73.  */
  74. C5509_USB_UsbReqRet _C5509_USB_usbReqUnknown();
  75.                           
  76. /*
  77.  * look up request handler in table
  78.  */ 
  79. C5509_USB_UsbReqHandler _C5509_USB_usbLookupReqHandler( Uint16 request);
  80. /* 
  81.  * ======== _C5509_USB_mdBindDev ========
  82.  */
  83. Int _C5509_USB_mdBindDev(Ptr *devp, Int devid, Ptr devParams);
  84. /* 
  85.  * ======== _C5509_USB_mdControlChan ========
  86.  */
  87. Int _C5509_USB_mdControlChan(Ptr chanp, Uns cmd, Ptr args);
  88. /* 
  89.  * ======== _C5509_USB_mdCreateChan ========
  90.  */
  91. Int _C5509_USB_mdCreateChan(Ptr *chanp, Ptr devp, String name, 
  92.     Int mode, Ptr chanParams, IOM_TiomCallback cbFxn,Ptr cbArg);
  93. /* 
  94.  * ======== _C5509_USB_mdSubmitChan ========
  95.  */
  96. Int _C5509_USB_mdSubmitChan(Ptr chanp, IOM_Packet *packet);
  97. /*  
  98.  * ======== Transaction handler ========
  99.  * This function processes actual IO for the associated endpoint
  100.  */
  101. Void _C5509_USB_transactionHandler(C5509_USB_ChanHandle chan);
  102. /*  
  103.  * ======== _C5509_USB_flushPacketHandler ========
  104.  * This function performs an IOM channel flush.
  105.  */
  106. Void _C5509_USB_flushPacketHandler(C5509_USB_ChanHandle chan, 
  107.         IOM_Packet *flushPacket);
  108. /* 
  109.  * ======== removePackets ========
  110.  * This function cancels all pending IOs for a channel.
  111.  */
  112. Void _C5509_USB_removePackets(Ptr chanp, Int status);
  113. /*
  114.  * ======== _C5509_USB_freeAllPackets ========
  115.  * This function cancels pending IOs for all channels.
  116.  */
  117. Void _C5509_USB_freeAllPackets(Void);
  118. /*
  119.  * ======== _C5509_USB_reInitUsb ========
  120.  * This function re-init usb module and set device state to default.
  121.  */
  122. Void _C5509_USB_reInitUsb(Void); 
  123. /*
  124.  * ======== control endpoint 0 handler ========
  125.  */
  126. Void _C5509_USB_usbCtrlHandler(Void);
  127. /*
  128.  * The following are USB descriptor definitions. Refer to USB 1.x spec.
  129.  */
  130. #define _C5509_USB_REQUEST_GET_STATUS              0x8000  /* Requests */
  131. #define _C5509_USB_REQUEST_CLEAR_FEATURE           0x0001
  132. #define _C5509_USB_REQUEST_SET_FEATURE             0x0003
  133. #define _C5509_USB_REQUEST_SET_ADDRESS             0x0005
  134. #define _C5509_USB_REQUEST_GET_DESCRIPTOR          0x8006
  135. #define _C5509_USB_REQUEST_SET_DESCRIPTOR          0x0007
  136. #define _C5509_USB_REQUEST_GET_CONFIGURATION       0x8008
  137. #define _C5509_USB_REQUEST_SET_CONFIGURATION       0x0009
  138. #define _C5509_USB_REQUEST_GET_INTERFACE           0x800A
  139. #define _C5509_USB_REQUEST_SET_INTERFACE           0x000B
  140. #define _C5509_USB_REQUEST_SYNC_FRAME              0x800C
  141. #define _C5509_USB_REQUEST_BULK_ONLY_RESET         0x20FF
  142. #define _C5509_USB_REQUEST_GET_MAX_LUN             0xA0FE
  143. #define _C5509_USB_DEVICE_CLASS_RESERVED           0x00    /* Device Classes */
  144. #define _C5509_USB_DEVICE_CLASS_AUDIO              0x01
  145. #define _C5509_USB_DEVICE_CLASS_COMMUNICATIONS     0x02
  146. #define _C5509_USB_DEVICE_CLASS_HUMAN_INTERFACE    0x03
  147. #define _C5509_USB_DEVICE_CLASS_MONITOR            0x04
  148. #define _C5509_USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
  149. #define _C5509_USB_DEVICE_CLASS_POWER              0x06
  150. #define _C5509_USB_DEVICE_CLASS_PRINTER            0x07
  151. #define _C5509_USB_DEVICE_CLASS_STORAGE            0x08
  152. #define _C5509_USB_DEVICE_CLASS_HUB                0x09
  153. #define _C5509_USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF
  154. #define _C5509_USB_FEATURE_ENDPOINT_STALL          0x0000 /* Feature Selector */
  155. #define _C5509_USB_FEATURE_REMOTE_WAKEUP           0x0001
  156. #define _C5509_USB_FEATURE_POWER_D0                0x0002   
  157. #define _C5509_USB_FEATURE_POWER_D1                0x0003   
  158. #define _C5509_USB_FEATURE_POWER_D2                0x0004   
  159. #define _C5509_USB_FEATURE_POWER_D3                0x0005 
  160. #ifdef __cplusplus
  161. }
  162. #endif
  163. #endif    /* _C5509_USB_ */
  164.