|  | #define _BULK_DATA_LEN 64 | 
|  | typedef struct | 
|  | { | 
|  | unsigned char data[_BULK_DATA_LEN]; | 
|  | unsigned int size; | 
|  | unsigned int pipe; | 
|  | }bulk_transfer_t,*pbulk_transfer_t; | 
|  |  | 
|  | #define DABUSB_MINOR 240		/* some unassigned USB minor */ | 
|  | #define DABUSB_VERSION 0x1000 | 
|  | #define IOCTL_DAB_BULK              _IOWR('d', 0x30, bulk_transfer_t) | 
|  | #define IOCTL_DAB_OVERRUNS	    _IOR('d',  0x15, int) | 
|  | #define IOCTL_DAB_VERSION           _IOR('d', 0x3f, int) | 
|  |  | 
|  | #ifdef __KERNEL__ | 
|  |  | 
|  | typedef enum { _stopped=0, _started } driver_state_t; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | struct semaphore mutex; | 
|  | struct usb_device *usbdev; | 
|  | wait_queue_head_t wait; | 
|  | wait_queue_head_t remove_ok; | 
|  | spinlock_t lock; | 
|  | atomic_t pending_io; | 
|  | driver_state_t state; | 
|  | int remove_pending; | 
|  | int got_mem; | 
|  | int total_buffer_size; | 
|  | unsigned int overruns; | 
|  | int readptr; | 
|  | int opened; | 
|  | int devnum; | 
|  | struct list_head free_buff_list; | 
|  | struct list_head rec_buff_list; | 
|  | } dabusb_t,*pdabusb_t; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | pdabusb_t s; | 
|  | struct urb *purb; | 
|  | struct list_head buff_list; | 
|  | } buff_t,*pbuff_t; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | wait_queue_head_t wait; | 
|  | } bulk_completion_context_t, *pbulk_completion_context_t; | 
|  |  | 
|  |  | 
|  | #define _DABUSB_IF 2 | 
|  | #define _DABUSB_ISOPIPE 0x09 | 
|  | #define _ISOPIPESIZE	16384 | 
|  |  | 
|  | #define _BULK_DATA_LEN 64 | 
|  | // Vendor specific request code for Anchor Upload/Download | 
|  | // This one is implemented in the core | 
|  | #define ANCHOR_LOAD_INTERNAL  0xA0 | 
|  |  | 
|  | // EZ-USB Control and Status Register.  Bit 0 controls 8051 reset | 
|  | #define CPUCS_REG    0x7F92 | 
|  | #define _TOTAL_BUFFERS 384 | 
|  |  | 
|  | #define MAX_INTEL_HEX_RECORD_LENGTH 16 | 
|  |  | 
|  | #ifndef _BYTE_DEFINED | 
|  | #define _BYTE_DEFINED | 
|  | typedef unsigned char BYTE; | 
|  | #endif // !_BYTE_DEFINED | 
|  |  | 
|  | #ifndef _WORD_DEFINED | 
|  | #define _WORD_DEFINED | 
|  | typedef unsigned short WORD; | 
|  | #endif // !_WORD_DEFINED | 
|  |  | 
|  | typedef struct _INTEL_HEX_RECORD | 
|  | { | 
|  | BYTE  Length; | 
|  | WORD  Address; | 
|  | BYTE  Type; | 
|  | BYTE  Data[MAX_INTEL_HEX_RECORD_LENGTH]; | 
|  | } INTEL_HEX_RECORD, *PINTEL_HEX_RECORD; | 
|  |  | 
|  | #endif |