📄 datatype.h
字号:
/*********************************************************************** Module Name: DataType.h **** Author: Zhangquan **** Version: 1.0 **** CreateDate: 2001-05-18 **** Description: Definitions Dataype **** Remark: **** Revision History: 2001-05-18 ************************************************************************/#ifndef __DATATYPE__#define __DATATYPE__#include <linux/interrupt.h>#include <linux/kernel.h>#include <linux/types.h>#include <asm/segment.h>#include <linux/tqueue.h>#include <linux/sched.h>typedef unsigned char UCHAR;typedef char SCHAR;typedef unsigned short UWORD;typedef short SWORD;typedef unsigned long ULONG;typedef long SLONG;typedef unsigned int UINT;typedef int INT;/*TPBulk*/// USB Class Request Functions and Public Functions/* Host Device Disagreement Matrix*/enum _HOST_DEV_DISAGREE{ CASEOK = 0, CASE1, CASE2, CASE3, CASE4, CASE5, CASE6, CASE7, CASE8, CASE9, CASE10, CASE11, CASE12, CASE13, CASECBW};typedef union _D12FLAGS { struct _D12FSM_FLAGS { UCHAR bus_reset : 1; UCHAR suspend : 1; UCHAR At_IRQL1 : 1; UCHAR configuration : 1; UCHAR remote_wakeup : 1; UCHAR Reserved00 : 3; UCHAR DCP_state : 3; // Default Control Pipe FSM state UCHAR DCP_IOorMEM : 1; // Access Data via DCP from/to IO data port or Memory UCHAR BOT_state : 4; // Default Bulk Out Pipe FSM state UCHAR BOT_IOorMEM : 1; // Store Data via Bulk Out Pipe to IO port(ATA dev) or Memory UCHAR verbose : 1; // Debug info UCHAR timer : 1; UCHAR Reserved20 : 6; UCHAR Reserved30; } bits; ULONG value;} D12FLAGS;/*TPBulk*//*Protocol*/#define MAX_CONTROLDATA_SIZE 0x08typedef struct _device_request{ UCHAR bmRequestType; UCHAR bRequest; UWORD wValue; UWORD wIndex; UWORD wLength;} DEVICE_REQUEST;typedef struct _control_xfer{ DEVICE_REQUEST DeviceRequest; ULONG wLength; //UWORD to ULONG Modified by Mike Chan ULONG wCount; //UWORD to ULONG Modified by Mike Chan UCHAR *pData; UCHAR dataBuffer[MAX_CONTROLDATA_SIZE];} CONTROL_XFER;/*Protocol*//*PDIUSBD12*/typedef union _epp_flags{ struct _flags { UCHAR timer : 1; //UCHAR bus_reset : 1; //UCHAR suspend : 1; //UCHAR setup_packet : 1; UCHAR remote_wakeup : 1; UCHAR in_isr : 1; UCHAR control_state : 2; UCHAR configuration : 1; UCHAR verbose : 1; UCHAR do_ep1_rxdone : 1; //////ep1_rxdone UCHAR setup_dma : 1; UCHAR dma_state : 2; UCHAR dma_disable : 1; UCHAR set_d12 : 1; } bits; UWORD value;} EPPFLAGS;/*PDIUSBD12*//*define begin*/#define USB_DEVICE_DESCRIPTOR_TYPE 0x01#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02#define USB_STRING_DESCRIPTOR_TYPE 0x03#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05// Endpoint direction bit, stored in address#define USB_DATA_TRANSMIT_DEVICE_TO_HOST 0x80// USB defined Feature selectors#define USB_FEATURE_ENDPOINT_STALL 0x0000#define USB_FEATURE_REMOTE_WAKEUP 0x0001// USB defined request codes see chapter 9 of the USB 1.1 specifcation for more information.// These are the correct values based on the USB 1.1 specification#define USB_REQUEST_GET_STATUS 0x00#define USB_REQUEST_CLEAR_FEATURE 0x01#define USB_REQUEST_SET_FEATURE 0x03#define USB_REQUEST_SET_ADDRESS 0x05#define USB_REQUEST_GET_DESCRIPTOR 0x06#define USB_REQUEST_SET_DESCRIPTOR 0x07#define USB_REQUEST_GET_CONFIGURATION 0x08#define USB_REQUEST_SET_CONFIGURATION 0x09#define USB_REQUEST_GET_INTERFACE 0x0a#define USB_REQUEST_SET_INTERFACE 0x0b#define USB_REQUEST_SYNC_FRAME 0x0c#define FALSE 0x00#define TRUE (!FALSE)#define CSW_GOOD 0x00#define CSW_FAIL 0x01#define CSW_PHASE_ERROR 0x02#define CBW_SIGNATURE 0x43425355#define CSW_SIGNATURE 0x55534253//53425355#define CBW_FLAG_IN 0x80#define MAX_CDBLEN 0x10// Normal FSM for Set Command// IDLE -> SETUP[IRQL-1] -> DataOut[IRQL_1] -> RequestProc[IRQL_0] -> Status Stage// Normal FSM for Get Command// IDLE -> SETUP[IRQL-1] -> RequestProc[IRQL_0] -> DataIn[IRQL-1]-> Status Stage#define USBFSM_IDLE 0x00#define USBFSM_XMIT 0x01#define USBFSM_RCV 0x02#define USBFSM_INPROCESS 0x03#define USBFSM_STATUS 0x04#define USBFSM_ABORT 0x05#define USBFSM_INPROCESS2 0x06#define USBFSM_STALL 0x07// FSM for Default Control Pipe#define USBFSM4DCP_IDLE USBFSM_IDLE#define USBFSM4DCP_DATAIN USBFSM_XMIT#define USBFSM4DCP_DATAOUT USBFSM_RCV#define USBFSM4DCP_REQUESTPROC USBFSM_INPROCESS2#define USBFSM4DCP_STALL USBFSM_STALL#define USBFSM4DCP_HANDSHAKE USBFSM_STATUS#define USBFSM4DCP_SETUPPROC USBFSM_INPROCESS// FSM for Bulk-Only Transfer#define USBFSM4BOT_STALL USBFSM_STALL#define USBFSM4BOT_IDLE USBFSM_IDLE#define USBFSM4BOT_DATAIN USBFSM_XMIT#define USBFSM4BOT_DATAOUT USBFSM_RCV#define USBFSM4BOT_CBWPROC USBFSM_INPROCESS//#define USBFSM4BOT_CSWPROC USBFSM_INPROCESS2#define USBFSM4BOT_CSW USBFSM_STATUS#define USBFSM4BOT_CBW USBFSM_ABORT#define USBFSM4BOT_DATAOVER 0x08//added ?????? 0x10X#define USB_CLASS_REQUEST_USBSTOR_RESET 0xff#define USB_CLASS_REQUEST_USBSTOR_GETMAXLUN 0xfe#define ATAPI_FORMATUNIT 0x04#define ATAPI_READFORMATCAPA 0x23#define ATAPI_RAEDCAPACITY 0x25#define ATAPI_INQUIRE 0x12#define ATAPI_REQUESTSENSE 0x03//************************************************************************#define ATAPI_MODESELECT15 0x15#define ATAPI_MODESELECT55 0x55#define ATAPI_MODESENSE1A 0x1a#define ATAPI_MODESELECT5A 0x5A#define ATAPI_TESTUNIT 0x00#define ATAPI_REZEROUNITPACKET 0x01#define ATAPI_SEEKPACKET0B 0x0B#define ATAPI_SEEKPACKET2B 0x2B#define ATAPI_SENDDIAGPACKET 0x1D#define ATAPI_STARTSTOPUNIT 0x1B#define ATAPI_READ 0x08#define ATAPI_READ10 0x28#define ATAPI_WRITE10 0x2A#define ATAPI_WRITE 0x0A#define ATAPI_MODESENSE5A 0x5A#define ATAPI_TESTUNIT 0x00#define ATAPI_NONSENSE 0x06 //Command 0x06:Non-sense#define MAX_ENDPOINTS 0x03#define EP0_TX_FIFO_SIZE 16#define EP0_RX_FIFO_SIZE 16#define EP0_PACKET_SIZE 16#define EP1_TX_FIFO_SIZE 16#define EP1_RX_FIFO_SIZE 16#define EP1_PACKET_SIZE 16#define EP2_TX_FIFO_SIZE 64#define EP2_RX_FIFO_SIZE 64#define EP2_PACKET_SIZE 64#define USB_IDLE 0#define USB_TRANSMIT 1#define USB_RECEIVE 2// Mask#define USB_RECIPIENT 0x1f#define USB_RECIPIENT_DEVICE 0x00#define USB_RECIPIENT_INTERFACE 0x01#define USB_RECIPIENT_ENDPOINT 0x02#define USB_REQUEST_TYPE_MASK 0x60#define USB_STANDARD_REQUEST 0x00#define USB_CLASS_REQUEST 0x20#define USB_VENDOR_REQUEST 0x40#define USB_REQUEST_MASK 0x0f#define DEVICE_ADDRESS_MASK 0x7f#define NUM_ENDPOINTS 0x02#define CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) + sizeof(USB_INTERFACE_DESCRIPTOR) + (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR))#define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))// PDIUSBD12 Command// Initialization Commands#define D12_CMD_SET_ADDRESS_ENABLE 0xd0#define D12_CMD_SET_ENDPOINT_ENABLE 0xd8#define D12_CMD_SET_MODE 0xf3#define D12_CMD_SET_DMA 0xfb// Data Flow Commands#define D12_CMD_READ_INTERRUPT_REGISTER 0xf4#define D12_CMD_SELECT_ENDPOINT 0x00#define D12_CMD_READ_STATUS 0x40#define D12_CMD_READ_BUFFER 0xf0#define D12_CMD_WRITE_BUFFER 0xf0#define D12_CMD_SET_STATUS 0x40#define D12_CMD_ACKNOWLEDGE_SETUP 0xf1#define D12_CMD_CLEAR_BUFFER 0xf2#define D12_CMD_VALIDATE_BUFFER 0xfa// General Commands#define D12_CMD_SEND_RESUME 0xf6#define D12_CMD_READ_FRAME_NUMBER 0xf5// Endpoint Definitions#define D12_EP0_OUT 0x00#define D12_EP0_IN 0x01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -