85 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			1.8 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #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 mutex 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
 | 
