aboutsummaryrefslogtreecommitdiff
path: root/i386/i386at/gpl/linux/scsi/in2000.h
diff options
context:
space:
mode:
Diffstat (limited to 'i386/i386at/gpl/linux/scsi/in2000.h')
-rw-r--r--i386/i386at/gpl/linux/scsi/in2000.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/i386/i386at/gpl/linux/scsi/in2000.h b/i386/i386at/gpl/linux/scsi/in2000.h
new file mode 100644
index 00000000..cf68db7f
--- /dev/null
+++ b/i386/i386at/gpl/linux/scsi/in2000.h
@@ -0,0 +1,122 @@
+#ifndef _IN2000_H
+
+/* $Id: in2000.h,v 1.1.1.1 1997/02/25 21:27:50 thomas Exp $
+ *
+ * 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