86 lines
1.8 KiB
C
86 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 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
|