📄 tmscsim.h
字号:
/***********************************************************************;* File Name : TMSCSIM.H *;* TEKRAM DC-390(T) PCI SCSI Bus Master Host Adapter *;* Device Driver *;***********************************************************************/#ifndef TMSCSIM_H#define TMSCSIM_H#define IRQ_NONE 255typedef unsigned char UCHAR;typedef unsigned short USHORT;typedef unsigned long ULONG;typedef unsigned int UINT;typedef UCHAR *PUCHAR;typedef USHORT *PUSHORT;typedef ULONG *PULONG;typedef Scsi_Host_Template *PSHT;typedef struct Scsi_Host *PSH;typedef Scsi_Device *PSCSIDEV;typedef Scsi_Cmnd *PSCSICMD;typedef void *PVOID;typedef struct scatterlist *PSGL, SGL;/*;-----------------------------------------------------------------------*/typedef struct _SyncMsg{UCHAR ExtendMsg;UCHAR ExtMsgLen;UCHAR SyncXferReq;UCHAR Period;UCHAR ReqOffset;} SyncMsg;/*;-----------------------------------------------------------------------*/typedef struct _Capacity{ULONG BlockCount;ULONG BlockLength;} Capacity;/*;-----------------------------------------------------------------------*/typedef struct _SGentry{ULONG SGXferDataPtr;ULONG SGXferDataLen;} SGentry;typedef struct _SGentry1{ULONG SGXLen;ULONG SGXPtr;} SGentry1, *PSGE;#define MAX_ADAPTER_NUM 4#define MAX_DEVICES 10#define MAX_SG_LIST_BUF 16#define MAX_CMD_QUEUE 20#define MAX_CMD_PER_LUN 8#define MAX_SCSI_ID 8#define MAX_SRB_CNT MAX_CMD_QUEUE+4#define END_SCAN 2#define SEL_TIMEOUT 153 /* 250 ms selection timeout (@ 40 MHz) *//*;-----------------------------------------------------------------------; SCSI Request Block;-----------------------------------------------------------------------*/struct _SRB{UCHAR CmdBlock[12];struct _SRB *pNextSRB;struct _DCB *pSRBDCB;PSCSICMD pcmd;PSGL pSegmentList;ULONG PhysSRB;ULONG TotalXferredLen;ULONG SGPhysAddr; /*;a segment starting address */ULONG SGToBeXferLen; /*; to be xfer length */SGL Segmentx; /* make a one entry of S/G list table */PUCHAR pMsgPtr;USHORT SRBState;USHORT Revxx2; /* ??? */UCHAR MsgInBuf[6];UCHAR MsgOutBuf[6];UCHAR AdaptStatus;UCHAR TargetStatus;UCHAR MsgCnt;UCHAR EndMessage;UCHAR TagNumber;UCHAR SGcount;UCHAR SGIndex;UCHAR IORBFlag; /*;81h-Reset, 2-retry */UCHAR SRBStatus;UCHAR RetryCnt;UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ /*; b4-settimeout,b5-Residual valid */UCHAR ScsiCmdLen;UCHAR ScsiPhase;UCHAR Reserved3[3]; /*;for dword alignment */ULONG Segment0[2];ULONG Segment1[2];};typedef struct _SRB DC390_SRB, *PSRB;/*;-----------------------------------------------------------------------; Device Control Block;-----------------------------------------------------------------------*/struct _DCB{struct _DCB *pNextDCB;struct _ACB *pDCBACB;PSCSICMD pQIORBhead;PSCSICMD pQIORBtail;PSCSICMD AboIORBhead;PSCSICMD AboIORBtail;USHORT QIORBCnt;USHORT AboIORBcnt;PSRB pWaitingSRB;PSRB pWaitLast;PSRB pGoingSRB;PSRB pGoingLast;PSRB pActiveSRB;USHORT GoingSRBCnt;USHORT WaitSRBCnt; /* ??? */ULONG TagMask;USHORT MaxCommand;USHORT AdaptIndex; /*; UnitInfo struc start */USHORT UnitIndex; /*; nth Unit on this card */UCHAR UnitSCSIID; /*; SCSI Target ID (SCSI Only) */UCHAR UnitSCSILUN; /*; SCSI Log. Unit (SCSI Only) */UCHAR IdentifyMsg;UCHAR CtrlR1;UCHAR CtrlR3;UCHAR CtrlR4;UCHAR InqDataBuf[8];UCHAR CapacityBuf[8];UCHAR DevMode;UCHAR AdpMode;UCHAR SyncMode; /*; 0:async mode */UCHAR NegoPeriod; /*;for nego. */UCHAR SyncPeriod; /*;for reg. */UCHAR SyncOffset; /*;for reg. and nego.(low nibble) */UCHAR UnitCtrlFlag;UCHAR DCBFlag;UCHAR DevType;UCHAR Reserved2[3]; /*;for dword alignment */};typedef struct _DCB DC390_DCB, *PDCB;/*;-----------------------------------------------------------------------; Adapter Control Block;-----------------------------------------------------------------------*/struct _ACB{ULONG PhysACB;PSH pScsiHost;struct _ACB *pNextACB;USHORT IOPortBase;USHORT Revxx1; /* ??? */PDCB pLinkDCB;PDCB pDCBRunRobin;PDCB pActiveDCB;PDCB pDCB_free;PSRB pFreeSRB;PSRB pTmpSRB;USHORT SRBCount;USHORT AdapterIndex; /*; nth Adapter this driver */USHORT max_id;USHORT max_lun;UCHAR msgin123[4];UCHAR status;UCHAR AdaptSCSIID; /*; Adapter SCSI Target ID */UCHAR AdaptSCSILUN; /*; Adapter SCSI LUN */UCHAR DeviceCnt;UCHAR IRQLevel;UCHAR TagMaxNum;UCHAR ACBFlag;UCHAR Gmode2;UCHAR LUNchk;UCHAR scan_devices;UCHAR HostID_Bit;UCHAR Reserved1[1]; /*;for dword alignment */UCHAR DCBmap[MAX_SCSI_ID];DC390_DCB DCB_array[MAX_DEVICES]; /* +74h, Len=3E8 */DC390_SRB SRB_array[MAX_SRB_CNT]; /* +45Ch, Len= */DC390_SRB TmpSRB;};typedef struct _ACB DC390_ACB, *PACB;/*;-----------------------------------------------------------------------*/#define BIT31 0x80000000#define BIT30 0x40000000#define BIT29 0x20000000#define BIT28 0x10000000#define BIT27 0x08000000#define BIT26 0x04000000#define BIT25 0x02000000#define BIT24 0x01000000#define BIT23 0x00800000#define BIT22 0x00400000#define BIT21 0x00200000#define BIT20 0x00100000#define BIT19 0x00080000#define BIT18 0x00040000#define BIT17 0x00020000#define BIT16 0x00010000#define BIT15 0x00008000#define BIT14 0x00004000#define BIT13 0x00002000#define BIT12 0x00001000#define BIT11 0x00000800#define BIT10 0x00000400#define BIT9 0x00000200#define BIT8 0x00000100#define BIT7 0x00000080#define BIT6 0x00000040#define BIT5 0x00000020#define BIT4 0x00000010#define BIT3 0x00000008#define BIT2 0x00000004#define BIT1 0x00000002#define BIT0 0x00000001/*;---UnitCtrlFlag */#define UNIT_ALLOCATED BIT0#define UNIT_INFO_CHANGED BIT1#define FORMATING_MEDIA BIT2#define UNIT_RETRY BIT3/*;---UnitFlags */#define DASD_SUPPORT BIT0#define SCSI_SUPPORT BIT1#define ASPI_SUPPORT BIT2/*;----SRBState machine definition */#define SRB_FREE 0#define SRB_WAIT BIT0#define SRB_READY BIT1#define SRB_MSGOUT BIT2 /*;arbitration+msg_out 1st byte*/#define SRB_MSGIN BIT3#define SRB_MSGIN_MULTI BIT4#define SRB_COMMAND BIT5#define SRB_START_ BIT6 /*;arbitration+msg_out+command_out*/#define SRB_DISCONNECT BIT7#define SRB_DATA_XFER BIT8#define SRB_XFERPAD BIT9#define SRB_STATUS BIT10#define SRB_COMPLETED BIT11#define SRB_ABORT_SENT BIT12#define DO_SYNC_NEGO BIT13#define SRB_UNEXPECT_RESEL BIT14/*;---ACBFlag */#define RESET_DEV BIT0#define RESET_DETECT BIT1#define RESET_DONE BIT2/*;---DCBFlag */#define ABORT_DEV_ BIT0/*;---SRBstatus */#define SRB_OK BIT0#define ABORTION BIT1#define OVER_RUN BIT2#define UNDER_RUN BIT3#define PARITY_ERROR BIT4#define SRB_ERROR BIT5/*;---SRBFlag */#define DATAOUT BIT7#define DATAIN BIT6#define RESIDUAL_VALID BIT5#define ENABLE_TIMER BIT4#define RESET_DEV0 BIT2#define ABORT_DEV BIT1#define AUTO_REQSENSE BIT0/*;---Adapter status */#define H_STATUS_GOOD 0#define H_SEL_TIMEOUT 0x11#define H_OVER_UNDER_RUN 0x12#define H_UNEXP_BUS_FREE 0x13#define H_TARGET_PHASE_F 0x14#define H_INVALID_CCB_OP 0x16#define H_LINK_CCB_BAD 0x17#define H_BAD_TARGET_DIR 0x18#define H_DUPLICATE_CCB 0x19#define H_BAD_CCB_OR_SG 0x1A#define H_ABORT 0x0FF/*; SCSI Status byte codes*/#define SCSI_STAT_GOOD 0x0 /*; Good status */#define SCSI_STAT_CHECKCOND 0x02 /*; SCSI Check Condition */#define SCSI_STAT_CONDMET 0x04 /*; Condition Met */#define SCSI_STAT_BUSY 0x08 /*; Target busy status */#define SCSI_STAT_INTER 0x10 /*; Intermediate status */#define SCSI_STAT_INTERCONDMET 0x14 /*; Intermediate condition met */#define SCSI_STAT_RESCONFLICT 0x18 /*; Reservation conflict */#define SCSI_STAT_CMDTERM 0x22 /*; Command Terminated */#define SCSI_STAT_QUEUEFULL 0x28 /*; Queue Full */#define SCSI_STAT_UNEXP_BUS_F 0xFD /*; Unexpect Bus Free */#define SCSI_STAT_BUS_RST_DETECT 0xFE /*; Scsi Bus Reset detected */#define SCSI_STAT_SEL_TIMEOUT 0xFF /*; Selection Time out *//*;---Sync_Mode */#define SYNC_DISABLE 0#define SYNC_ENABLE BIT0#define SYNC_NEGO_DONE BIT1#define WIDE_ENABLE BIT2#define WIDE_NEGO_DONE BIT3#define EN_TAG_QUEUING BIT4#define EN_ATN_STOP BIT5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -