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

📄 advansys.c

📁 GNU Mach 微内核源代码, 基于美国卡内基美隆大学的 Mach 研究项目
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "sd.h"#include "advansys.h"#if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(2,1,93)#ifdef CONFIG_PCI#include <linux/pci.h>#endif /* CONFIG_PCI */#else /* version < v2.1.93 *//* * For earlier than v2.1.93 the driver has its own PCI configuration. * If PCI is not needed in a kernel before v2.1.93 this define can be * turned-off to make the driver object smaller. */#define ASC_CONFIG_PCI#endif /* version < v2.1.93 *//* * If Linux eventually defines a DID_UNDERRUN, the constant here can be * removed. The current value of zero for DID_UNDERRUN results in underrun * conditions being ignored. */#define DID_UNDERRUN 0/* * --- Driver Options *//* Enable driver assertions. */#define ADVANSYS_ASSERT/* Enable driver tracing. *//* #define ADVANSYS_DEBUG *//* * Because of no /proc to display them, statistics are disabled * for versions prior to v1.3.0. */#if LINUX_VERSION_CODE < ASC_LINUX_VERSION(1,3,0)#undef ADVANSYS_STATS /* Disable statistics */#else /* version >= v1.3.0 */#define ADVANSYS_STATS /* Enable statistics. */#endif /* version >= v1.3.0 *//* * --- Debugging Header */#ifdef ADVANSYS_DEBUG#define STATIC#else /* ADVANSYS_DEBUG */#define STATIC static#endif /* ADVANSYS_DEBUG *//* * --- Asc Library Constants and Macros */#define ASC_LIB_VERSION_MAJOR  1#define ASC_LIB_VERSION_MINOR  22#define ASC_LIB_SERIAL_NUMBER  113typedef unsigned char uchar;#ifndef NULL#define NULL     (0)#endif#ifndef TRUE#define TRUE     (1)#endif#ifndef FALSE#define FALSE    (0)#endif#define  REG     register#define rchar    REG __s8#define rshort   REG __s16#define rint     REG __s32#define rlong    REG __s32#define ruchar   REG __u8#define rushort  REG __u16#define ruint    REG __u32#define rulong   REG __u32#define NULLPTR  (void *)0#define FNULLPTR (void *)0UL#define EOF      (-1)#define EOS      '\0'#define ERR      (-1)#define UB_ERR   (uchar)(0xFF)#define UW_ERR   (uint)(0xFFFF)#define UL_ERR   (ulong)(0xFFFFFFFFUL)#define iseven_word(val)  ((((uint)val) & (uint)0x0001) == 0)#define isodd_word(val)   ((((uint)val) & (uint)0x0001) != 0)#define toeven_word(val)  (((uint)val) & (uint)0xFFFE)#define biton(val, bits)   (((uint)(val >> bits) & (uint)0x0001) != 0)#define bitoff(val, bits)  (((uint)(val >> bits) & (uint)0x0001) == 0)#define lbiton(val, bits)  (((ulong)(val >> bits) & (ulong)0x00000001UL) != 0)#define lbitoff(val, bits) (((ulong)(val >> bits) & (ulong)0x00000001UL) == 0)#define  absh(val)    ((val) < 0 ? -(val) : (val))#define  swapbyte(ch)  ((((ch) << 4) | ((ch) >> 4)))#ifndef GBYTE#define GBYTE       (0x40000000UL)#endif#ifndef MBYTE#define MBYTE       (0x100000UL)#endif#ifndef KBYTE#define KBYTE       (0x400)#endif#define HI_BYTE(x) (*((__u8 *)(&x)+1))#define LO_BYTE(x) (*((__u8 *)&x))#define HI_WORD(x) (*((__u16 *)(&x)+1))#define LO_WORD(x) (*((__u16 *)&x))#ifndef MAKEWORD#define MAKEWORD(lo, hi)    ((__u16) (((__u16) lo) | ((__u16) hi << 8)))#endif#ifndef MAKELONG#define MAKELONG(lo, hi)    ((__u32) (((__u32) lo) | ((__u32) hi << 16)))#endif#define SwapWords(dWord)        ((__u32) ((dWord >> 16) | (dWord << 16)))#define SwapBytes(word)         ((__u16) ((word >> 8) | (word << 8)))#define BigToLittle(dWord) ((__u32) (SwapWords(MAKELONG(SwapBytes(LO_WORD(dWord)), SwapBytes(HI_WORD(dWord))))))#define LittleToBig(dWord)      BigToLittle(dWord)#define AscPCIConfigVendorIDRegister      0x0000#define AscPCIConfigDeviceIDRegister      0x0002#define AscPCIConfigCommandRegister       0x0004#define AscPCIConfigStatusRegister        0x0006#define AscPCIConfigRevisionIDRegister    0x0008#define AscPCIConfigCacheSize             0x000C#define AscPCIConfigLatencyTimer          0x000D#define AscPCIIOBaseRegister              0x0010#define AscPCICmdRegBits_IOMemBusMaster   0x0007#define ASC_PCI_ID2BUS(id)    ((id) & 0xFF)#define ASC_PCI_ID2DEV(id)    (((id) >> 11) & 0x1F)#define ASC_PCI_ID2FUNC(id)   (((id) >> 8) & 0x7)#define ASC_PCI_MKID(bus, dev, func) ((((dev) & 0x1F) << 11) | (((func) & 0x7) << 8) | ((bus) & 0xFF))#define ASC_PCI_VENDORID                  0x10CD#define ASC_PCI_DEVICEID_1200A            0x1100#define ASC_PCI_DEVICEID_1200B            0x1200#define ASC_PCI_DEVICEID_ULTRA            0x1300 #define ASC_PCI_REVISION_3150             0x02#define ASC_PCI_REVISION_3050             0x03#define  ASC_DVCLIB_CALL_DONE     (1)#define  ASC_DVCLIB_CALL_FAILED   (0)#define  ASC_DVCLIB_CALL_ERROR    (-1)#define PortAddr            unsigned short    /* port address size  */#define Ptr2Func            ulong#define inp(port)           inb(port)#define inpw(port)          inw(port)#define inpl(port)          inl(port)#define outp(port, byte)    outb((byte), (port))#define outpw(port, word)   outw((word), (port))#define outpl(port, long)   outl((long), (port))#define ASC_MAX_SG_QUEUE    7#define ASC_MAX_SG_LIST     SG_ALL#define ASC_CS_TYPE  unsigned short#ifndef asc_ptr_type#define asc_ptr_type#endif#ifndef ASC_GET_PTR2FUNC#define ASC_GET_PTR2FUNC(fun)  (Ptr2Func)(fun)#endif#define FLIP_BYTE_NIBBLE(x)    (((x<<4)& 0xFF) | (x>>4))#define ASC_IS_ISA          (0x0001)#define ASC_IS_ISAPNP       (0x0081)#define ASC_IS_EISA         (0x0002)#define ASC_IS_PCI          (0x0004)#define ASC_IS_PCI_ULTRA    (0x0104)#define ASC_IS_PCMCIA       (0x0008)#define ASC_IS_MCA          (0x0020)#define ASC_IS_VL           (0x0040)#define ASC_ISA_PNP_PORT_ADDR  (0x279)#define ASC_ISA_PNP_PORT_WRITE (ASC_ISA_PNP_PORT_ADDR+0x800)#define ASC_IS_WIDESCSI_16  (0x0100)#define ASC_IS_WIDESCSI_32  (0x0200)#define ASC_IS_BIG_ENDIAN   (0x8000)#define ASC_CHIP_MIN_VER_VL      (0x01)#define ASC_CHIP_MAX_VER_VL      (0x07)#define ASC_CHIP_MIN_VER_PCI     (0x09)#define ASC_CHIP_MAX_VER_PCI     (0x0F)#define ASC_CHIP_VER_PCI_BIT     (0x08)#define ASC_CHIP_MIN_VER_ISA     (0x11)#define ASC_CHIP_MIN_VER_ISA_PNP (0x21)#define ASC_CHIP_MAX_VER_ISA     (0x27)#define ASC_CHIP_VER_ISA_BIT     (0x30)#define ASC_CHIP_VER_ISAPNP_BIT  (0x20)#define ASC_CHIP_VER_ASYN_BUG    (0x21)#define ASC_CHIP_VER_PCI             0x08#define ASC_CHIP_VER_PCI_ULTRA_3150  (ASC_CHIP_VER_PCI | 0x02)#define ASC_CHIP_VER_PCI_ULTRA_3050  (ASC_CHIP_VER_PCI | 0x03)#define ASC_CHIP_MIN_VER_EISA (0x41)#define ASC_CHIP_MAX_VER_EISA (0x47)#define ASC_CHIP_VER_EISA_BIT (0x40)#define ASC_CHIP_LATEST_VER_EISA   ((ASC_CHIP_MIN_VER_EISA - 1) + 3)#define ASC_MAX_LIB_SUPPORTED_ISA_CHIP_VER   0x21#define ASC_MAX_LIB_SUPPORTED_PCI_CHIP_VER   0x0A#define ASC_MAX_VL_DMA_ADDR     (0x07FFFFFFL)#define ASC_MAX_VL_DMA_COUNT    (0x07FFFFFFL)#define ASC_MAX_PCI_DMA_ADDR    (0xFFFFFFFFL)#define ASC_MAX_PCI_DMA_COUNT   (0xFFFFFFFFL)#define ASC_MAX_ISA_DMA_ADDR    (0x00FFFFFFL)#define ASC_MAX_ISA_DMA_COUNT   (0x00FFFFFFL)#define ASC_MAX_EISA_DMA_ADDR   (0x07FFFFFFL)#define ASC_MAX_EISA_DMA_COUNT  (0x07FFFFFFL)#ifndef inpw_noswap#define inpw_noswap(port)         inpw(port)#endif#ifndef outpw_noswap#define outpw_noswap(port, data)  outpw(port, data)#endif#define ASC_SCSI_ID_BITS  3#define ASC_SCSI_TIX_TYPE     uchar#define ASC_ALL_DEVICE_BIT_SET  0xFF#ifdef ASC_WIDESCSI_16#undef  ASC_SCSI_ID_BITS#define ASC_SCSI_ID_BITS  4#define ASC_ALL_DEVICE_BIT_SET  0xFFFF#endif#ifdef ASC_WIDESCSI_32#undef  ASC_SCSI_ID_BITS#define ASC_SCSI_ID_BITS  5#define ASC_ALL_DEVICE_BIT_SET  0xFFFFFFFFL#endif#if ASC_SCSI_ID_BITS == 3#define ASC_SCSI_BIT_ID_TYPE  uchar#define ASC_MAX_TID       7#define ASC_MAX_LUN       7#define ASC_SCSI_WIDTH_BIT_SET  0xFF#elif ASC_SCSI_ID_BITS == 4#define ASC_SCSI_BIT_ID_TYPE   ushort#define ASC_MAX_TID         15#define ASC_MAX_LUN         7#define ASC_SCSI_WIDTH_BIT_SET  0xFFFF#elif ASC_SCSI_ID_BITS == 5#define ASC_SCSI_BIT_ID_TYPE    ulong#define ASC_MAX_TID         31#define ASC_MAX_LUN         7#define ASC_SCSI_WIDTH_BIT_SET  0xFFFFFFFF#else#error  ASC_SCSI_ID_BITS definition is wrong#endif#define ASC_MAX_SENSE_LEN   32#define ASC_MIN_SENSE_LEN   14#define ASC_MAX_CDB_LEN     12#define ASC_SCSI_RESET_HOLD_TIME_US  60#define SCSICMD_TestUnitReady     0x00#define SCSICMD_Rewind            0x01#define SCSICMD_Rezero            0x01#define SCSICMD_RequestSense      0x03#define SCSICMD_Format            0x04#define SCSICMD_FormatUnit        0x04#define SCSICMD_Read6             0x08#define SCSICMD_Write6            0x0A#define SCSICMD_Seek6             0x0B#define SCSICMD_Inquiry           0x12#define SCSICMD_Verify6           0x13#define SCSICMD_ModeSelect6       0x15#define SCSICMD_ModeSense6        0x1A#define SCSICMD_StartStopUnit     0x1B#define SCSICMD_LoadUnloadTape    0x1B#define SCSICMD_ReadCapacity      0x25#define SCSICMD_Read10            0x28#define SCSICMD_Write10           0x2A#define SCSICMD_Seek10            0x2B#define SCSICMD_Erase10           0x2C#define SCSICMD_WriteAndVerify10  0x2E#define SCSICMD_Verify10          0x2F#define SCSICMD_WriteBuffer       0x3B#define SCSICMD_ReadBuffer        0x3C#define SCSICMD_ReadLong          0x3E#define SCSICMD_WriteLong         0x3F#define SCSICMD_ReadTOC           0x43#define SCSICMD_ReadHeader        0x44#define SCSICMD_ModeSelect10      0x55#define SCSICMD_ModeSense10       0x5A#define SCSI_TYPE_DASD     0x00#define SCSI_TYPE_SASD     0x01#define SCSI_TYPE_PRN      0x02#define SCSI_TYPE_PROC     0x03#define SCSI_TYPE_WORM     0x04#define SCSI_TYPE_CDROM    0x05#define SCSI_TYPE_SCANNER  0x06#define SCSI_TYPE_OPTMEM   0x07#define SCSI_TYPE_MED_CHG  0x08#define SCSI_TYPE_COMM     0x09#define SCSI_TYPE_UNKNOWN  0x1F#define SCSI_TYPE_NO_DVC   0xFF#define ASC_SCSIDIR_NOCHK    0x00#define ASC_SCSIDIR_T2H      0x08#define ASC_SCSIDIR_H2T      0x10#define ASC_SCSIDIR_NODATA   0x18#define SCSI_SENKEY_NO_SENSE      0x00#define SCSI_SENKEY_UNDEFINED     0x01#define SCSI_SENKEY_NOT_READY     0x02#define SCSI_SENKEY_MEDIUM_ERR    0x03#define SCSI_SENKEY_HW_ERR        0x04#define SCSI_SENKEY_ILLEGAL       0x05#define SCSI_SENKEY_ATTENTION     0x06#define SCSI_SENKEY_PROTECTED     0x07#define SCSI_SENKEY_BLANK         0x08#define SCSI_SENKEY_V_UNIQUE      0x09#define SCSI_SENKEY_CPY_ABORT     0x0A#define SCSI_SENKEY_ABORT         0x0B#define SCSI_SENKEY_EQUAL         0x0C#define SCSI_SENKEY_VOL_OVERFLOW  0x0D#define SCSI_SENKEY_MISCOMP       0x0E#define SCSI_SENKEY_RESERVED      0x0F#define SCSI_ASC_NOMEDIA          0x3A#define ASC_SRB_HOST(x)  ((uchar)((uchar)(x) >> 4))#define ASC_SRB_TID(x)   ((uchar)((uchar)(x) & (uchar)0x0F))#define ASC_SRB_LUN(x)   ((uchar)((uint)(x) >> 13))#define PUT_CDB1(x)   ((uchar)((uint)(x) >> 8))#define SS_GOOD              0x00#define SS_CHK_CONDITION     0x02#define SS_CONDITION_MET     0x04#define SS_TARGET_BUSY       0x08#define SS_INTERMID          0x10#define SS_INTERMID_COND_MET 0x14#define SS_RSERV_CONFLICT    0x18#define SS_CMD_TERMINATED    0x22#define SS_QUEUE_FULL        0x28#define MS_CMD_DONE    0x00#define MS_EXTEND      0x01#define MS_SDTR_LEN    0x03#define MS_SDTR_CODE   0x01#define MS_WDTR_LEN    0x02#define MS_WDTR_CODE   0x03#define MS_MDP_LEN    0x05#define MS_MDP_CODE   0x00#define M1_SAVE_DATA_PTR        0x02#define M1_RESTORE_PTRS         0x03#define M1_DISCONNECT           0x04#define M1_INIT_DETECTED_ERR    0x05#define M1_ABORT                0x06#define M1_MSG_REJECT           0x07#define M1_NO_OP                0x08#define M1_MSG_PARITY_ERR       0x09#define M1_LINK_CMD_DONE        0x0A#define M1_LINK_CMD_DONE_WFLAG  0x0B#define M1_BUS_DVC_RESET        0x0C

⌨️ 快捷键说明

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