diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/scsi/dpt/dpti_i2o.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/scsi/dpt/dpti_i2o.h')
-rw-r--r-- | drivers/scsi/dpt/dpti_i2o.h | 459 |
1 files changed, 459 insertions, 0 deletions
diff --git a/drivers/scsi/dpt/dpti_i2o.h b/drivers/scsi/dpt/dpti_i2o.h new file mode 100644 index 000000000000..a9585f5235d9 --- /dev/null +++ b/drivers/scsi/dpt/dpti_i2o.h | |||
@@ -0,0 +1,459 @@ | |||
1 | #ifndef _SCSI_I2O_H | ||
2 | #define _SCSI_I2O_H | ||
3 | |||
4 | /* I2O kernel space accessible structures/APIs | ||
5 | * | ||
6 | * (c) Copyright 1999, 2000 Red Hat Software | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public License | ||
10 | * as published by the Free Software Foundation; either version | ||
11 | * 2 of the License, or (at your option) any later version. | ||
12 | * | ||
13 | ************************************************************************* | ||
14 | * | ||
15 | * This header file defined the I2O APIs/structures for use by | ||
16 | * the I2O kernel modules. | ||
17 | * | ||
18 | */ | ||
19 | |||
20 | #ifdef __KERNEL__ /* This file to be included by kernel only */ | ||
21 | |||
22 | #include <linux/i2o-dev.h> | ||
23 | |||
24 | #include <asm/semaphore.h> /* Needed for MUTEX init macros */ | ||
25 | #include <linux/version.h> | ||
26 | #include <linux/config.h> | ||
27 | #include <linux/notifier.h> | ||
28 | #include <asm/atomic.h> | ||
29 | |||
30 | |||
31 | /* | ||
32 | * Tunable parameters first | ||
33 | */ | ||
34 | |||
35 | /* How many different OSM's are we allowing */ | ||
36 | #define MAX_I2O_MODULES 64 | ||
37 | |||
38 | #define I2O_EVT_CAPABILITY_OTHER 0x01 | ||
39 | #define I2O_EVT_CAPABILITY_CHANGED 0x02 | ||
40 | |||
41 | #define I2O_EVT_SENSOR_STATE_CHANGED 0x01 | ||
42 | |||
43 | //#ifdef __KERNEL__ /* ioctl stuff only thing exported to users */ | ||
44 | |||
45 | #define I2O_MAX_MANAGERS 4 | ||
46 | |||
47 | /* | ||
48 | * I2O Interface Objects | ||
49 | */ | ||
50 | |||
51 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) | ||
52 | |||
53 | #define DECLARE_MUTEX(name) struct semaphore name=MUTEX | ||
54 | |||
55 | typedef struct wait_queue *adpt_wait_queue_head_t; | ||
56 | #define ADPT_DECLARE_WAIT_QUEUE_HEAD(wait) adpt_wait_queue_head_t wait = NULL | ||
57 | typedef struct wait_queue adpt_wait_queue_t; | ||
58 | #else | ||
59 | |||
60 | #include <linux/wait.h> | ||
61 | typedef wait_queue_head_t adpt_wait_queue_head_t; | ||
62 | #define ADPT_DECLARE_WAIT_QUEUE_HEAD(wait) DECLARE_WAIT_QUEUE_HEAD(wait) | ||
63 | typedef wait_queue_t adpt_wait_queue_t; | ||
64 | |||
65 | #endif | ||
66 | /* | ||
67 | * message structures | ||
68 | */ | ||
69 | |||
70 | struct i2o_message | ||
71 | { | ||
72 | u8 version_offset; | ||
73 | u8 flags; | ||
74 | u16 size; | ||
75 | u32 target_tid:12; | ||
76 | u32 init_tid:12; | ||
77 | u32 function:8; | ||
78 | u32 initiator_context; | ||
79 | /* List follows */ | ||
80 | }; | ||
81 | |||
82 | struct adpt_device; | ||
83 | struct _adpt_hba; | ||
84 | struct i2o_device | ||
85 | { | ||
86 | struct i2o_device *next; /* Chain */ | ||
87 | struct i2o_device *prev; | ||
88 | |||
89 | char dev_name[8]; /* linux /dev name if available */ | ||
90 | i2o_lct_entry lct_data;/* Device LCT information */ | ||
91 | u32 flags; | ||
92 | struct proc_dir_entry* proc_entry; /* /proc dir */ | ||
93 | struct adpt_device *owner; | ||
94 | struct _adpt_hba *controller; /* Controlling IOP */ | ||
95 | }; | ||
96 | |||
97 | /* | ||
98 | * Each I2O controller has one of these objects | ||
99 | */ | ||
100 | |||
101 | struct i2o_controller | ||
102 | { | ||
103 | char name[16]; | ||
104 | int unit; | ||
105 | int type; | ||
106 | int enabled; | ||
107 | |||
108 | struct notifier_block *event_notifer; /* Events */ | ||
109 | atomic_t users; | ||
110 | struct i2o_device *devices; /* I2O device chain */ | ||
111 | struct i2o_controller *next; /* Controller chain */ | ||
112 | |||
113 | }; | ||
114 | |||
115 | /* | ||
116 | * I2O System table entry | ||
117 | */ | ||
118 | struct i2o_sys_tbl_entry | ||
119 | { | ||
120 | u16 org_id; | ||
121 | u16 reserved1; | ||
122 | u32 iop_id:12; | ||
123 | u32 reserved2:20; | ||
124 | u16 seg_num:12; | ||
125 | u16 i2o_version:4; | ||
126 | u8 iop_state; | ||
127 | u8 msg_type; | ||
128 | u16 frame_size; | ||
129 | u16 reserved3; | ||
130 | u32 last_changed; | ||
131 | u32 iop_capabilities; | ||
132 | u32 inbound_low; | ||
133 | u32 inbound_high; | ||
134 | }; | ||
135 | |||
136 | struct i2o_sys_tbl | ||
137 | { | ||
138 | u8 num_entries; | ||
139 | u8 version; | ||
140 | u16 reserved1; | ||
141 | u32 change_ind; | ||
142 | u32 reserved2; | ||
143 | u32 reserved3; | ||
144 | struct i2o_sys_tbl_entry iops[0]; | ||
145 | }; | ||
146 | |||
147 | /* | ||
148 | * I2O classes / subclasses | ||
149 | */ | ||
150 | |||
151 | /* Class ID and Code Assignments | ||
152 | * (LCT.ClassID.Version field) | ||
153 | */ | ||
154 | #define I2O_CLASS_VERSION_10 0x00 | ||
155 | #define I2O_CLASS_VERSION_11 0x01 | ||
156 | |||
157 | /* Class code names | ||
158 | * (from v1.5 Table 6-1 Class Code Assignments.) | ||
159 | */ | ||
160 | |||
161 | #define I2O_CLASS_EXECUTIVE 0x000 | ||
162 | #define I2O_CLASS_DDM 0x001 | ||
163 | #define I2O_CLASS_RANDOM_BLOCK_STORAGE 0x010 | ||
164 | #define I2O_CLASS_SEQUENTIAL_STORAGE 0x011 | ||
165 | #define I2O_CLASS_LAN 0x020 | ||
166 | #define I2O_CLASS_WAN 0x030 | ||
167 | #define I2O_CLASS_FIBRE_CHANNEL_PORT 0x040 | ||
168 | #define I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL 0x041 | ||
169 | #define I2O_CLASS_SCSI_PERIPHERAL 0x051 | ||
170 | #define I2O_CLASS_ATE_PORT 0x060 | ||
171 | #define I2O_CLASS_ATE_PERIPHERAL 0x061 | ||
172 | #define I2O_CLASS_FLOPPY_CONTROLLER 0x070 | ||
173 | #define I2O_CLASS_FLOPPY_DEVICE 0x071 | ||
174 | #define I2O_CLASS_BUS_ADAPTER_PORT 0x080 | ||
175 | #define I2O_CLASS_PEER_TRANSPORT_AGENT 0x090 | ||
176 | #define I2O_CLASS_PEER_TRANSPORT 0x091 | ||
177 | |||
178 | /* Rest of 0x092 - 0x09f reserved for peer-to-peer classes | ||
179 | */ | ||
180 | |||
181 | #define I2O_CLASS_MATCH_ANYCLASS 0xffffffff | ||
182 | |||
183 | /* Subclasses | ||
184 | */ | ||
185 | |||
186 | #define I2O_SUBCLASS_i960 0x001 | ||
187 | #define I2O_SUBCLASS_HDM 0x020 | ||
188 | #define I2O_SUBCLASS_ISM 0x021 | ||
189 | |||
190 | /* Operation functions */ | ||
191 | |||
192 | #define I2O_PARAMS_FIELD_GET 0x0001 | ||
193 | #define I2O_PARAMS_LIST_GET 0x0002 | ||
194 | #define I2O_PARAMS_MORE_GET 0x0003 | ||
195 | #define I2O_PARAMS_SIZE_GET 0x0004 | ||
196 | #define I2O_PARAMS_TABLE_GET 0x0005 | ||
197 | #define I2O_PARAMS_FIELD_SET 0x0006 | ||
198 | #define I2O_PARAMS_LIST_SET 0x0007 | ||
199 | #define I2O_PARAMS_ROW_ADD 0x0008 | ||
200 | #define I2O_PARAMS_ROW_DELETE 0x0009 | ||
201 | #define I2O_PARAMS_TABLE_CLEAR 0x000A | ||
202 | |||
203 | /* | ||
204 | * I2O serial number conventions / formats | ||
205 | * (circa v1.5) | ||
206 | */ | ||
207 | |||
208 | #define I2O_SNFORMAT_UNKNOWN 0 | ||
209 | #define I2O_SNFORMAT_BINARY 1 | ||
210 | #define I2O_SNFORMAT_ASCII 2 | ||
211 | #define I2O_SNFORMAT_UNICODE 3 | ||
212 | #define I2O_SNFORMAT_LAN48_MAC 4 | ||
213 | #define I2O_SNFORMAT_WAN 5 | ||
214 | |||
215 | /* Plus new in v2.0 (Yellowstone pdf doc) | ||
216 | */ | ||
217 | |||
218 | #define I2O_SNFORMAT_LAN64_MAC 6 | ||
219 | #define I2O_SNFORMAT_DDM 7 | ||
220 | #define I2O_SNFORMAT_IEEE_REG64 8 | ||
221 | #define I2O_SNFORMAT_IEEE_REG128 9 | ||
222 | #define I2O_SNFORMAT_UNKNOWN2 0xff | ||
223 | |||
224 | /* Transaction Reply Lists (TRL) Control Word structure */ | ||
225 | |||
226 | #define TRL_SINGLE_FIXED_LENGTH 0x00 | ||
227 | #define TRL_SINGLE_VARIABLE_LENGTH 0x40 | ||
228 | #define TRL_MULTIPLE_FIXED_LENGTH 0x80 | ||
229 | |||
230 | /* | ||
231 | * Messaging API values | ||
232 | */ | ||
233 | |||
234 | #define I2O_CMD_ADAPTER_ASSIGN 0xB3 | ||
235 | #define I2O_CMD_ADAPTER_READ 0xB2 | ||
236 | #define I2O_CMD_ADAPTER_RELEASE 0xB5 | ||
237 | #define I2O_CMD_BIOS_INFO_SET 0xA5 | ||
238 | #define I2O_CMD_BOOT_DEVICE_SET 0xA7 | ||
239 | #define I2O_CMD_CONFIG_VALIDATE 0xBB | ||
240 | #define I2O_CMD_CONN_SETUP 0xCA | ||
241 | #define I2O_CMD_DDM_DESTROY 0xB1 | ||
242 | #define I2O_CMD_DDM_ENABLE 0xD5 | ||
243 | #define I2O_CMD_DDM_QUIESCE 0xC7 | ||
244 | #define I2O_CMD_DDM_RESET 0xD9 | ||
245 | #define I2O_CMD_DDM_SUSPEND 0xAF | ||
246 | #define I2O_CMD_DEVICE_ASSIGN 0xB7 | ||
247 | #define I2O_CMD_DEVICE_RELEASE 0xB9 | ||
248 | #define I2O_CMD_HRT_GET 0xA8 | ||
249 | #define I2O_CMD_ADAPTER_CLEAR 0xBE | ||
250 | #define I2O_CMD_ADAPTER_CONNECT 0xC9 | ||
251 | #define I2O_CMD_ADAPTER_RESET 0xBD | ||
252 | #define I2O_CMD_LCT_NOTIFY 0xA2 | ||
253 | #define I2O_CMD_OUTBOUND_INIT 0xA1 | ||
254 | #define I2O_CMD_PATH_ENABLE 0xD3 | ||
255 | #define I2O_CMD_PATH_QUIESCE 0xC5 | ||
256 | #define I2O_CMD_PATH_RESET 0xD7 | ||
257 | #define I2O_CMD_STATIC_MF_CREATE 0xDD | ||
258 | #define I2O_CMD_STATIC_MF_RELEASE 0xDF | ||
259 | #define I2O_CMD_STATUS_GET 0xA0 | ||
260 | #define I2O_CMD_SW_DOWNLOAD 0xA9 | ||
261 | #define I2O_CMD_SW_UPLOAD 0xAB | ||
262 | #define I2O_CMD_SW_REMOVE 0xAD | ||
263 | #define I2O_CMD_SYS_ENABLE 0xD1 | ||
264 | #define I2O_CMD_SYS_MODIFY 0xC1 | ||
265 | #define I2O_CMD_SYS_QUIESCE 0xC3 | ||
266 | #define I2O_CMD_SYS_TAB_SET 0xA3 | ||
267 | |||
268 | #define I2O_CMD_UTIL_NOP 0x00 | ||
269 | #define I2O_CMD_UTIL_ABORT 0x01 | ||
270 | #define I2O_CMD_UTIL_CLAIM 0x09 | ||
271 | #define I2O_CMD_UTIL_RELEASE 0x0B | ||
272 | #define I2O_CMD_UTIL_PARAMS_GET 0x06 | ||
273 | #define I2O_CMD_UTIL_PARAMS_SET 0x05 | ||
274 | #define I2O_CMD_UTIL_EVT_REGISTER 0x13 | ||
275 | #define I2O_CMD_UTIL_EVT_ACK 0x14 | ||
276 | #define I2O_CMD_UTIL_CONFIG_DIALOG 0x10 | ||
277 | #define I2O_CMD_UTIL_DEVICE_RESERVE 0x0D | ||
278 | #define I2O_CMD_UTIL_DEVICE_RELEASE 0x0F | ||
279 | #define I2O_CMD_UTIL_LOCK 0x17 | ||
280 | #define I2O_CMD_UTIL_LOCK_RELEASE 0x19 | ||
281 | #define I2O_CMD_UTIL_REPLY_FAULT_NOTIFY 0x15 | ||
282 | |||
283 | #define I2O_CMD_SCSI_EXEC 0x81 | ||
284 | #define I2O_CMD_SCSI_ABORT 0x83 | ||
285 | #define I2O_CMD_SCSI_BUSRESET 0x27 | ||
286 | |||
287 | #define I2O_CMD_BLOCK_READ 0x30 | ||
288 | #define I2O_CMD_BLOCK_WRITE 0x31 | ||
289 | #define I2O_CMD_BLOCK_CFLUSH 0x37 | ||
290 | #define I2O_CMD_BLOCK_MLOCK 0x49 | ||
291 | #define I2O_CMD_BLOCK_MUNLOCK 0x4B | ||
292 | #define I2O_CMD_BLOCK_MMOUNT 0x41 | ||
293 | #define I2O_CMD_BLOCK_MEJECT 0x43 | ||
294 | |||
295 | #define I2O_PRIVATE_MSG 0xFF | ||
296 | |||
297 | /* | ||
298 | * Init Outbound Q status | ||
299 | */ | ||
300 | |||
301 | #define I2O_CMD_OUTBOUND_INIT_IN_PROGRESS 0x01 | ||
302 | #define I2O_CMD_OUTBOUND_INIT_REJECTED 0x02 | ||
303 | #define I2O_CMD_OUTBOUND_INIT_FAILED 0x03 | ||
304 | #define I2O_CMD_OUTBOUND_INIT_COMPLETE 0x04 | ||
305 | |||
306 | /* | ||
307 | * I2O Get Status State values | ||
308 | */ | ||
309 | |||
310 | #define ADAPTER_STATE_INITIALIZING 0x01 | ||
311 | #define ADAPTER_STATE_RESET 0x02 | ||
312 | #define ADAPTER_STATE_HOLD 0x04 | ||
313 | #define ADAPTER_STATE_READY 0x05 | ||
314 | #define ADAPTER_STATE_OPERATIONAL 0x08 | ||
315 | #define ADAPTER_STATE_FAILED 0x10 | ||
316 | #define ADAPTER_STATE_FAULTED 0x11 | ||
317 | |||
318 | /* I2O API function return values */ | ||
319 | |||
320 | #define I2O_RTN_NO_ERROR 0 | ||
321 | #define I2O_RTN_NOT_INIT 1 | ||
322 | #define I2O_RTN_FREE_Q_EMPTY 2 | ||
323 | #define I2O_RTN_TCB_ERROR 3 | ||
324 | #define I2O_RTN_TRANSACTION_ERROR 4 | ||
325 | #define I2O_RTN_ADAPTER_ALREADY_INIT 5 | ||
326 | #define I2O_RTN_MALLOC_ERROR 6 | ||
327 | #define I2O_RTN_ADPTR_NOT_REGISTERED 7 | ||
328 | #define I2O_RTN_MSG_REPLY_TIMEOUT 8 | ||
329 | #define I2O_RTN_NO_STATUS 9 | ||
330 | #define I2O_RTN_NO_FIRM_VER 10 | ||
331 | #define I2O_RTN_NO_LINK_SPEED 11 | ||
332 | |||
333 | /* Reply message status defines for all messages */ | ||
334 | |||
335 | #define I2O_REPLY_STATUS_SUCCESS 0x00 | ||
336 | #define I2O_REPLY_STATUS_ABORT_DIRTY 0x01 | ||
337 | #define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER 0x02 | ||
338 | #define I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER 0x03 | ||
339 | #define I2O_REPLY_STATUS_ERROR_DIRTY 0x04 | ||
340 | #define I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER 0x05 | ||
341 | #define I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER 0x06 | ||
342 | #define I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY 0x08 | ||
343 | #define I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER 0x09 | ||
344 | #define I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER 0x0A | ||
345 | #define I2O_REPLY_STATUS_TRANSACTION_ERROR 0x0B | ||
346 | #define I2O_REPLY_STATUS_PROGRESS_REPORT 0x80 | ||
347 | |||
348 | /* Status codes and Error Information for Parameter functions */ | ||
349 | |||
350 | #define I2O_PARAMS_STATUS_SUCCESS 0x00 | ||
351 | #define I2O_PARAMS_STATUS_BAD_KEY_ABORT 0x01 | ||
352 | #define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE 0x02 | ||
353 | #define I2O_PARAMS_STATUS_BUFFER_FULL 0x03 | ||
354 | #define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL 0x04 | ||
355 | #define I2O_PARAMS_STATUS_FIELD_UNREADABLE 0x05 | ||
356 | #define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE 0x06 | ||
357 | #define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS 0x07 | ||
358 | #define I2O_PARAMS_STATUS_INVALID_GROUP_ID 0x08 | ||
359 | #define I2O_PARAMS_STATUS_INVALID_OPERATION 0x09 | ||
360 | #define I2O_PARAMS_STATUS_NO_KEY_FIELD 0x0A | ||
361 | #define I2O_PARAMS_STATUS_NO_SUCH_FIELD 0x0B | ||
362 | #define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP 0x0C | ||
363 | #define I2O_PARAMS_STATUS_OPERATION_ERROR 0x0D | ||
364 | #define I2O_PARAMS_STATUS_SCALAR_ERROR 0x0E | ||
365 | #define I2O_PARAMS_STATUS_TABLE_ERROR 0x0F | ||
366 | #define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE 0x10 | ||
367 | |||
368 | /* DetailedStatusCode defines for Executive, DDM, Util and Transaction error | ||
369 | * messages: Table 3-2 Detailed Status Codes.*/ | ||
370 | |||
371 | #define I2O_DSC_SUCCESS 0x0000 | ||
372 | #define I2O_DSC_BAD_KEY 0x0002 | ||
373 | #define I2O_DSC_TCL_ERROR 0x0003 | ||
374 | #define I2O_DSC_REPLY_BUFFER_FULL 0x0004 | ||
375 | #define I2O_DSC_NO_SUCH_PAGE 0x0005 | ||
376 | #define I2O_DSC_INSUFFICIENT_RESOURCE_SOFT 0x0006 | ||
377 | #define I2O_DSC_INSUFFICIENT_RESOURCE_HARD 0x0007 | ||
378 | #define I2O_DSC_CHAIN_BUFFER_TOO_LARGE 0x0009 | ||
379 | #define I2O_DSC_UNSUPPORTED_FUNCTION 0x000A | ||
380 | #define I2O_DSC_DEVICE_LOCKED 0x000B | ||
381 | #define I2O_DSC_DEVICE_RESET 0x000C | ||
382 | #define I2O_DSC_INAPPROPRIATE_FUNCTION 0x000D | ||
383 | #define I2O_DSC_INVALID_INITIATOR_ADDRESS 0x000E | ||
384 | #define I2O_DSC_INVALID_MESSAGE_FLAGS 0x000F | ||
385 | #define I2O_DSC_INVALID_OFFSET 0x0010 | ||
386 | #define I2O_DSC_INVALID_PARAMETER 0x0011 | ||
387 | #define I2O_DSC_INVALID_REQUEST 0x0012 | ||
388 | #define I2O_DSC_INVALID_TARGET_ADDRESS 0x0013 | ||
389 | #define I2O_DSC_MESSAGE_TOO_LARGE 0x0014 | ||
390 | #define I2O_DSC_MESSAGE_TOO_SMALL 0x0015 | ||
391 | #define I2O_DSC_MISSING_PARAMETER 0x0016 | ||
392 | #define I2O_DSC_TIMEOUT 0x0017 | ||
393 | #define I2O_DSC_UNKNOWN_ERROR 0x0018 | ||
394 | #define I2O_DSC_UNKNOWN_FUNCTION 0x0019 | ||
395 | #define I2O_DSC_UNSUPPORTED_VERSION 0x001A | ||
396 | #define I2O_DSC_DEVICE_BUSY 0x001B | ||
397 | #define I2O_DSC_DEVICE_NOT_AVAILABLE 0x001C | ||
398 | |||
399 | /* Device Claim Types */ | ||
400 | #define I2O_CLAIM_PRIMARY 0x01000000 | ||
401 | #define I2O_CLAIM_MANAGEMENT 0x02000000 | ||
402 | #define I2O_CLAIM_AUTHORIZED 0x03000000 | ||
403 | #define I2O_CLAIM_SECONDARY 0x04000000 | ||
404 | |||
405 | /* Message header defines for VersionOffset */ | ||
406 | #define I2OVER15 0x0001 | ||
407 | #define I2OVER20 0x0002 | ||
408 | /* Default is 1.5, FIXME: Need support for both 1.5 and 2.0 */ | ||
409 | #define I2OVERSION I2OVER15 | ||
410 | #define SGL_OFFSET_0 I2OVERSION | ||
411 | #define SGL_OFFSET_4 (0x0040 | I2OVERSION) | ||
412 | #define SGL_OFFSET_5 (0x0050 | I2OVERSION) | ||
413 | #define SGL_OFFSET_6 (0x0060 | I2OVERSION) | ||
414 | #define SGL_OFFSET_7 (0x0070 | I2OVERSION) | ||
415 | #define SGL_OFFSET_8 (0x0080 | I2OVERSION) | ||
416 | #define SGL_OFFSET_9 (0x0090 | I2OVERSION) | ||
417 | #define SGL_OFFSET_10 (0x00A0 | I2OVERSION) | ||
418 | #define SGL_OFFSET_12 (0x00C0 | I2OVERSION) | ||
419 | |||
420 | #define TRL_OFFSET_5 (0x0050 | I2OVERSION) | ||
421 | #define TRL_OFFSET_6 (0x0060 | I2OVERSION) | ||
422 | |||
423 | /* msg header defines for MsgFlags */ | ||
424 | #define MSG_STATIC 0x0100 | ||
425 | #define MSG_64BIT_CNTXT 0x0200 | ||
426 | #define MSG_MULTI_TRANS 0x1000 | ||
427 | #define MSG_FAIL 0x2000 | ||
428 | #define MSG_LAST 0x4000 | ||
429 | #define MSG_REPLY 0x8000 | ||
430 | |||
431 | /* minimum size msg */ | ||
432 | #define THREE_WORD_MSG_SIZE 0x00030000 | ||
433 | #define FOUR_WORD_MSG_SIZE 0x00040000 | ||
434 | #define FIVE_WORD_MSG_SIZE 0x00050000 | ||
435 | #define SIX_WORD_MSG_SIZE 0x00060000 | ||
436 | #define SEVEN_WORD_MSG_SIZE 0x00070000 | ||
437 | #define EIGHT_WORD_MSG_SIZE 0x00080000 | ||
438 | #define NINE_WORD_MSG_SIZE 0x00090000 | ||
439 | #define TEN_WORD_MSG_SIZE 0x000A0000 | ||
440 | #define I2O_MESSAGE_SIZE(x) ((x)<<16) | ||
441 | |||
442 | |||
443 | /* Special TID Assignments */ | ||
444 | |||
445 | #define ADAPTER_TID 0 | ||
446 | #define HOST_TID 1 | ||
447 | |||
448 | #define MSG_FRAME_SIZE 128 | ||
449 | #define NMBR_MSG_FRAMES 128 | ||
450 | |||
451 | #define MSG_POOL_SIZE 16384 | ||
452 | |||
453 | #define I2O_POST_WAIT_OK 0 | ||
454 | #define I2O_POST_WAIT_TIMEOUT -ETIMEDOUT | ||
455 | |||
456 | |||
457 | #endif /* __KERNEL__ */ | ||
458 | |||
459 | #endif /* _SCSI_I2O_H */ | ||