⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmscsim.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/***********************************************************************;*	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 + -