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

📄 i950.h

📁 This directory contains the miniport driver for INI-9100U/UW PCI_UltraSCSI Bus Master Controllers. T
💻 H
📖 第 1 页 / 共 3 页
字号:
#define TUL_XFifo       0xE8    /*DMA FIFO                */
#define TUL_WCtrl       0xF7    /*Bus master wait state control */
#define TUL_DCtrl       0xFB    /*DMA delay control */



/*******************  SCSI Phase Codes*********************/
#define DATA_OUT        0x0
#define DATA_IN         0x1
#define CMD_OUT         0x2
#define STATUS          0x3
#define MSG_OUT         0x6
#define MSG_IN          0x7




/***********************************************************************
	Scatter-Gather Element Structure
************************************************************************/
typedef struct SG_Struc         {
    ULONG   Ptr;            /* Data Pointer */
    ULONG   Len;            /* Data Length */
} SG;

/* Scatter/Gather Segment Descriptor Definition */
typedef struct _SGD {
    ULONG   Length;
    ULONG   Address;
} SGD, *PSGD;
#define TUL_MAX_SG_LIST         49        // 65


/***********************************************************************
	SCSI Control Block
************************************************************************/

typedef struct tul_scb {   /* Scsi_Ctrl_Blk      */
    UBYTE   Status; /*0 */
    UBYTE   NxtStat;/*1 */
    UBYTE   Mode;   /*2 */
    UBYTE   SgLock; /*3 */
    UWORD   SGIdx;  /*4 */
    UWORD   SGMax;  /*6 */
    ULONG   XferLen;/*8 */
    ULONG   TotalXLen; /*c */
    ULONG   SGPAddr;        /*10 SG List/Sense Buf phy. Addr. */
    ULONG   SensePtr;   /*14 Sense Buf virtual addr */

    void    (*Post)();                      /*18 POST routine */

    SCSI_REQUEST_BLOCK      *Srb;   /*1C SRB Pointer */
    UBYTE   Opcode;                         /*20 TULSCB command code */
    UBYTE   Flags;                          /*21 TULSCB Flags */
    UBYTE   Target;                         /*22 Target Id */
    UBYTE   Lun;                            /*23 Lun */
    ULONG   BufPtr;                         /*24 Data Buffer Pointer */
    ULONG   BufLen;                         /*28 Data Allocation Length */
    UBYTE   SGLen;                          /*2C SG list # */
    UBYTE   SenseLen;                       /*2D Sense Allocation Length */
    UBYTE   HaStat;                         /*2E */
    UBYTE   TaStat;                         /*2F */

    UBYTE   CDBLen;                         /*30 CDB Length */
    UBYTE   Ident;                          /*31 Identify */
    UBYTE   TagMsg;                         /*32 Tag Message */
    UBYTE   TagId;                          /*33 Queue Tag */

    UBYTE   CDB[12];                        /*34 */

    UBYTE   RetryCount;
    UBYTE   IOCTLState;
    UWORD   XferSG;         /* number of SG been xferred */

    struct tul_scb *NextScb;        /* Pointer to next TULSCB */
    ULONG   NxtBufPtr;      /* Next Data Buffer Pointer */
    ULONG   NxtBufLen;      /* Next Data Allocation Length */


    ULONG   scbpAryIdx; /* scb array index of hcsp->scb[] and hcsp->scbpAry[] */
    USHORT  tobeBusFree;
    USHORT  setATN;                 
    SG      SGList[TUL_MAX_SG_LIST];        /*40 Start of SG list */
} TULSCB, *PTULSCB;

/* Bit Definition for TULSCB_Status */
#define TULSCB_RENT     0x01
#define TULSCB_PEND     0x02
#define TULSCB_CONTIG   0x04            /* Contigent Allegiance */
#define TULSCB_SELECT   0x08
#define TULSCB_BUSY     0x10
#define TULSCB_DONE     0x20



