|
|
1.1 root 1: /*
2: * seagate.h Copyright (C) 1992 Drew Eckhardt
3: * low level scsi driver header for ST01/ST02 by
4: * Drew Eckhardt
5: *
6: * <[email protected]>
7: */
8:
9: #ifndef _SEAGATE_H
10: #define SEAGATE_H
11: /*
12: $Header
13: */
14: #ifndef ASM
15: int seagate_st0x_detect(Scsi_Host_Template *);
16: int seagate_st0x_command(Scsi_Cmnd *);
17: int seagate_st0x_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
18:
19: int seagate_st0x_abort(Scsi_Cmnd *);
20: const char *seagate_st0x_info(struct Scsi_Host *);
21: int seagate_st0x_reset(Scsi_Cmnd *, unsigned int);
22: int seagate_st0x_proc_info(char *,char **,off_t,int,int,int);
23:
24: #ifndef NULL
25: #define NULL 0
26: #endif
27:
28: #include <linux/kdev_t.h>
29: int seagate_st0x_biosparam(Disk *, kdev_t, int*);
30:
31: #define SEAGATE_ST0X { NULL, NULL, NULL, seagate_st0x_proc_info, \
32: NULL, seagate_st0x_detect, \
33: NULL, \
34: seagate_st0x_info, seagate_st0x_command, \
35: seagate_st0x_queue_command, seagate_st0x_abort, \
36: seagate_st0x_reset, NULL, seagate_st0x_biosparam, \
37: 1, 7, SG_ALL, 1, 0, 0, DISABLE_CLUSTERING}
38: #endif
39:
40:
41: /*
42: defining PARITY causes parity data to be checked
43: */
44:
45: #define PARITY
46:
47:
48: /*
49: Thanks to Brian Antoine for the example code in his Messy-Loss ST-01
50: driver, and Mitsugu Suzuki for information on the ST-01
51: SCSI host.
52: */
53:
54: /*
55: CONTROL defines
56: */
57:
58: #define CMD_RST 0x01
59: #define CMD_SEL 0x02
60: #define CMD_BSY 0x04
61: #define CMD_ATTN 0x08
62: #define CMD_START_ARB 0x10
63: #define CMD_EN_PARITY 0x20
64: #define CMD_INTR 0x40
65: #define CMD_DRVR_ENABLE 0x80
66:
67: /*
68: STATUS
69: */
70:
71: #define STAT_BSY 0x01
72: #define STAT_MSG 0x02
73: #define STAT_IO 0x04
74: #define STAT_CD 0x08
75: #define STAT_REQ 0x10
76: #define STAT_SEL 0x20
77: #define STAT_PARITY 0x40
78: #define STAT_ARB_CMPL 0x80
79:
80: /*
81: REQUESTS
82: */
83:
84: #define REQ_MASK (STAT_CD | STAT_IO | STAT_MSG)
85: #define REQ_DATAOUT 0
86: #define REQ_DATAIN STAT_IO
87: #define REQ_CMDOUT STAT_CD
88: #define REQ_STATIN (STAT_CD | STAT_IO)
89: #define REQ_MSGOUT (STAT_MSG | STAT_CD)
90: #define REQ_MSGIN (STAT_MSG | STAT_CD | STAT_IO)
91:
92: extern volatile int seagate_st0x_timeout;
93:
94: #ifdef PARITY
95: #define BASE_CMD CMD_EN_PARITY
96: #else
97: #define BASE_CMD 0
98: #endif
99:
100: /*
101: Debugging code
102: */
103:
104: #define PHASE_BUS_FREE 1
105: #define PHASE_ARBITRATION 2
106: #define PHASE_SELECTION 4
107: #define PHASE_DATAIN 8
108: #define PHASE_DATAOUT 0x10
109: #define PHASE_CMDOUT 0x20
110: #define PHASE_MSGIN 0x40
111: #define PHASE_MSGOUT 0x80
112: #define PHASE_STATUSIN 0x100
113: #define PHASE_ETC (PHASE_DATAIN | PHASE_DATA_OUT | PHASE_CMDOUT | PHASE_MSGIN | PHASE_MSGOUT | PHASE_STATUSIN)
114: #define PRINT_COMMAND 0x200
115: #define PHASE_EXIT 0x400
116: #define PHASE_RESELECT 0x800
117: #define DEBUG_FAST 0x1000
118: #define DEBUG_SG 0x2000
119: #define DEBUG_LINKED 0x4000
120: #define DEBUG_BORKEN 0x8000
121:
122: /*
123: * Control options - these are timeouts specified in .01 seconds.
124: */
125:
126: /* 30, 20 work */
127: #define ST0X_BUS_FREE_DELAY 25
128: #define ST0X_SELECTION_DELAY 25
129:
130: #define eoi() __asm__("push %%eax\nmovb $0x20, %%al\noutb %%al, $0x20\npop %%eax"::)
131:
132: #define SEAGATE 1 /* these determine the type of the controller */
133: #define FD 2
134:
135: #define ST0X_ID_STR "Seagate ST-01/ST-02"
136: #define FD_ID_STR "TMC-8XX/TMC-950"
137:
138: #endif
139:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.