home *** CD-ROM | disk | FTP | other *** search
- #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 *, int, 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, "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
-