/* Opcodes of TULSCB_Opcode */
#define ExecSCSI        0x1
#define BusDevRst       0x2
#define AbortCmd        0x3

/* Bit Definition for TULSCB_Mode */
#define SCM_RSENS       0x01            /* request sense mode */


/* Bit Definition for TULSCB_Flags */
#define SCF_DONE        0x01
#define SCF_POST        0x02
#define SCF_SENSE       0x04
#define SCF_DIR         0x18
#define SCF_NO_DCHK     0x00
#define SCF_DIN         0x08
#define SCF_DOUT        0x10
#define SCF_NO_XF       0x18
#define SCF_POLL        0x40
#define SCF_SG          0x80

/* Error Codes for TULSCB_HaStat */
#define HOST_SEL_TOUT   0x11
#define HOST_DO_DU       0x12
#define HOST_BUS_FREE   0x13
#define HOST_BAD_PHAS   0x14
#define HOST_INV_CMD    0x16
#define HOST_SCSI_RST   0x1B
#define HOST_DEV_RST    0x1C
#define HOST_CANNOT_ALLOC_SCB 0x1D


/* Error Codes for TULSCB_TaStat */
#define TARGET_CHECK_CONDITION  0x02
#define TARGET_BUSY             0x08
#define TARGET_TAG_FULL         0x28


/* SCSI MESSAGE */
#define MSG_COMP        0x00
#define MSG_EXTEND      0x01
#define MSG_SDP         0x02
#define MSG_RESTORE     0x03
#define MSG_DISC        0x04
#define MSG_IDE         0x05
#define MSG_ABORT       0x06
#define MSG_REJ         0x07
#define MSG_NOP         0x08
#define MSG_PARITY      0x09
#define MSG_LINK_COMP   0x0A
#define MSG_LINK_FLAG   0x0B
#define MSG_DEVRST              0x0C
#define MSG_ABORT_TAG   0x0D

/* Queue tag msg: Simple_quque_tag, Head_of_queue_tag, Ordered_queue_tag */
#define MSG_STAG        0x20
#define MSG_HTAG        0x21
#define MSG_OTAG        0x22

#define MSG_IGNOREWIDE  0x23

#define MSG_IDENT   0x80

/***********************************************************************
	Target Device Control Structure
**********************************************************************/

typedef struct Tar_Ctrl_Struc {
    USHORT  Flags;              
    UBYTE   JS_PeriodOffset; /* bit6-4: sync xfer period, bit 3-0:sync offset */    
    UBYTE   Period;             
    UBYTE   xfrPeriodIdx;
    UBYTE   sConfig;
    UBYTE   rsvd;
    char    MaximumTags;                    /* 08/07/97     */
    char    RequestCount[8];            /* 07/31/97     */
} TCS;

/* Bit Definition for TCF_Flags */

#define TCF_SCSI_RATE                   0x007
#define TCF_DISCONNECT                  0x008
#define TCF_NO_SYNC_NEGO                0x010
#define TCF_NO_WDTR                     0x020
#define TCF_EN_255                      0x040
#define TCF_EN_START                    0x080

#define TCF_WDTR_DONE                   0x100
#define TCF_SYNC_DONE                   0x200
#define TCF_BUSY                        0x400
#define TCF_EN_TAG                      0x800

/***********************************************************************
	      Host Adapter Control Structure
************************************************************************/
#define MAX_TUL_SCB             64    /* Maximum TUL_SCB       */

typedef struct i910_ha {   /* Ha_Ctrl_Struc */
    ULONG_PTR   Base;                           /* 00 */
    UBYTE   Index;                                                  /* 04 */
    UBYTE   HaId;                           /* 05 */
    UBYTE   Intr;                           /* 06 */
    UBYTE   Config;                         /* 07 */
    UBYTE   wide_scsi_card;                 /* 08 */
    UWORD   IdMask;                         /* 09 */
    UBYTE   semaph;                         /* 0B */
    UBYTE   Flags;                          /* 0C */
    UBYTE   Phase;                          /* 0D */
    UBYTE   JSStatus0;                      /* 0E*/
    UBYTE   JSInt;                          /* 0F */
    UBYTE   JSStatus1;                      /* 0x10 */
    UBYTE   HCS_SConf1;                     /* 0x11 */
    void    (*SCSIFunc)();                  /* 0x12 */
    TULSCB  *Scb;                           /* 0x16 */
    TULSCB  *ScbEnd;                        /* 0x1A */
    LONG    NxtPend;                        /* 0x1E */
    LONG    NxtContig;                      /* 0x22 */
    TULSCB  *ActScb;                        /* 0x26 */
    TCS     *ActTcs;                        /* 0x2A */
    TCS     Tcs[16];                        /* 0x2E */
    TULSCB     *FirstPend;
    TULSCB     *LastPend;
    TULSCB     *FirstBusy;
    TULSCB     *LastBusy;
    TULSCB     *FirstDone;
    TULSCB     *LastDone;   
    UBYTE   Msg[8];                         
} HCS, *PHCS;

/* Bit Definition for HCB_Config */
#define         HCC_SCSI_RESET  0x01
#define         HCC_EN_PAR      0x02
#define         HCC_ACT_TERM1   0x04
#define         HCC_ACT_TERM2   0x08
#define         HCC_EN_PWR      0x80
#define         HCC_AUTO_TERM   0x10

/* Bit Definition for HCB_Flags */
#define HCF_EXPECT_DISC         0x01


/* Scatter/Gather Segment List Definitions */
/* Adapter limits */
#define MAX_SG_DESCRIPTORS TUL_MAX_SG_LIST
#define MAX_TRANSFER_SIZE  (MAX_SG_DESCRIPTORS - 1) * 4096
#define SEGMENT_LIST_SIZE   MAX_SG_DESCRIPTORS * sizeof(SGD)
#define NONCACHED_EXTENSION     256
/* INI910 specific port driver device object extension. */
typedef struct _HW_DEVICE_EXTENSION {
    HCS   hcs;
    PVOID NonCachedBuf;
} HW_DEVICE_EXTENSION, *PHW_DEVICE_EXTENSION;


#define inp( x )        ScsiPortReadPortUchar( (PUCHAR)x )
#define inpw( x )       ScsiPortReadPortUshort( (PUSHORT)x )
#define inpl( x )       ScsiPortReadPortUlong( (PULONG)x )
#define outp( x, y )    ScsiPortWritePortUchar( (PUCHAR)x,  (UCHAR)y )
#define outpw( x, y )   ScsiPortWritePortUshort( (PUSHORT)x, (USHORT)y )
#define outpl( x, y )   ScsiPortWritePortUlong( (PULONG)x,  (ULONG)y )
#define TUL_RD(x,y)  (UCHAR)(ScsiPortReadPortUchar(  (PUCHAR)((ULONG_PTR)((ULONG_PTR)x+(UCHAR)y)) ))
#define TUL_RDSHORT(x,y)  (USHORT)(ScsiPortReadPortUshort(  (PUSHORT)((ULONG_PTR)((ULONG_PTR)x+(UCHAR)y)) ))
#define TUL_RDLONG(x,y) (long)(ScsiPortReadPortUlong( (PULONG)((ULONG_PTR)((ULONG_PTR)x+(UCHAR)y)) ))
#define TUL_WR(     adr,data) ScsiPortWritePortUchar( (PUCHAR)(adr), (UCHAR)(data))
#define TUL_WRSHORT(adr,data) ScsiPortWritePortUshort((PUSHORT)(adr),(USHORT)(data))
#define TUL_WRLONG( adr,data) ScsiPortWritePortUlong( (PULONG)(adr), (ULONG)(data))



#endif  /* _I950_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -