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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | /* * 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 *); int seagate_st0x_proc_info(char *,char **,off_t,int,int,int); #ifndef NULL #define NULL 0 #endif #include <linux/kdev_t.h> int seagate_st0x_biosparam(Disk *, kdev_t, int*); #define SEAGATE_ST0X { NULL, NULL, NULL, seagate_st0x_proc_info, \ 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 |