home *** CD-ROM | disk | FTP | other *** search
- /*
- * seagate.h Copyright (C) 1992 Drew Eckhardt
- * low level scsi driver header for ST01/ST02 by
- * Drew Eckhardt
- *
- * <drew@colorado.edu>
- */
-
- #ifndef _SEAGATE_H
- #define SEAGATE_H
- /*
- $Header
- */
- #ifndef ASM
- int seagate_st0x_detect(Scsi_Host_Template *);
- int seagate_st0x_command(Scsi_Cmnd *);
- int seagate_st0x_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
-
- int seagate_st0x_abort(Scsi_Cmnd *);
- const char *seagate_st0x_info(struct Scsi_Host *);
- int seagate_st0x_reset(Scsi_Cmnd *);
-
- #ifndef NULL
- #define NULL 0
- #endif
-
- int seagate_st0x_biosparam(Disk *, int, int*);
-
- #define SEAGATE_ST0X {NULL, NULL, NULL, seagate_st0x_detect, \
- NULL, \
- seagate_st0x_info, seagate_st0x_command, \
- seagate_st0x_queue_command, seagate_st0x_abort, \
- seagate_st0x_reset, NULL, seagate_st0x_biosparam, \
- 1, 7, SG_ALL, 1, 0, 0, DISABLE_CLUSTERING}
- #endif
-
-
- /*
- defining PARITY causes parity data to be checked
- */
-
- #define PARITY
-
-
- /*
- Thanks to Brian Antoine for the example code in his Messy-Loss ST-01
- driver, and Mitsugu Suzuki for information on the ST-01
- SCSI host.
- */
-
- /*
- CONTROL defines
- */
-
- #define CMD_RST 0x01
- #define CMD_SEL 0x02
- #define CMD_BSY 0x04
- #define CMD_ATTN 0x08
- #define CMD_START_ARB 0x10
- #define CMD_EN_PARITY 0x20
- #define CMD_INTR 0x40
- #define CMD_DRVR_ENABLE 0x80
-
- /*
- STATUS
- */
-
- #define STAT_BSY 0x01
- #define STAT_MSG 0x02
- #define STAT_IO 0x04
- #define STAT_CD 0x08
- #define STAT_REQ 0x10
- #define STAT_SEL 0x20
- #define STAT_PARITY 0x40
- #define STAT_ARB_CMPL 0x80
-
- /*
- REQUESTS
- */
-
- #define REQ_MASK (STAT_CD | STAT_IO | STAT_MSG)
- #define REQ_DATAOUT 0
- #define REQ_DATAIN STAT_IO
- #define REQ_CMDOUT STAT_CD
- #define REQ_STATIN (STAT_CD | STAT_IO)
- #define REQ_MSGOUT (STAT_MSG | STAT_CD)
- #define REQ_MSGIN (STAT_MSG | STAT_CD | STAT_IO)
-
- extern volatile int seagate_st0x_timeout;
-
- #ifdef PARITY
- #define BASE_CMD CMD_EN_PARITY
- #else
- #define BASE_CMD 0
- #endif
-
- /*
- Debugging code
- */
-
- #define PHASE_BUS_FREE 1
- #define PHASE_ARBITRATION 2
- #define PHASE_SELECTION 4
- #define PHASE_DATAIN 8
- #define PHASE_DATAOUT 0x10
- #define PHASE_CMDOUT 0x20
- #define PHASE_MSGIN 0x40
- #define PHASE_MSGOUT 0x80
- #define PHASE_STATUSIN 0x100
- #define PHASE_ETC (PHASE_DATAIN | PHASE_DATA_OUT | PHASE_CMDOUT | PHASE_MSGIN | PHASE_MSGOUT | PHASE_STATUSIN)
- #define PRINT_COMMAND 0x200
- #define PHASE_EXIT 0x400
- #define PHASE_RESELECT 0x800
- #define DEBUG_FAST 0x1000
- #define DEBUG_SG 0x2000
- #define DEBUG_LINKED 0x4000
- #define DEBUG_BORKEN 0x8000
-
- /*
- * Control options - these are timeouts specified in .01 seconds.
- */
-
- /* 30, 20 work */
- #define ST0X_BUS_FREE_DELAY 25
- #define ST0X_SELECTION_DELAY 25
-
- #define eoi() __asm__("push %%eax\nmovb $0x20, %%al\noutb %%al, $0x20\npop %%eax"::)
-
- #define SEAGATE 1 /* these determine the type of the controller */
- #define FD 2
-
- #define ST0X_ID_STR "Seagate ST-01/ST-02"
- #define FD_ID_STR "TMC-8XX/TMC-950"
-
- #endif
-
-