📄 pci2000.h
字号:
/**************************************************************************** * Perceptive Solutions, Inc. PCI-2000 device driver for Linux. * * pci2000.h - Linux Host Driver for PCI-2000 IntelliCache SCSI Adapters * * Copyright (c) 1997-1999 Perceptive Solutions, Inc. * All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that redistributions of source * code retain the above copyright notice and this comment without * modification. * * Technical updates and product information at: * http://www.psidisk.com * * Please send questions, comments, bug reports to: * tech@psidisk.com Technical Support * ****************************************************************************/#ifndef _PCI2000_H#define _PCI2000_H#include <linux/types.h>#include <linux/kdev_t.h>#ifndef PSI_EIDE_SCSIOP#define PSI_EIDE_SCSIOP 1#ifndef LINUX_VERSION_CODE#include <linux/version.h>#endif #define LINUXVERSION(v,p,s) (((v)<<16) + ((p)<<8) + (s))/************************************************//* definition of standard data types *//************************************************/#define CHAR char#define UCHAR unsigned char#define SHORT short#define USHORT unsigned short#define BOOL long#define LONG long#define ULONG unsigned long#define VOID voidtypedef CHAR *PCHAR;typedef UCHAR *PUCHAR;typedef SHORT *PSHORT;typedef USHORT *PUSHORT;typedef BOOL *PBOOL;typedef LONG *PLONG;typedef ULONG *PULONG;typedef VOID *PVOID;/************************************************//* Misc. macros *//************************************************/#define ANY2SCSI(up, p) \((UCHAR *)up)[0] = (((ULONG)(p)) >> 8); \((UCHAR *)up)[1] = ((ULONG)(p));#define SCSI2LONG(up) \( (((long)*(((UCHAR *)up))) << 16) \+ (((long)(((UCHAR *)up)[1])) << 8) \+ ((long)(((UCHAR *)up)[2])) )#define XANY2SCSI(up, p) \((UCHAR *)up)[0] = ((long)(p)) >> 24; \((UCHAR *)up)[1] = ((long)(p)) >> 16; \((UCHAR *)up)[2] = ((long)(p)) >> 8; \((UCHAR *)up)[3] = ((long)(p));#define XSCSI2LONG(up) \( (((long)(((UCHAR *)up)[0])) << 24) \+ (((long)(((UCHAR *)up)[1])) << 16) \+ (((long)(((UCHAR *)up)[2])) << 8) \+ ((long)(((UCHAR *)up)[3])) )/************************************************//* SCSI CDB operation codes *//************************************************/#define SCSIOP_TEST_UNIT_READY 0x00#define SCSIOP_REZERO_UNIT 0x01#define SCSIOP_REWIND 0x01#define SCSIOP_REQUEST_BLOCK_ADDR 0x02#define SCSIOP_REQUEST_SENSE 0x03#define SCSIOP_FORMAT_UNIT 0x04#define SCSIOP_READ_BLOCK_LIMITS 0x05#define SCSIOP_REASSIGN_BLOCKS 0x07#define SCSIOP_READ6 0x08#define SCSIOP_RECEIVE 0x08#define SCSIOP_WRITE6 0x0A#define SCSIOP_PRINT 0x0A#define SCSIOP_SEND 0x0A#define SCSIOP_SEEK6 0x0B#define SCSIOP_TRACK_SELECT 0x0B#define SCSIOP_SLEW_PRINT 0x0B#define SCSIOP_SEEK_BLOCK 0x0C#define SCSIOP_PARTITION 0x0D#define SCSIOP_READ_REVERSE 0x0F#define SCSIOP_WRITE_FILEMARKS 0x10#define SCSIOP_FLUSH_BUFFER 0x10#define SCSIOP_SPACE 0x11#define SCSIOP_INQUIRY 0x12#define SCSIOP_VERIFY6 0x13#define SCSIOP_RECOVER_BUF_DATA 0x14#define SCSIOP_MODE_SELECT 0x15#define SCSIOP_RESERVE_UNIT 0x16#define SCSIOP_RELEASE_UNIT 0x17#define SCSIOP_COPY 0x18#define SCSIOP_ERASE 0x19#define SCSIOP_MODE_SENSE 0x1A#define SCSIOP_START_STOP_UNIT 0x1B#define SCSIOP_STOP_PRINT 0x1B#define SCSIOP_LOAD_UNLOAD 0x1B#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C#define SCSIOP_SEND_DIAGNOSTIC 0x1D#define SCSIOP_MEDIUM_REMOVAL 0x1E#define SCSIOP_READ_CAPACITY 0x25#define SCSIOP_READ 0x28#define SCSIOP_WRITE 0x2A#define SCSIOP_SEEK 0x2B#define SCSIOP_LOCATE 0x2B#define SCSIOP_WRITE_VERIFY 0x2E#define SCSIOP_VERIFY 0x2F#define SCSIOP_SEARCH_DATA_HIGH 0x30#define SCSIOP_SEARCH_DATA_EQUAL 0x31#define SCSIOP_SEARCH_DATA_LOW 0x32#define SCSIOP_SET_LIMITS 0x33#define SCSIOP_READ_POSITION 0x34#define SCSIOP_SYNCHRONIZE_CACHE 0x35#define SCSIOP_COMPARE 0x39#define SCSIOP_COPY_COMPARE 0x3A#define SCSIOP_WRITE_DATA_BUFF 0x3B#define SCSIOP_READ_DATA_BUFF 0x3C#define SCSIOP_CHANGE_DEFINITION 0x40#define SCSIOP_READ_SUB_CHANNEL 0x42#define SCSIOP_READ_TOC 0x43#define SCSIOP_READ_HEADER 0x44#define SCSIOP_PLAY_AUDIO 0x45#define SCSIOP_PLAY_AUDIO_MSF 0x47#define SCSIOP_PLAY_TRACK_INDEX 0x48#define SCSIOP_PLAY_TRACK_RELATIVE 0x49#define SCSIOP_PAUSE_RESUME 0x4B#define SCSIOP_LOG_SELECT 0x4C#define SCSIOP_LOG_SENSE 0x4D#define SCSIOP_MODE_SELECT10 0x55#define SCSIOP_MODE_SENSE10 0x5A#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6#define SCSIOP_MECHANISM_STATUS 0xBD#define SCSIOP_READ_CD 0xBE// SCSI read capacity structuretypedef struct _READ_CAPACITY_DATA { ULONG blks; /* total blocks (converted to little endian) */ ULONG blksiz; /* size of each (converted to little endian) */ } READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA;// SCSI inquiry datatypedef struct _INQUIRYDATA { UCHAR DeviceType :5; UCHAR DeviceTypeQualifier :3; UCHAR DeviceTypeModifier :7; UCHAR RemovableMedia :1; UCHAR Versions; UCHAR ResponseDataFormat; UCHAR AdditionalLength; UCHAR Reserved[2]; UCHAR SoftReset :1; UCHAR CommandQueue :1; UCHAR Reserved2 :1; UCHAR LinkedCommands :1; UCHAR Synchronous :1; UCHAR Wide16Bit :1; UCHAR Wide32Bit :1; UCHAR RelativeAddressing :1; UCHAR VendorId[8]; UCHAR ProductId[16]; UCHAR ProductRevisionLevel[4]; UCHAR VendorSpecific[20]; UCHAR Reserved3[40]; } INQUIRYDATA, *PINQUIRYDATA;#endif// function prototypesint Pci2000_Detect (Scsi_Host_Template *tpnt);int Pci2000_Command (Scsi_Cmnd *SCpnt);int Pci2000_QueueCommand (Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *));int Pci2000_Abort (Scsi_Cmnd *SCpnt);int Pci2000_Reset (Scsi_Cmnd *SCpnt, unsigned int flags);int Pci2000_Release (struct Scsi_Host *pshost);int Pci2000_BiosParam (Disk *disk, kdev_t dev, int geom[]);#ifndef NULL #define NULL 0#endif/* screen is 80 columns wide, damnit! */#define PCI2000 { \ proc_name: "pci2000", \ name: "PCI-2000 SCSI Intelligent Disk Controller", \ detect: Pci2000_Detect, \ release: Pci2000_Release, \ command: Pci2000_Command, \ queuecommand: Pci2000_QueueCommand, \ abort: Pci2000_Abort, \ reset: Pci2000_Reset, \ bios_param: Pci2000_BiosParam, \ can_queue: 16, \ this_id: -1, \ sg_tablesize: 16, \ cmd_per_lun: 1, \ present: 0, \ unchecked_isa_dma:0, \ use_clustering: DISABLE_CLUSTERING, \ use_new_eh_code:0 \}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -