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

📄 flashpoint.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
 *   $Date: 1996/10/24 23:09:33 $ * *   $Revision: 1.14 $ * *----------------------------------------------------------------------*/#ifndef __SCCB_H__#define __SCCB_H__/*#include <osflags.h>*//*#include <globals.h>*/#if defined(BUGBUG)#define debug_size 32#endif#if defined(DOS)   typedef struct _SCCB near *PSCCB;	#if (FW_TYPE == _SCCB_MGR_)   	typedef void (*CALL_BK_FN)(PSCCB);	#endif#elif defined(OS2)   typedef struct _SCCB far *PSCCB;	#if (FW_TYPE == _SCCB_MGR_)   	typedef void (far *CALL_BK_FN)(PSCCB);	#endif#else   typedef struct _SCCB *PSCCB;	#if (FW_TYPE == _SCCB_MGR_)   	typedef void (*CALL_BK_FN)(PSCCB);	#endif#endiftypedef struct SCCBMgr_info {   ULONG    si_baseaddr;   UCHAR    si_present;   UCHAR    si_intvect;   UCHAR    si_id;   UCHAR    si_lun;   USHORT   si_fw_revision;   USHORT   si_per_targ_init_sync;   USHORT   si_per_targ_fast_nego;   USHORT   si_per_targ_ultra_nego;   USHORT   si_per_targ_no_disc;   USHORT   si_per_targ_wide_nego;   USHORT   si_flags;   UCHAR    si_card_family;   UCHAR    si_bustype;   UCHAR    si_card_model[3];   UCHAR    si_relative_cardnum;   UCHAR    si_reserved[4];   ULONG    si_OS_reserved;   UCHAR    si_XlatInfo[4];   ULONG    si_reserved2[5];   ULONG    si_secondary_range;} SCCBMGR_INFO;#if defined(DOS)   typedef SCCBMGR_INFO *      PSCCBMGR_INFO;#else   #if defined (COMPILER_16_BIT)   typedef SCCBMGR_INFO far *  PSCCBMGR_INFO;   #else   typedef SCCBMGR_INFO *      PSCCBMGR_INFO;   #endif#endif // defined(DOS)#if (FW_TYPE==_SCCB_MGR_)	#define SCSI_PARITY_ENA		  0x0001	#define LOW_BYTE_TERM		  0x0010	#define HIGH_BYTE_TERM		  0x0020	#define BUSTYPE_PCI	  0x3#endif#define SUPPORT_16TAR_32LUN	  0x0002#define SOFT_RESET		  0x0004#define EXTENDED_TRANSLATION	  0x0008#define POST_ALL_UNDERRRUNS	  0x0040#define FLAG_SCAM_ENABLED	  0x0080#define FLAG_SCAM_LEVEL2	  0x0100#define HARPOON_FAMILY        0x02#define ISA_BUS_CARD          0x01#define EISA_BUS_CARD         0x02#define PCI_BUS_CARD          0x03#define VESA_BUS_CARD         0x04/* SCCB struc used for both SCCB and UCB manager compiles!  * The UCB Manager treats the SCCB as it's 'native hardware structure'  */#pragma pack(1)typedef struct _SCCB {   UCHAR OperationCode;   UCHAR ControlByte;   UCHAR CdbLength;   UCHAR RequestSenseLength;   ULONG DataLength;   ULONG DataPointer;   UCHAR CcbRes[2];   UCHAR HostStatus;   UCHAR TargetStatus;   UCHAR TargID;   UCHAR Lun;   UCHAR Cdb[12];   UCHAR CcbRes1;   UCHAR Reserved1;   ULONG Reserved2;   ULONG SensePointer;   CALL_BK_FN SccbCallback;                  /* VOID (*SccbCallback)(); */   ULONG  SccbIOPort;                        /* Identifies board base port */   UCHAR  SccbStatus;   UCHAR  SCCBRes2;   USHORT SccbOSFlags;   ULONG   Sccb_XferCnt;            /* actual transfer count */   ULONG   Sccb_ATC;   ULONG   SccbVirtDataPtr;         /* virtual addr for OS/2 */   ULONG   Sccb_res1;   USHORT  Sccb_MGRFlags;   USHORT  Sccb_sgseg;   UCHAR   Sccb_scsimsg;            /* identify msg for selection */   UCHAR   Sccb_tag;   UCHAR   Sccb_scsistat;   UCHAR   Sccb_idmsg;              /* image of last msg in */   PSCCB   Sccb_forwardlink;   PSCCB   Sccb_backlink;   ULONG   Sccb_savedATC;   UCHAR   Save_Cdb[6];   UCHAR   Save_CdbLen;   UCHAR   Sccb_XferState;   ULONG   Sccb_SGoffset;#if (FW_TYPE == _UCB_MGR_)   PUCB    Sccb_ucb_ptr;#endif   } SCCB;#define SCCB_SIZE sizeof(SCCB)#pragma pack()#define SCSI_INITIATOR_COMMAND    0x00#define TARGET_MODE_COMMAND       0x01#define SCATTER_GATHER_COMMAND    0x02#define RESIDUAL_COMMAND          0x03#define RESIDUAL_SG_COMMAND       0x04#define RESET_COMMAND             0x81#define F_USE_CMD_Q              0x20     /*Inidcates TAGGED command. */#define TAG_TYPE_MASK            0xC0     /*Type of tag msg to send. */#define TAG_Q_MASK               0xE0#define SCCB_DATA_XFER_OUT       0x10     /* Write */#define SCCB_DATA_XFER_IN        0x08     /* Read */#define FOURTEEN_BYTES           0x00     /* Request Sense Buffer size */#define NO_AUTO_REQUEST_SENSE    0x01     /* No Request Sense Buffer */#define BUS_FREE_ST     0       #define SELECT_ST       1#define SELECT_BDR_ST   2     /* Select w\ Bus Device Reset */#define SELECT_SN_ST    3     /* Select w\ Sync Nego */#define SELECT_WN_ST    4     /* Select w\ Wide Data Nego */#define SELECT_Q_ST     5     /* Select w\ Tagged Q'ing */#define COMMAND_ST      6#define DATA_OUT_ST     7#define DATA_IN_ST      8#define DISCONNECT_ST   9#define STATUS_ST       10#define ABORT_ST        11#define MESSAGE_ST      12#define F_HOST_XFER_DIR                0x01#define F_ALL_XFERRED                  0x02#define F_SG_XFER                      0x04#define F_AUTO_SENSE                   0x08#define F_ODD_BALL_CNT                 0x10#define F_NO_DATA_YET                  0x80#define F_STATUSLOADED                 0x01#define F_MSGLOADED                    0x02#define F_DEV_SELECTED                 0x04#define SCCB_COMPLETE               0x00  /* SCCB completed without error */#define SCCB_DATA_UNDER_RUN         0x0C#define SCCB_SELECTION_TIMEOUT      0x11  /* Set SCSI selection timed out */#define SCCB_DATA_OVER_RUN          0x12#define SCCB_UNEXPECTED_BUS_FREE    0x13  /* Target dropped SCSI BSY */#define SCCB_PHASE_SEQUENCE_FAIL    0x14  /* Target bus phase sequence failure */#define SCCB_INVALID_OP_CODE        0x16  /* SCCB invalid operation code */#define SCCB_INVALID_SCCB           0x1A  /* Invalid SCCB - bad parameter */#define SCCB_GROSS_FW_ERR           0x27  /* Major problem! */#define SCCB_BM_ERR                 0x30  /* BusMaster error. */#define SCCB_PARITY_ERR             0x34  /* SCSI parity error */#if (FW_TYPE==_UCB_MGR_)     #define  HBA_AUTO_SENSE_FAIL        0x1B     #define  HBA_TQ_REJECTED            0x1C     #define  HBA_UNSUPORTED_MSG         0x1D     #define  HBA_HW_ERROR               0x20     #define  HBA_ATN_NOT_RESPONDED      0x21     #define  HBA_SCSI_RESET_BY_ADAPTER  0x22   #define  HBA_SCSI_RESET_BY_TARGET   0x23   #define  HBA_WRONG_CONNECTION       0x24   #define  HBA_BUS_DEVICE_RESET       0x25   #define  HBA_ABORT_QUEUE            0x26#else // these are not defined in BUDI/UCB   #define SCCB_INVALID_DIRECTION      0x18  /* Invalid target direction */   #define SCCB_DUPLICATE_SCCB         0x19  /* Duplicate SCCB */   #define SCCB_SCSI_RST               0x35  /* SCSI RESET detected. */#endif // (FW_TYPE==_UCB_MGR_)  #define SCCB_IN_PROCESS            0x00#define SCCB_SUCCESS               0x01#define SCCB_ABORT                 0x02#define SCCB_NOT_FOUND             0x03#define SCCB_ERROR                 0x04#define SCCB_INVALID               0x05#define SCCB_SIZE sizeof(SCCB)#if (FW_TYPE == _UCB_MGR_)	void SccbMgr_start_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb);	s32bits SccbMgr_abort_sccb(CARD_HANDLE pCurrCard, PUCB p_ucb);	u08bits SccbMgr_my_int(CARD_HANDLE pCurrCard);	s32bits SccbMgr_isr(CARD_HANDLE pCurrCard);	void SccbMgr_scsi_reset(CARD_HANDLE pCurrCard);	void SccbMgr_timer_expired(CARD_HANDLE pCurrCard);	void SccbMgr_unload_card(CARD_HANDLE pCurrCard);	void SccbMgr_restore_foreign_state(CARD_HANDLE pCurrCard);	void SccbMgr_restore_native_state(CARD_HANDLE pCurrCard);	void SccbMgr_save_foreign_state(PADAPTER_INFO pAdapterInfo);#endif#if (FW_TYPE == _SCCB_MGR_) #if defined (DOS)	int    SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo);	USHORT SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo);	void  SccbMgr_start_sccb(USHORT pCurrCard, PSCCB p_SCCB);	int   SccbMgr_abort_sccb(USHORT pCurrCard, PSCCB p_SCCB);	UCHAR SccbMgr_my_int(USHORT pCurrCard);	int   SccbMgr_isr(USHORT pCurrCard);	void  SccbMgr_scsi_reset(USHORT pCurrCard);	void  SccbMgr_timer_expired(USHORT pCurrCard);	USHORT SccbMgr_status(USHORT pCurrCard);	void SccbMgr_unload_card(USHORT pCurrCard); #else    //non-DOS	int   SccbMgr_sense_adapter(PSCCBMGR_INFO pCardInfo);	ULONG SccbMgr_config_adapter(PSCCBMGR_INFO pCardInfo);	void  SccbMgr_start_sccb(ULONG pCurrCard, PSCCB p_SCCB);	int   SccbMgr_abort_sccb(ULONG pCurrCard, PSCCB p_SCCB);	UCHAR SccbMgr_my_int(ULONG pCurrCard);	int   SccbMgr_isr(ULONG pCurrCard);	void  SccbMgr_scsi_reset(ULONG pCurrCard);	void  SccbMgr_enable_int(ULONG pCurrCard);	void  SccbMgr_disable_int(ULONG pCurrCard);	void  SccbMgr_timer_expired(ULONG pCurrCard);	void SccbMgr_unload_card(ULONG pCurrCard);  #endif#endif  // (FW_TYPE == _SCCB_MGR_)#endif  /* __SCCB_H__ *//*---------------------------------------------------------------------- * * *   Copyright 1995-1996 by Mylex Corporation.  All Rights Reserved * *   This file is available under both the GNU General Public License *   and a BSD-style copyright; see LICENSE.FlashPoint for details. * *   $Workfile:   blx30.h  $ * *   Description: This module contains SCCB/UCB Manager implementation *                specific stuff. * *   $Date: 1996/11/13 18:34:22 $ * *   $Revision: 1.10 $ * *----------------------------------------------------------------------*/#ifndef __blx30_H__#define __blx30_H__/*#include <globals.h>*/#define  ORION_FW_REV      3110#define HARP_REVD    1#if defined(DOS)#define QUEUE_DEPTH     8+1            /*1 for Normal disconnect 0 for Q'ing. */#else#define QUEUE_DEPTH     254+1            /*1 for Normal disconnect 32 for Q'ing. */#endif   // defined(DOS)#define	MAX_MB_CARDS	4					/* Max. no of cards suppoerted on Mother Board */#define WIDE_SCSI       1#if defined(WIDE_SCSI)   #if defined(DOS)      #define MAX_SCSI_TAR    16      #define MAX_LUN         8		#define LUN_MASK			0x07   #else      #define MAX_SCSI_TAR    16      #define MAX_LUN         32		#define LUN_MASK			0x1f	   #endif#else   #define MAX_SCSI_TAR    8   #define MAX_LUN         8	#define LUN_MASK			0x07#endif #if defined(HARP_REVA)#define SG_BUF_CNT      15             /*Number of prefetched elements. */#else#define SG_BUF_CNT      16             /*Number of prefetched elements. */#endif#define SG_ELEMENT_SIZE 8              /*Eight byte per element. */#define SG_LOCAL_MASK   0x00000000L#define SG_ELEMENT_MASK 0xFFFFFFFFL#if (FW_TYPE == _UCB_MGR_)	#define OPC_DECODE_NORMAL       0x0f7f#endif   // _UCB_MGR_#if defined(DOS)/*#include <dos.h>*/	#define RD_HARPOON(ioport)          (OS_InPortByte(ioport))	#define RDW_HARPOON(ioport)         (OS_InPortWord(ioport))	#define WR_HARPOON(ioport,val)      (OS_OutPortByte(ioport,val))	#define WRW_HARPOON(ioport,val)     (OS_OutPortWord(ioport,val))	#define RD_HARP32(port,offset,data)  asm{db 66h;         \                                       push ax;             \                                       mov dx,port;         \                                       add dx, offset;      \                                       db 66h;              \                                       in ax,dx;            \                                       db 66h;              \                                       mov word ptr data,ax;\                                       db 66h;              \                                       pop ax}	#define WR_HARP32(port,offset,data) asm{db 66h;          \                                       push ax;             \                                       mov dx,port;         \

⌨️ 快捷键说明

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