📄 tmscsim.h
字号:
/***********************************************************************;* File Name : TMSCSIM.H *;* TEKRAM DC-390(T) PCI SCSI Bus Master Host Adapter *;* Device Driver *;***********************************************************************//* $Id: tmscsim.h,v 2.15.2.3 2000/11/17 20:52:27 garloff Exp $ */#ifndef _TMSCSIM_H#define _TMSCSIM_H#include <linux/types.h>#include <linux/config.h>/* 2.0 compat */#if defined(__SMP__) && !defined(CONFIG_SMP)# if LINUX_VERSION_CODE < KERNEL_VERSION (2,2,0)# define CONFIG_SMP# else# error __SMP__ defined but not CONFIG_SMP# endif#endif#define IRQ_NONE 255#define MAX_ADAPTER_NUM 4#define MAX_SG_LIST_BUF 16 /* Not used */#define MAX_CMD_PER_LUN 32#define MAX_CMD_QUEUE MAX_CMD_PER_LUN+MAX_CMD_PER_LUN/2+1 #define MAX_SCSI_ID 8#define MAX_SRB_CNT MAX_CMD_QUEUE+1 /* Max number of started commands */#define SEL_TIMEOUT 153 /* 250 ms selection timeout (@ 40 MHz) */#define END_SCAN 2typedef u8 UCHAR; /* 8 bits */typedef u16 USHORT; /* 16 bits */typedef u32 UINT; /* 32 bits */typedef unsigned long ULONG; /* 32/64 bits */typedef UCHAR *PUCHAR;typedef USHORT *PUSHORT;typedef UINT *PUINT;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;/*;-----------------------------------------------------------------------; SCSI Request Block;-----------------------------------------------------------------------*/struct _SRB{//UCHAR CmdBlock[12];struct _SRB *pNextSRB;struct _DCB *pSRBDCB;PSCSICMD pcmd;PSGL pSegmentList;/* 0x10: */SGL Segmentx; /* make a one entry of S/G list table *//* 0x1c: */ULONG SGBusAddr; /*;a segment starting address as seen by AM53C974A*/ULONG SGToBeXferLen; /*; to be xfer length */ULONG TotalXferredLen;ULONG SavedTotXLen;UINT SRBState;/* 0x30: */UCHAR SRBStatus;UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ /*; b4-settimeout,b5-Residual valid */UCHAR AdaptStatus;UCHAR TargetStatus;UCHAR ScsiPhase;UCHAR TagNumber;UCHAR SGIndex;UCHAR SGcount;/* 0x38: */UCHAR MsgCnt;UCHAR EndMessage;UCHAR RetryCnt;UCHAR SavedSGCount; ULONG Saved_Ptr;/* 0x40: */UCHAR MsgInBuf[6];UCHAR MsgOutBuf[6];//UCHAR IORBFlag; /*;81h-Reset, 2-retry *//* 0x4c: */};typedef struct _SRB DC390_SRB, *PSRB;/*;-----------------------------------------------------------------------; Device Control Block;-----------------------------------------------------------------------*/struct _DCB{struct _DCB *pNextDCB;struct _ACB *pDCBACB;/* Aborted Commands *///PSCSICMD AboIORBhead;//PSCSICMD AboIORBtail;//ULONG AboIORBcnt;/* 0x08: *//* Queued SRBs */PSRB pWaitingSRB;PSRB pWaitLast;PSRB pGoingSRB;PSRB pGoingLast;PSRB pActiveSRB;UCHAR WaitSRBCnt; /* Not used */UCHAR GoingSRBCnt;UCHAR DevType;UCHAR MaxCommand;/* 0x20: */UINT TagMask;UCHAR TargetID; /*; SCSI Target ID (SCSI Only) */UCHAR TargetLUN; /*; SCSI Log. Unit (SCSI Only) */UCHAR DevMode;UCHAR DCBFlag;UCHAR CtrlR1;UCHAR CtrlR3;UCHAR CtrlR4;UCHAR Inquiry7;/* 0x2c: */UCHAR SyncMode; /*; 0:async mode */UCHAR NegoPeriod; /*;for nego. */UCHAR SyncPeriod; /*;for reg. */UCHAR SyncOffset; /*;for reg. and nego.(low nibble) *//* 0x30:*///UCHAR InqDataBuf[8];//UCHAR CapacityBuf[8];///* 0x40: */};typedef struct _DCB DC390_DCB, *PDCB;/*;-----------------------------------------------------------------------; Adapter Control Block;-----------------------------------------------------------------------*/struct _ACB{PSH pScsiHost;struct _ACB *pNextACB;USHORT IOPortBase;UCHAR IRQLevel;UCHAR status;UCHAR SRBCount;UCHAR AdapterIndex; /*; nth Adapter this driver */UCHAR DeviceCnt;UCHAR DCBCnt;/* 0x10: */UCHAR TagMaxNum;UCHAR ACBFlag;UCHAR Gmode2;UCHAR scan_devices;PDCB pLinkDCB;PDCB pLastDCB;PDCB pDCBRunRobin;PDCB pActiveDCB;PSRB pFreeSRB;PSRB pTmpSRB;/* 0x2c: */ULONG QueryCnt;PSCSICMD pQueryHead;PSCSICMD pQueryTail;/* 0x38: */UCHAR msgin123[4];UCHAR DCBmap[MAX_SCSI_ID];UCHAR Connected;UCHAR pad;/* 0x3c: */#if defined(USE_SPINLOCKS) && USE_SPINLOCKS > 1 && (defined(CONFIG_SMP) || DEBUG_SPINLOCKS > 0)spinlock_t lock;#endifUCHAR sel_timeout;UCHAR glitch_cfg;UCHAR MsgLen;UCHAR Ignore_IRQ; /* Not used */PDEVDECL1; /* Pointer to PCI cfg. space *//* 0x4c/0x48: */ULONG Cmds;UINT SelLost;UINT SelConn;UINT CmdInQ;UINT CmdOutOfSRB; /* 0x60/0x5c: */struct timer_list Waiting_Timer;/* 0x74/0x70: */DC390_SRB TmpSRB;/* 0xd8/0xd4: */DC390_SRB SRB_array[MAX_SRB_CNT]; /* 50 SRBs *//* 0xfb0/0xfac: */};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/*;---SRBstatus */#define SRB_OK BIT0#define ABORTION BIT1#define OVER_RUN BIT2#define UNDER_RUN BIT3#define PARITY_ERROR BIT4#define SRB_ERROR BIT5/*;---ACBFlag */#define RESET_DEV BIT0#define RESET_DETECT BIT1#define RESET_DONE BIT2/*;---DCBFlag */#define ABORT_DEV_ BIT0/*;---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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -