1#define _BULK_DATA_LEN 64
2typedef struct
3{
4	unsigned char data[_BULK_DATA_LEN];
5	unsigned int size;
6	unsigned int pipe;
7}bulk_transfer_t,*pbulk_transfer_t;
8
9#define DABUSB_MINOR 240		/* some unassigned USB minor */
10#define DABUSB_VERSION 0x1000
11#define IOCTL_DAB_BULK              _IOWR('d', 0x30, bulk_transfer_t)
12#define IOCTL_DAB_OVERRUNS	    _IOR('d',  0x15, int)
13#define IOCTL_DAB_VERSION           _IOR('d', 0x3f, int)
14
15#ifdef __KERNEL__
16
17typedef enum { _stopped=0, _started } driver_state_t;
18
19typedef struct
20{
21	struct mutex mutex;
22	struct usb_device *usbdev;
23	wait_queue_head_t wait;
24	wait_queue_head_t remove_ok;
25	spinlock_t lock;
26	atomic_t pending_io;
27	driver_state_t state;
28	int remove_pending;
29	int got_mem;
30	int total_buffer_size;
31	unsigned int overruns;
32	int readptr;
33	int opened;
34	int devnum;
35	struct list_head free_buff_list;
36	struct list_head rec_buff_list;
37} dabusb_t,*pdabusb_t;
38
39typedef struct
40{
41	pdabusb_t s;
42	struct urb *purb;
43	struct list_head buff_list;
44} buff_t,*pbuff_t;
45
46typedef struct
47{
48	wait_queue_head_t wait;
49} bulk_completion_context_t, *pbulk_completion_context_t;
50
51
52#define _DABUSB_IF 2
53#define _DABUSB_ISOPIPE 0x09
54#define _ISOPIPESIZE	16384
55
56#define _BULK_DATA_LEN 64
57// Vendor specific request code for Anchor Upload/Download
58// This one is implemented in the core
59#define ANCHOR_LOAD_INTERNAL  0xA0
60
61// EZ-USB Control and Status Register.  Bit 0 controls 8051 reset
62#define CPUCS_REG    0x7F92
63#define _TOTAL_BUFFERS 384
64
65#define MAX_INTEL_HEX_RECORD_LENGTH 16
66
67#ifndef _BYTE_DEFINED
68#define _BYTE_DEFINED
69typedef unsigned char BYTE;
70#endif // !_BYTE_DEFINED
71
72#ifndef _WORD_DEFINED
73#define _WORD_DEFINED
74typedef unsigned short WORD;
75#endif // !_WORD_DEFINED
76
77typedef struct _INTEL_HEX_RECORD
78{
79   BYTE  Length;
80   WORD  Address;
81   BYTE  Type;
82   BYTE  Data[MAX_INTEL_HEX_RECORD_LENGTH];
83} INTEL_HEX_RECORD, *PINTEL_HEX_RECORD;
84
85#endif
86