X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/9c9fd67cec6a89fb5fb05b16af00d05a7573c2eb..HEAD:/usb-driver.h diff --git a/usb-driver.h b/usb-driver.h index 51e4b6e..b484897 100644 --- a/usb-driver.h +++ b/usb-driver.h @@ -1,6 +1,7 @@ #define VERSION 0x910 #define LICENSE 0x952 #define TRANSFER 0x98c +#define MULTI_TRANSFER 0x98d #define USB_TRANSFER 0x983 #define EVENT_UNREGISTER 0x987 #define INT_DISABLE 0x91f @@ -12,9 +13,41 @@ #define INT_ENABLE 0x98e #define EVENT_PULL 0x988 #define USB_SET_INTERFACE 0x981 +#define CARD_REGISTER_OLD 0x97d +#define INT_ENABLE_OLD 0x91e +#define USB_GET_DEVICE_DATA_OLD 0x980 +#define EVENT_REGISTER_OLD 0x986 +#define TRANSFER_OLD 0x903 +#define MULTI_TRANSFER_OLD 0x904 #define MAGIC 0xa410b413UL +#define PP_DATA 0 +#define PP_STATUS 1 +#define PP_CONTROL 2 +#define PP_ECP_CFGA 0 +#define PP_ECP_CFGB 1 +#define PP_ECP_ECR 2 +#define PP_READ 10 +#define PP_WRITE 13 + +#define PP_TDI 0x01 +#define PP_TDO 0x10 +#define PP_PROG 0x10 +#define PP_TCK 0x02 +#define PP_TMS 0x04 +#define PP_CTRL 0x08 + +#ifdef DEBUG +#define DPRINTF(format, args...) fprintf(stderr, format, ##args) +#else +#define DPRINTF(format, args...) +#endif + +void __attribute__ ((visibility ("hidden"))) hexdump(unsigned char *buf, int len, char *prefix); + +#define WDU_GET_MAX_PACKET_SIZE(x) ((unsigned short) (((x) & 0x7ff) * (1 + (((x) & 0x1800) >> 11)))) + /* http://www.jungo.com/support/documentation/windriver/811/wdusb_man_mhtml/node78.html#SECTION001734000000000000000 */ struct header_struct { @@ -217,8 +250,8 @@ typedef struct { unsigned char Byte; // Use for 8 bit transfer. unsigned short Word; // Use for 16 bit transfer. - unsigned int Dword; // Use for 32 bit transfer. - unsigned long long Qword; // Use for 64 bit transfer. + uint32_t Dword; // Use for 32 bit transfer. + uint64_t Qword; // Use for 64 bit transfer. void* pBuffer; // Use for string transfer. } Data; } WD_TRANSFER, WD_TRANSFER_V61; @@ -343,7 +376,7 @@ typedef struct WDU_INTERFACE *pInterfaces; } WDU_CONFIGURATION; -struct wdu_device_info { +struct usb_device_info { WDU_DEVICE_DESCRIPTOR Descriptor; WDU_PIPE_INFO Pipe0; WDU_CONFIGURATION *pConfigs; @@ -351,3 +384,15 @@ struct wdu_device_info { WDU_INTERFACE *pActiveInterface[WD_USB_MAX_INTERFACES]; }; +typedef enum { + WDU_DIR_IN = 1, + WDU_DIR_OUT = 2, + WDU_DIR_IN_OUT = 3 +} WDU_DIR; + +typedef enum { + PIPE_TYPE_CONTROL = 0, + PIPE_TYPE_ISOCHRONOUS = 1, + PIPE_TYPE_BULK = 2, + PIPE_TYPE_INTERRUPT = 3 +} USB_PIPE_TYPE;