📄 gdth.h
字号:
#ifndef _GDTH_H#define _GDTH_H/* * Header file for the GDT ISA/EISA/PCI Disk Array Controller driver for Linux * * gdth.h Copyright (C) 1995-99 ICP vortex Computersysteme GmbH, Achim Leubner * See gdth.c for further informations and * below for supported controller types * * <achim@vortex.de> * * $Id: gdth.h,v 1.21 1999/03/26 09:12:24 achim Exp $ */#include <linux/version.h>#include <linux/types.h>#ifndef NULL#define NULL 0#endif#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif/* defines, macros *//* driver version */#define GDTH_VERSION_STR "1.14"#define GDTH_VERSION 1#define GDTH_SUBVERSION 14/* protocol version */#define PROTOCOL_VERSION 1/* controller classes */#define GDT_ISA 0x01 /* ISA controller */#define GDT_EISA 0x02 /* EISA controller */#define GDT_PCI 0x03 /* PCI controller */#define GDT_PCINEW 0x04 /* new PCI controller */#define GDT_PCIMPR 0x05 /* PCI MPR controller *//* GDT_EISA, controller subtypes EISA */#define GDT3_ID 0x0130941c /* GDT3000/3020 */#define GDT3A_ID 0x0230941c /* GDT3000A/3020A/3050A */#define GDT3B_ID 0x0330941c /* GDT3000B/3010A *//* GDT_ISA */#define GDT2_ID 0x0120941c /* GDT2000/2020 *//* vendor ID, device IDs (PCI) *//* these defines should already exist in <linux/pci.h> */#ifndef PCI_VENDOR_ID_VORTEX#define PCI_VENDOR_ID_VORTEX 0x1119 /* PCI controller vendor ID */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDT60x0/* GDT_PCI */#define PCI_DEVICE_ID_VORTEX_GDT60x0 0 /* GDT6000/6020/6050 */#define PCI_DEVICE_ID_VORTEX_GDT6000B 1 /* GDT6000B/6010 *//* GDT_PCINEW */#define PCI_DEVICE_ID_VORTEX_GDT6x10 2 /* GDT6110/6510 */#define PCI_DEVICE_ID_VORTEX_GDT6x20 3 /* GDT6120/6520 */#define PCI_DEVICE_ID_VORTEX_GDT6530 4 /* GDT6530 */#define PCI_DEVICE_ID_VORTEX_GDT6550 5 /* GDT6550 *//* GDT_PCINEW, wide/ultra SCSI controllers */#define PCI_DEVICE_ID_VORTEX_GDT6x17 6 /* GDT6117/6517 */#define PCI_DEVICE_ID_VORTEX_GDT6x27 7 /* GDT6127/6527 */#define PCI_DEVICE_ID_VORTEX_GDT6537 8 /* GDT6537 */#define PCI_DEVICE_ID_VORTEX_GDT6557 9 /* GDT6557/6557-ECC *//* GDT_PCINEW, wide SCSI controllers */#define PCI_DEVICE_ID_VORTEX_GDT6x15 10 /* GDT6115/6515 */#define PCI_DEVICE_ID_VORTEX_GDT6x25 11 /* GDT6125/6525 */#define PCI_DEVICE_ID_VORTEX_GDT6535 12 /* GDT6535 */#define PCI_DEVICE_ID_VORTEX_GDT6555 13 /* GDT6555/6555-ECC */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDT6x17RP/* GDT_MPR, RP series, wide/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x17RP 0x100 /* GDT6117RP/GDT6517RP */#define PCI_DEVICE_ID_VORTEX_GDT6x27RP 0x101 /* GDT6127RP/GDT6527RP */#define PCI_DEVICE_ID_VORTEX_GDT6537RP 0x102 /* GDT6537RP */#define PCI_DEVICE_ID_VORTEX_GDT6557RP 0x103 /* GDT6557RP *//* GDT_MPR, RP series, narrow/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x11RP 0x104 /* GDT6111RP/GDT6511RP */#define PCI_DEVICE_ID_VORTEX_GDT6x21RP 0x105 /* GDT6121RP/GDT6521RP */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDT6x17RD/* GDT_MPR, RD series, wide/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x17RD 0x110 /* GDT6117RD/GDT6517RD */#define PCI_DEVICE_ID_VORTEX_GDT6x27RD 0x111 /* GDT6127RD/GDT6527RD */#define PCI_DEVICE_ID_VORTEX_GDT6537RD 0x112 /* GDT6537RD */#define PCI_DEVICE_ID_VORTEX_GDT6557RD 0x113 /* GDT6557RD *//* GDT_MPR, RD series, narrow/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x11RD 0x114 /* GDT6111RD/GDT6511RD */#define PCI_DEVICE_ID_VORTEX_GDT6x21RD 0x115 /* GDT6121RD/GDT6521RD *//* GDT_MPR, RD series, wide/ultra2 SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x18RD 0x118 /* GDT6118RD/GDT6518RD/ GDT6618RD */#define PCI_DEVICE_ID_VORTEX_GDT6x28RD 0x119 /* GDT6128RD/GDT6528RD/ GDT6628RD */#define PCI_DEVICE_ID_VORTEX_GDT6x38RD 0x11A /* GDT6538RD/GDT6638RD */#define PCI_DEVICE_ID_VORTEX_GDT6x58RD 0x11B /* GDT6558RD/GDT6658RD *//* GDT_MPR, RN series (64-bit PCI), wide/ultra2 SCSI */#define PCI_DEVICE_ID_VORTEX_GDT7x18RN 0x168 /* GDT7118RN/GDT7518RN/ GDT7618RN */#define PCI_DEVICE_ID_VORTEX_GDT7x28RN 0x169 /* GDT7128RN/GDT7528RN/ GDT7628RN */#define PCI_DEVICE_ID_VORTEX_GDT7x38RN 0x16A /* GDT7538RN/GDT7638RN */#define PCI_DEVICE_ID_VORTEX_GDT7x58RN 0x16B /* GDT7558RN/GDT7658RN */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDT6x19RD/* GDT_MPR, RD series, Fibre Channel */#define PCI_DEVICE_ID_VORTEX_GDT6x19RD 0x210 /* GDT6519RD/GDT6619RD */#define PCI_DEVICE_ID_VORTEX_GDT6x29RD 0x211 /* GDT6529RD/GDT6629RD *//* GDT_MPR, RN series (64-bit PCI), Fibre Channel */#define PCI_DEVICE_ID_VORTEX_GDT7x19RN 0x260 /* GDT7519RN/GDT7619RN */#define PCI_DEVICE_ID_VORTEX_GDT7x29RN 0x261 /* GDT7529RN/GDT7629RN */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDTMAXRP/* GDT_MPR, last device ID */#define PCI_DEVICE_ID_VORTEX_GDTMAXRP 0x2ff #endif/* limits */#define GDTH_SCRATCH PAGE_SIZE /* 4KB scratch buffer */#define GDTH_SCRATCH_ORD 0 /* order 0 means 1 page */#define GDTH_MAXCMDS 124#define GDTH_MAXC_P_L 16 /* max. cmds per lun */#define GDTH_MAX_RAW 2 /* max. cmds per raw device */#define MAXOFFSETS 128#define MAXHA 16#define MAXID 127#define MAXLUN 8#define MAXBUS 6#define MAX_HDRIVES 35 /* max. host drive count */#define MAX_EVENTS 100 /* event buffer count */#define MAX_RES_ARGS 40 /* device reservation, must be a multiple of 4 */#define MAXCYLS 1024#define HEADS 64#define SECS 32 /* mapping 64*32 */#define MEDHEADS 127#define MEDSECS 63 /* mapping 127*63 */#define BIGHEADS 255#define BIGSECS 63 /* mapping 255*63 *//* special command ptr. */#define UNUSED_CMND ((Scsi_Cmnd *)-1)#define INTERNAL_CMND ((Scsi_Cmnd *)-2)#define SCREEN_CMND ((Scsi_Cmnd *)-3)#define SPECIAL_SCP(p) (p==UNUSED_CMND || p==INTERNAL_CMND || p==SCREEN_CMND)/* controller services */#define SCSIRAWSERVICE 3#define CACHESERVICE 9#define SCREENSERVICE 11/* screenservice defines */#define MSG_INV_HANDLE -1 /* special message handle */#define MSGLEN 16 /* size of message text */#define MSG_SIZE 34 /* size of message structure */#define MSG_REQUEST 0 /* async. event: message *//* cacheservice defines */#define SECTOR_SIZE 0x200 /* always 512 bytes per sec. *//* DPMEM constants */#define DPMEM_MAGIC 0xC0FFEE11#define IC_HEADER_BYTES 48#define IC_QUEUE_BYTES 4#define DPMEM_COMMAND_OFFSET IC_HEADER_BYTES+IC_QUEUE_BYTES*MAXOFFSETS/* cache/raw service commands */#define GDT_INIT 0 /* service initialization */#define GDT_READ 1 /* read command */#define GDT_WRITE 2 /* write command */#define GDT_INFO 3 /* information about devices */#define GDT_FLUSH 4 /* flush dirty cache buffers */#define GDT_IOCTL 5 /* ioctl command */#define GDT_DEVTYPE 9 /* additional information */#define GDT_MOUNT 10 /* mount cache device */#define GDT_UNMOUNT 11 /* unmount cache device */#define GDT_SET_FEAT 12 /* set feat. (scatter/gather) */#define GDT_GET_FEAT 13 /* get features */#define GDT_WRITE_THR 16 /* write through */#define GDT_READ_THR 17 /* read through */#define GDT_EXT_INFO 18 /* extended info */#define GDT_RESET 19 /* controller reset *//* additional raw service commands */#define GDT_RESERVE 14 /* reserve dev. to raw serv. */#define GDT_RELEASE 15 /* release device */#define GDT_RESERVE_ALL 16 /* reserve all devices */#define GDT_RELEASE_ALL 17 /* release all devices */#define GDT_RESET_BUS 18 /* reset bus */#define GDT_SCAN_START 19 /* start device scan */#define GDT_SCAN_END 20 /* stop device scan */ /* IOCTL command defines */#define SCSI_DR_INFO 0x00 /* SCSI drive info */ #define SCSI_CHAN_CNT 0x05 /* SCSI channel count */ #define SCSI_DR_LIST 0x06 /* SCSI drive list */#define SCSI_DEF_CNT 0x15 /* grown/primary defects */#define DSK_STATISTICS 0x4b /* SCSI disk statistics */#define IOCHAN_DESC 0x5d /* description of IO channel */#define IOCHAN_RAW_DESC 0x5e /* description of raw IO channel */#define L_CTRL_PATTERN 0x20000000L /* SCSI IOCTL mask */#define ARRAY_INFO 0x12 /* array drive info */#define ARRAY_DRV_LIST 0x0f /* array drive list */#define LA_CTRL_PATTERN 0x10000000L /* array IOCTL mask */#define CACHE_DRV_CNT 0x01 /* cache drive count */#define CACHE_DRV_LIST 0x02 /* cache drive list */#define CACHE_INFO 0x04 /* cache info */#define CACHE_CONFIG 0x05 /* cache configuration */#define CACHE_DRV_INFO 0x07 /* cache drive info */#define BOARD_FEATURES 0x15 /* controller features */#define BOARD_INFO 0x28 /* controller info */#define HOST_GET 0x10001L /* get host drive list */#define IO_CHANNEL 0x00020000L /* default IO channel */#define INVALID_CHANNEL 0x0000ffffL /* invalid channel *//* IOCTLs */#define GDTIOCTL_MASK ('J'<<8)#define GDTIOCTL_GENERAL (GDTIOCTL_MASK | 0) /* general IOCTL */#define GDTIOCTL_DRVERS (GDTIOCTL_MASK | 1) /* get driver version */#define GDTIOCTL_CTRTYPE (GDTIOCTL_MASK | 2) /* get controller type */#define GDTIOCTL_CTRCNT (GDTIOCTL_MASK | 5) /* get controller count */#define GDTIOCTL_LOCKDRV (GDTIOCTL_MASK | 6) /* lock host drive */#define GDTIOCTL_LOCKCHN (GDTIOCTL_MASK | 7) /* lock channel */#define GDTIOCTL_EVENT (GDTIOCTL_MASK | 8) /* read controller events *//* service errors */#define S_OK 1 /* no error */#define S_BSY 7 /* controller busy */#define S_RAW_SCSI 12 /* raw serv.: target error */#define S_RAW_ILL 0xff /* raw serv.: illegal *//* timeout values */#define INIT_RETRIES 100000 /* 100000 * 1ms = 100s */#define INIT_TIMEOUT 100000 /* 100000 * 1ms = 100s */#define POLL_TIMEOUT 10000 /* 10000 * 1ms = 10s *//* priorities */#define DEFAULT_PRI 0x20#define IOCTL_PRI 0x10#define HIGH_PRI 0x08/* data directions */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -