1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef _BUSLOGIC_H
14
15 int buslogic_detect(Scsi_Host_Template *);
16 int buslogic_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
17 int buslogic_abort(Scsi_Cmnd *);
18 const char *buslogic_info(struct Scsi_Host *);
19 int buslogic_reset(Scsi_Cmnd *);
20 int buslogic_biosparam(Disk *, int, int *);
21
22 #define BUSLOGIC { NULL, NULL, \
23 "BusLogic", \
24 buslogic_detect, \
25 0, \
26 buslogic_info, \
27 0, \
28 buslogic_queuecommand, \
29 buslogic_abort, \
30 buslogic_reset, \
31 0, \
32 buslogic_biosparam, \
33 0, \
34 0, \
35 0, \
36 0, \
37 0, \
38 0, \
39 ENABLE_CLUSTERING \
40 }
41
42 #ifdef BUSLOGIC_PRIVATE_H
43
44
45 #ifndef TRUE
46 # define TRUE 1
47 #endif
48 #ifndef FALSE
49 # define FALSE 0
50 #endif
51
52 #define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr)[0])
53
54 #define PACKED __attribute__((packed))
55
56 #define BD_ABORT 0x0001
57 #define BD_COMMAND 0x0002
58 #define BD_DETECT 0x0004
59 #define BD_ERRORS 0x0008
60 #define BD_INTERRUPT 0x0010
61 #define BD_IO 0x0020
62 #define BD_RESET 0x0040
63 #define BD_UNDOCUMENTED 0x0080
64
65
66
67 #define STATUS(base) (base)
68 #define DACT 0x80
69 #define DFAIL 0x40
70 #define INREQ 0x20
71 #define HARDY 0x10
72 #define CPRBSY 0x08
73 #define DIRRDY 0x04
74
75 #define CMDINV 0x01
76
77 #define DATA_IN(base) (STATUS(base) + 1)
78
79 #define INTERRUPT(base) (STATUS(base) + 2)
80 #define INTV 0x80
81
82 #define RSTS 0x08
83 #define CMDC 0x04
84 #define MBOR 0x02
85 #define IMBL 0x01
86 #define INTRMASK 0x8F
87
88
89 #define GEOMETRY(base) (STATUS(base) + 3)
90 #define GEO_GT_1GB 0x80
91
92 #define GEO_XLATION_S_D1 0x0C
93 #define GEO_XLATION_S_D0 0x03
94
95
96
97 #define CONTROL(base) STATUS(base)
98 #define RHARD 0x80
99 #define RSOFT 0x40
100 #define RINT 0x20
101 #define RSBUS 0x10
102
103
104 #define COMMAND_PARAMETER(base) (STATUS(base) + 1)
105 #define CMD_TSTCMDCINT 0x00
106 #define CMD_INITMB 0x01
107 #define CMD_START_SCSI 0x02
108 #define CMD_START_BIOS 0x03
109 #define CMD_INQUIRY 0x04
110 #define CMD_ENBOMBRINT 0x05
111 #define CMD_SETSELTIMOUT 0x06
112 #define CMD_BUSON_TIME 0x07
113 #define CMD_BUSOFF_TIME 0x08
114 #define CMD_BUSXFR_RATE 0x09
115 #define CMD_INQ_DEVICES 0x0A
116 #define CMD_RETCONF 0x0B
117 #define CMD_TARGET_MODE 0x0C
118 #define CMD_INQ_SETUP_INFO 0x0D
119 #define CMD_WRITE_LCL_RAM 0x1A
120 #define CMD_READ_LCL_RAM 0x1B
121 #define CMD_WRITE_BM_FIFO 0x1C
122 #define CMD_READ_BM_FIFO 0x1D
123 #define CMD_ECHO 0x1F
124 #define CMD_HA_DIAG 0x20
125 #define CMD_HA_OPTIONS 0x21
126 #define CMD_INITEXTMB 0x81
127 #define CMD_VER_NO_LAST 0x84
128 #define CMD_VER_NO_LETTER 0x85
129 #define CMD_RET_MODEL_NO 0x8B
130 #define CMD_INQEXTSETUP 0x8D
131 #define CMD_ROUND_ROBIN 0x8F
132
133 #define CMD_READ_FW_LCL_RAM 0x91
134 #define CMD_WRITE_INQ_BUF 0x9A
135
136 #define CMD_READ_INQ_BUF 0x9B
137
138
139 #define MBX_NOT_IN_USE 0x00
140 #define MBX_ACTION_START 0x01
141 #define MBX_ACTION_ABORT 0x02
142 #define MBX_COMPLETION_OK 0x01
143 #define MBX_COMPLETION_ABORTED 0x02
144 #define MBX_COMPLETION_NOT_FOUND 0x03
145 #define MBX_COMPLETION_ERROR 0x04
146
147
148 struct mailbox {
149 void *ccbptr;
150 unsigned char btstat;
151 unsigned char sdstat;
152 unsigned char reserved;
153 unsigned char status;
154 };
155
156
157 struct chain {
158 unsigned long datalen;
159 void *dataptr;
160 };
161
162 #define MAX_CDB 12
163
164 struct ccb {
165 unsigned char op;
166 unsigned char dir;
167 unsigned char cdblen;
168 unsigned char rsalen;
169 unsigned long datalen;
170 void *dataptr;
171 unsigned char reserved[2];
172 unsigned char hastat;
173 unsigned char tarstat;
174 unsigned char id;
175 unsigned char lun;
176 unsigned char cdb[MAX_CDB];
177 unsigned char ccbcontrol;
178 unsigned char commlinkid;
179 void *linkptr;
180 void *senseptr;
181 };
182
183 #define CCB_OP_INIT 0x00
184 #define CCB_OP_TARG 0x01
185 #define CCB_OP_INIT_SG 0x02
186 #define CCB_OP_INIT_R 0x03
187
188 #define CCB_OP_INIT_SG_R 0x04
189
190 #define CCB_OP_BUS_RESET 0x81
191
192 #endif
193
194 #endif