📄 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-98 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.1 1999/04/26 05:54:37 tb 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.07"#define GDTH_VERSION 1#define GDTH_SUBVERSION 7/* 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 *//* GDT_MPR, RP1 series, wide/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x17RP1 0x110 /* GDT6117RP1/GDT6517RP1 */#define PCI_DEVICE_ID_VORTEX_GDT6x27RP1 0x111 /* GDT6127RP1/GDT6527RP1 */#define PCI_DEVICE_ID_VORTEX_GDT6537RP1 0x112 /* GDT6537RP1 */#define PCI_DEVICE_ID_VORTEX_GDT6557RP1 0x113 /* GDT6557RP1 *//* GDT_MPR, RP1 series, narrow/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x11RP1 0x114 /* GDT6111RP1/GDT6511RP1 */#define PCI_DEVICE_ID_VORTEX_GDT6x21RP1 0x115 /* GDT6121RP1/GDT6521RP1 *//* GDT_MPR, RP2 series, wide/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x17RP2 0x120 /* GDT6117RP2/GDT6517RP2 */#define PCI_DEVICE_ID_VORTEX_GDT6x27RP2 0x121 /* GDT6127RP2/GDT6527RP2 */#define PCI_DEVICE_ID_VORTEX_GDT6537RP2 0x122 /* GDT6537RP2 */#define PCI_DEVICE_ID_VORTEX_GDT6557RP2 0x123 /* GDT6557RP2 *//* GDT_MPR, RP2 series, narrow/ultra SCSI */#define PCI_DEVICE_ID_VORTEX_GDT6x11RP2 0x124 /* GDT6111RP2/GDT6511RP2 */#define PCI_DEVICE_ID_VORTEX_GDT6x21RP2 0x125 /* GDT6121RP2/GDT6521RP2 */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDT6519RD/* GDT_MPR, Fibre Channel */#define PCI_DEVICE_ID_VORTEX_GDT6519RD 0x210 /* GDT6519RD */#define PCI_DEVICE_ID_VORTEX_GDT6529RD 0x211 /* GDT6529RD */#endif#ifndef PCI_DEVICE_ID_VORTEX_GDTMAXRP/* GDT_MPR, last device ID */#define PCI_DEVICE_ID_VORTEX_GDTMAXRP 0x2ff #endif/* limits */#define GDTH_SCRATCH 4096 /* 4KB scratch buffer */#define GDTH_MAXCMDS 124#define GDTH_MAXC_P_L 16 /* max. cmds per lun */#define MAXOFFSETS 128#define MAXHA 8#define MAXID 16#define MAXLUN 8#define MAXBUS 6#define MAX_HDRIVES 35 /* max. host drive count */#define MAX_EVENTS 100 /* event buffer count */#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)/* device types */#define EMPTY_DTYP 0#define CACHE_DTYP 1#define RAW_DTYP 2#define SIOP_DTYP 3 /* the SCSI processor *//* 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 sector *//* 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/* 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_RESERVE 14 /* reserve dev. to raw service */#define GDT_WRITE_THR 16 /* write through */#define GDT_EXT_INFO 18 /* extended info */#define GDT_RESET 19 /* controller reset *//* IOCTL command defines */#define SCSI_CHAN_CNT 5 /* subfunctions */#define GET_IOCHAN_DESC 0x5e#define L_CTRL_PATTERN 0x20000000L#define CACHE_INFO 4#define CACHE_CONFIG 5#define BOARD_INFO 0x28#define IO_CHANNEL 0x00020000L /* channels */#define INVALID_CHANNEL 0x0000ffffL /* 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 10000 /* 10000 * 1ms = 10s */#define INIT_TIMEOUT 100000 /* 1000 * 1ms = 1s */#define POLL_TIMEOUT 10000 /* 10000 * 1ms = 10s *//* priorities */#define DEFAULT_PRI 0x20#define IOCTL_PRI 0x10/* data directions */#define DATA_IN 0x01000000L /* data from target */#define DATA_OUT 0x00000000L /* data to target *//* BMIC registers (EISA controllers) */#define ID0REG 0x0c80 /* board ID */#define EINTENABREG 0x0c89 /* interrupt enable */#define SEMA0REG 0x0c8a /* command semaphore */#define SEMA1REG 0x0c8b /* status semaphore */#define LDOORREG 0x0c8d /* local doorbell */#define EDENABREG 0x0c8e /* EISA system doorbell enable */#define EDOORREG 0x0c8f /* EISA system doorbell */#define MAILBOXREG 0x0c90 /* mailbox reg. (16 bytes) */#define EISAREG 0x0cc0 /* EISA configuration *//* other defines */#define LINUX_OS 8 /* used for cache optim. */#define SCATTER_GATHER 1 /* s/g feature */#define GDTH_MAXSG 32 /* max. s/g elements */#define SECS32 0x1f /* round capacity */#define BIOS_ID_OFFS 0x10 /* offset contr. ID in ISABIOS */#define LOCALBOARD 0 /* board node always 0 */#define ASYNCINDEX 0 /* cmd index async. event */#define SPEZINDEX 1 /* cmd index unknown service */#define GDT_WR_THROUGH 0x100 /* WRITE_THROUGH supported *//* typedefs */#pragma pack(1)typedef struct { char buffer[GDTH_SCRATCH]; /* scratch buffer */} gdth_scratch_str;/* screenservice message */typedef struct { ulong msg_handle; /* message handle */ ulong msg_len; /* size of message */ ulong msg_alen; /* answer length */ unchar msg_answer; /* answer flag */ unchar msg_ext; /* more messages */ unchar msg_reserved[2]; char msg_text[MSGLEN+2]; /* the message text */} gdth_msg_str;/* get channel count IOCTL */typedef struct { ulong channel_no; /* number of channel */ ulong drive_cnt; /* number of drives */ unchar siop_id; /* SCSI processor ID */ unchar siop_state; /* SCSI processor state */ } gdth_getch_str;/* get raw channel count IOCTL (NEW!) */typedef struct { ulong version; /* version of information (-1UL: newest) */ unchar list_entries; /* list entry count */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -