Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #ifndef _IN2000_H /* $Id: in2000.h,v 1.2 1994/08/25 06:27:38 root Exp root $ * * Header file for the Always IN 2000 driver for Linux * */ #include <linux/types.h> #include <linux/ioport.h> /* The IN-2000 is based on a WD33C93 */ #define INSTAT (base + 0x0) /* R: Auxiliary Status; W: register select */ #define INDATA (base + 0x1) /* R/W: Data port */ #define INFIFO (base + 0x2) /* R/W FIFO, Word access only */ #define INREST (base + 0x3) /* W: Reset everything */ #define INFCNT (base + 0x4) /* R: FIFO byte count */ #define INFRST (base + 0x5) /* W: Reset Fifo count and to write */ #define INFWRT (base + 0x7) /* W: Set FIFO to read */ #define INFLED (base + 0x8) /* W: Set LED; R: Dip Switch settings */ #define INNLED (base + 0x9) /* W: reset LED */ #define INVERS (base + 0xa) /* R: Read hw version, end-reset */ #define ININTR (base + 0xc) /* W: Interrupt Mask Port */ #define G2CNTRL_HRDY 0x20 /* Sets HOST ready */ /* WD33C93 defines */ #define OWNID 0 #undef CONTROL #define CONTROL 1 #define TIMEOUT 2 #define TOTSECT 3 #define TOTHEAD 4 #define TOTCYLH 5 #define TOTCYLL 6 #define LADRSHH 7 #define LADRSHL 8 #define LADRSLH 9 #define LADRSLL 10 #define SECTNUM 11 #define HEADNUM 12 #define CYLNUMH 13 #define CYLNUML 14 #define TARGETU 15 #define CMDPHAS 16 #define SYNCTXR 17 #define TXCNTH 18 #define TXCNTM 19 #define TXCNTL 20 #define DESTID 21 #define SRCID 22 #define SCSIST 23 #define COMMAND 24 #define WDDATA 25 #define AUXSTAT 31 /* OWNID Register Bits */ #define OWN_EAF 0x08 #define OWN_EHP 0x10 #define OWN_FS0 0x40 #define OWN_FS1 0x80 /* AUX Register Bits */ #define AUX_DBR 0 #define AUX_PE 1 #define AUX_CIP 0x10 #define AUX_BSY 0x20 #define AUX_LCI 0x40 #define AUX_INT 0x80 /* Select timeout const, 1 count = 8ms */ #define IN2000_TMOUT 0x1f /* These belong in scsi.h also */ #undef any2scsi #define any2scsi(up, p) \ (up)[0] = (((unsigned long)(p)) >> 16); \ (up)[1] = (((unsigned long)(p)) >> 8); \ (up)[2] = ((unsigned long)(p)); #undef scsi2int #define scsi2int(up) ( ((((long)*(up))&0x1f) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) ) #undef xany2scsi #define xany2scsi(up, p) \ (up)[0] = ((long)(p)) >> 24; \ (up)[1] = ((long)(p)) >> 16; \ (up)[2] = ((long)(p)) >> 8; \ (up)[3] = ((long)(p)); #define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \ + (((long)(up)[2]) << 8) + ((long)(up)[3]) ) #define MAX_CDB 12 #define MAX_SENSE 14 #define MAX_STATUS 32 int in2000_detect(Scsi_Host_Template *); int in2000_command(Scsi_Cmnd *); int in2000_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); int in2000_abort(Scsi_Cmnd *); int in2000_reset(Scsi_Cmnd *); int in2000_biosparam(Disk *, kdev_t, int*); #ifndef NULL #define NULL 0 #endif /* next may be "SG_NONE" or "SG_ALL" or nr. of (1k) blocks per R/W Cmd. */ #define IN2000_SG SG_ALL #define IN2000 {NULL, NULL, \ NULL, NULL, \ "Always IN2000", in2000_detect, NULL, \ NULL, in2000_command, \ in2000_queuecommand, \ in2000_abort, \ in2000_reset, \ NULL, \ in2000_biosparam, \ 1, 7, IN2000_SG, 1, 0, 0} #endif |