kernel tree reorganization stage 1: Major cvs repository work (not logged as
[dragonfly.git] / sys / dev / raid / asr / i2oexec.h
1 /* $FreeBSD: src/sys/dev/asr/i2oexec.h,v 1.1.2.1 2000/09/21 20:33:50 msmith Exp $ */
2 /* $DragonFly: src/sys/dev/raid/asr/i2oexec.h,v 1.3 2003/08/07 21:17:08 dillon Exp $ */
3 /****************************************************************
4  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
5  * Copyright (c) 2000 Adaptec Corporation.
6  * All rights reserved.
7  * 
8  * Copyright 1999 I2O Special Interest Group (I2O SIG).  All rights reserved.
9  * All rights reserved
10  * 
11  * TERMS AND CONDITIONS OF USE
12  * 
13  * Redistribution and use in source form, with or without modification, are
14  * permitted provided that redistributions of source code must retain the
15  * above copyright notice, this list of conditions and the following disclaimer.
16  * 
17  * This software is provided `as is' by Distributed Processing Technology and
18  * any express or implied warranties, including, but not limited to, the
19  * implied warranties of merchantability and fitness for a particular purpose,
20  * are disclaimed. In no event shall Distributed Processing Technology be
21  * liable for any direct, indirect, incidental, special, exemplary or
22  * consequential damages (including, but not limited to, procurement of
23  * substitute goods or services; loss of use, data, or profits; or business
24  * interruptions) however caused and on any theory of liability, whether in
25  * contract, strict liability, or tort (including negligence or otherwise)
26  * arising in any way out of the use of this driver software, even if advised
27  * of the possibility of such damage.
28  * 
29  * This header file, and any modifications of this header file, are provided
30  * contingent upon your agreement and adherence to the here-listed terms and
31  * conditions.  By accepting and/or using this header file, you agree to abide
32  * by these terms and conditions and that these terms and conditions will be
33  * construed and governed in accordance with the laws of the State of California,
34  * without reference to conflict-of-law provisions.  If you do not agree
35  * to these terms and conditions, please delete this file, and any copies,
36  * permanently, without making any use thereof.
37  * 
38  * THIS HEADER FILE IS PROVIDED FREE OF CHARGE ON AN AS-IS BASIS WITHOUT
39  * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
40  * TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
41  * PURPOSE.  I2O SIG DOES NOT WARRANT THAT THIS HEADER FILE WILL MEET THE
42  * USER'S REQUIREMENTS OR THAT ITS OPERATION WILL BE UNINTERRUPTED OR
43  * ERROR-FREE.
44  * 
45  * I2O SIG DISCLAIMS ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF
46  * ANY PROPRIETARY RIGHTS, RELATING TO THE IMPLEMENTATION OF THE I2O
47  * SPECIFICATIONS.  I2O SIG DOES NOT WARRANT OR REPRESENT THAT SUCH
48  * IMPLEMENTATIONS WILL NOT INFRINGE SUCH RIGHTS.
49  * 
50  * THE USER OF THIS HEADER FILE SHALL HAVE NO RECOURSE TO I2O SIG FOR ANY
51  * ACTUAL OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, LOST DATA
52  * OR LOST PROFITS ARISING OUT OF THE USE OR INABILITY TO USE THIS PROGRAM.
53  * 
54  * I2O SIG grants the user of this header file a license to copy, distribute,
55  * and modify it, for any purpose, under the following terms.  Any copying,
56  * distribution, or modification of this header file must not delete or alter
57  * the copyright notice of I2O SIG or any of these Terms and Conditions.
58  * 
59  * Any distribution of this header file must not include a charge for the
60  * header file (unless such charges are strictly for the physical acts of
61  * copying or transferring copies).  However, distribution of a product in
62  * which this header file is embedded may include a charge so long as any
63  * such charge does not include any charge for the header file itself.
64  * 
65  * Any modification of this header file constitutes a derivative work based
66  * on this header file.  Any distribution of such derivative work: (1) must
67  * include prominent notices that the header file has been changed from the
68  * original, together with the dates of any changes; (2) automatically includes 
69  * this same license to the original header file from I2O SIG, without any
70  * restriction thereon from the distributing user; and (3) must include a
71  * grant of license of the modified file under the same terms and conditions
72  * as these Terms and Conditions.
73  * 
74  * The I2O SIG Web site can be found at: http://www.i2osig.org
75  * 
76  * The I2O SIG encourages you to deposit derivative works based on this
77  * header file at the I2O SIG Web site.  Furthermore, to become a Registered
78  * Developer of the I2O SIG, sign up at the Web site or call 415.750.8352
79  * (United States).
80  ****************************************************************/
81
82 /*********************************************************************
83  * I2OExec.h -- I2O Executive Class Message definition file
84  *
85  * This file contains information presented in Chapter 4 of the I2O(tm)
86  * Specification.
87  **********************************************************************/
88
89 #if !defined(I2O_EXECUTIVE_HDR)
90 #define I2O_EXECUTIVE_HDR
91
92 #define I2OEXEC_REV 1_5_4  /* I2OExec header file revision string */
93
94 #if ((defined(KERNEL) || defined(_KERNEL)) && defined(__FreeBSD__))
95 # if (!defined(KERN_VERSION))
96 #  include <sys/sysctl.h>
97 # endif
98 # if (KERN_VERSION < 3)
99 #  include "i2omsg.h"      /* Include the Base Message file */
100 #  include "i2outil.h"
101 # else
102 #  include "i2omsg.h"      /* Include the Base Message file */
103 #  include "i2outil.h"
104 # endif
105 #else
106 # include   "i2omsg.h"      /* Include the Base Message file */
107 # include   "i2outil.h"
108 #endif
109
110
111 /*
112     NOTES:
113
114     Gets, reads, receives, etc. are all even numbered functions.
115     Sets, writes, sends, etc. are all odd numbered functions.
116     Functions that both send and receive data can be either but an attempt is made
117         to use the function number that indicates the greater transfer amount.
118     Functions that do not send or receive data use odd function numbers.
119
120     Some functions are synonyms like read, receive and send, write.
121
122     All common functions will have a code of less than 0x80.
123     Unique functions to a class will start at 0x80.
124     Executive Functions start at 0xA0.
125
126     Utility Message function codes range from 0 - 0x1f
127     Base Message function codes range from 0x20 - 0xfe
128     Private Message function code is 0xff.
129 */
130
131 PRAGMA_ALIGN_PUSH
132 PRAGMA_PACK_PUSH
133
134 /*  I2O Executive Function Codes.  */
135
136 #define    I2O_EXEC_ADAPTER_ASSIGN                     0xB3
137 #define    I2O_EXEC_ADAPTER_READ                       0xB2
138 #define    I2O_EXEC_ADAPTER_RELEASE                    0xB5
139 #define    I2O_EXEC_BIOS_INFO_SET                      0xA5
140 #define    I2O_EXEC_BOOT_DEVICE_SET                    0xA7
141 #define    I2O_EXEC_CONFIG_VALIDATE                    0xBB
142 #define    I2O_EXEC_CONN_SETUP                         0xCA
143 #define    I2O_EXEC_DDM_DESTROY                        0xB1
144 #define    I2O_EXEC_DDM_ENABLE                         0xD5
145 #define    I2O_EXEC_DDM_QUIESCE                        0xC7
146 #define    I2O_EXEC_DDM_RESET                          0xD9
147 #define    I2O_EXEC_DDM_SUSPEND                        0xAF
148 #define    I2O_EXEC_DEVICE_ASSIGN                      0xB7
149 #define    I2O_EXEC_DEVICE_RELEASE                     0xB9
150 #define    I2O_EXEC_HRT_GET                            0xA8
151 #define    I2O_EXEC_IOP_CLEAR                          0xBE
152 #define    I2O_EXEC_IOP_CONNECT                        0xC9
153 #define    I2O_EXEC_IOP_RESET                          0xBD
154 #define    I2O_EXEC_LCT_NOTIFY                         0xA2
155 #define    I2O_EXEC_OUTBOUND_INIT                      0xA1
156 #define    I2O_EXEC_PATH_ENABLE                        0xD3
157 #define    I2O_EXEC_PATH_QUIESCE                       0xC5
158 #define    I2O_EXEC_PATH_RESET                         0xD7
159 #define    I2O_EXEC_STATIC_MF_CREATE                   0xDD
160 #define    I2O_EXEC_STATIC_MF_RELEASE                  0xDF
161 #define    I2O_EXEC_STATUS_GET                         0xA0
162 #define    I2O_EXEC_SW_DOWNLOAD                        0xA9
163 #define    I2O_EXEC_SW_UPLOAD                          0xAB
164 #define    I2O_EXEC_SW_REMOVE                          0xAD
165 #define    I2O_EXEC_SYS_ENABLE                         0xD1
166 #define    I2O_EXEC_SYS_MODIFY                         0xC1
167 #define    I2O_EXEC_SYS_QUIESCE                        0xC3
168 #define    I2O_EXEC_SYS_TAB_SET                        0xA3
169
170
171 /* I2O Get Status State values */
172
173 #define    I2O_IOP_STATE_INITIALIZING                  0x01
174 #define    I2O_IOP_STATE_RESET                         0x02
175 #define    I2O_IOP_STATE_HOLD                          0x04
176 #define    I2O_IOP_STATE_READY                         0x05
177 #define    I2O_IOP_STATE_OPERATIONAL                   0x08
178 #define    I2O_IOP_STATE_FAILED                        0x10
179 #define    I2O_IOP_STATE_FAULTED                       0x11
180
181
182 /* Event Indicator Assignments for the Executive Class. */
183
184 #define    I2O_EVENT_IND_RESOURCE_LIMIT                0x00000001
185 #define    I2O_EVENT_IND_CONNECTION_FAIL               0x00000002
186 #define    I2O_EVENT_IND_ADAPTER_FAULT                 0x00000004
187 #define    I2O_EVENT_IND_POWER_FAIL                    0x00000008
188 #define    I2O_EVENT_IND_RESET_PENDING                 0x00000010
189 #define    I2O_EVENT_IND_RESET_IMMINENT                0x00000020
190 #define    I2O_EVENT_IND_HARDWARE_FAIL                 0x00000040
191 #define    I2O_EVENT_IND_XCT_CHANGE                    0x00000080
192 #define    I2O_EVENT_IND_NEW_LCT_ENTRY                 0x00000100
193 #define    I2O_EVENT_IND_MODIFIED_LCT                  0x00000200
194 #define    I2O_EVENT_IND_DDM_AVAILABILITY              0x00000400
195
196 /* Resource Limit Event Data */
197
198 #define    I2O_EVENT_RESOURCE_LIMIT_LOW_MEMORY         0x00000001
199 #define    I2O_EVENT_RESOURCE_LIMIT_INBOUND_POOL_LOW   0x00000002
200 #define    I2O_EVENT_RESOURCE_LIMIT_OUTBOUND_POOL_LOW  0x00000004
201
202 /* Connection Fail Event Data */
203
204 #define    I2O_EVENT_CONNECTION_FAIL_REPOND_NORMAL     0x00000000
205 #define    I2O_EVENT_CONNECTION_FAIL_NOT_REPONDING     0x00000001
206 #define    I2O_EVENT_CONNECTION_FAIL_NO_AVAILABLE_FRAMES 0x00000002
207
208 /* Reset Pending Event Data */
209
210 #define    I2O_EVENT_RESET_PENDING_POWER_LOSS          0x00000001
211 #define    I2O_EVENT_RESET_PENDING_CODE_VIOLATION      0x00000002
212
213 /* Reset Imminent Event Data */
214
215 #define    I2O_EVENT_RESET_IMMINENT_UNKNOWN_CAUSE      0x00000000
216 #define    I2O_EVENT_RESET_IMMINENT_POWER_LOSS         0x00000001
217 #define    I2O_EVENT_RESET_IMMINENT_CODE_VIOLATION     0x00000002
218 #define    I2O_EVENT_RESET_IMMINENT_PARITY_ERROR       0x00000003
219 #define    I2O_EVENT_RESET_IMMINENT_CODE_EXCEPTION     0x00000004
220 #define    I2O_EVENT_RESET_IMMINENT_WATCHDOG_TIMEOUT   0x00000005
221
222 /* Hardware Fail Event Data */
223
224 #define    I2O_EVENT_HARDWARE_FAIL_UNKNOWN_CAUSE       0x00000000
225 #define    I2O_EVENT_HARDWARE_FAIL_CPU_FAILURE         0x00000001
226 #define    I2O_EVENT_HARDWARE_FAIL_MEMORY_FAULT        0x00000002
227 #define    I2O_EVENT_HARDWARE_FAIL_DMA_FAILURE         0x00000003
228 #define    I2O_EVENT_HARDWARE_FAIL_IO_BUS_FAILURE      0x00000004
229
230 /* DDM Availability Event Data */
231
232 #define    I2O_EVENT_DDM_AVAILIBILITY_RESPOND_NORMAL   0x00000000
233 #define    I2O_EVENT_DDM_AVAILIBILITY_CONGESTED        0x00000001
234 #define    I2O_EVENT_DDM_AVAILIBILITY_NOT_RESPONDING   0x00000002
235 #define    I2O_EVENT_DDM_AVAILIBILITY_PROTECTION_VIOLATION 0x00000003
236 #define    I2O_EVENT_DDM_AVAILIBILITY_CODE_VIOLATION   0x00000004
237
238 /****************************************************************************/
239
240 #define    I2O_OPERATION_FLAG_ASSIGN_PERMANENT         0x01
241
242 /* ExecAdapterAssign Function Message Frame structure. */
243
244 typedef struct _I2O_EXEC_ADAPTER_ASSIGN_MESSAGE {
245    I2O_MESSAGE_FRAME           StdMessageFrame;
246    I2O_TRANSACTION_CONTEXT     TransactionContext;
247 #if (defined(__BORLANDC__))
248    U32                         DdmTID;
249 #else
250    BF                          DdmTID:I2O_TID_SZ;
251    BF                          reserved:I2O_RESERVED_12BITS;
252    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
253 #endif
254    I2O_HRT_ENTRY               HRTEntry;
255 } I2O_EXEC_ADAPTER_ASSIGN_MESSAGE, *PI2O_EXEC_ADAPTER_ASSIGN_MESSAGE;
256
257
258 /****************************************************************************/
259
260 #define    I2O_REQUEST_FLAG_CONFIG_REGISTER            0x00000000
261 #define    I2O_REQUEST_FLAG_IO_REGISTER                0x00000001
262 #define    I2O_REQUEST_FLAG_ADAPTER_MEMORY             0x00000002
263
264 /* ExecAdapterRead Function Message Frame structure. */
265
266 typedef struct _I2O_EXEC_ADAPTER_READ_MESSAGE {
267    I2O_MESSAGE_FRAME           StdMessageFrame;
268    I2O_TRANSACTION_CONTEXT     TransactionContext;
269    U32                         AdapterID;
270    U32                         RequestFlags;
271    U32                         Offset;
272    U32                         Length;
273    I2O_SG_ELEMENT              SGL;
274 } I2O_EXEC_ADAPTER_READ_MESSAGE, *PI2O_EXEC_ADAPTER_READ_MESSAGE;
275
276
277 /****************************************************************************/
278
279 #define    I2O_OPERATION_FLAG_RELEASE_PERMANENT        0x01
280
281 /* ExecAdapterRelease Function Message Frame structure. */
282
283 typedef struct _I2O_EXEC_ADAPTER_RELEASE_MESSAGE {
284    I2O_MESSAGE_FRAME           StdMessageFrame;
285    I2O_TRANSACTION_CONTEXT     TransactionContext;
286    U8                          reserved[3];
287    U8                          OperationFlags;
288    I2O_HRT_ENTRY               HRTEntry;
289 } I2O_EXEC_ADAPTER_RELEASE_MESSAGE, *PI2O_EXEC_ADAPTER_RELEASE_MESSAGE;
290
291
292 /****************************************************************************/
293
294 /* ExecBiosInfoSet Function Message Frame structure. */
295
296 typedef struct _I2O_EXEC_BIOS_INFO_SET_MESSAGE {
297    I2O_MESSAGE_FRAME           StdMessageFrame;
298    I2O_TRANSACTION_CONTEXT     TransactionContext;
299 #if (defined(__BORLANDC__))
300    U32                         DeviceTID;
301 #else
302    BF                          DeviceTID:I2O_TID_SZ;
303    BF                          reserved:I2O_RESERVED_12BITS;
304    BF                          BiosInfo:I2O_BIOS_INFO_SZ;
305 #endif
306 } I2O_EXEC_BIOS_INFO_SET_MESSAGE, *PI2O_EXEC_BIOS_INFO_SET_MESSAGE;
307
308
309 /****************************************************************************/
310
311 /* ExecBootDeviceSet Function Message Frame structure. */
312
313 typedef struct _I2O_EXEC_BOOT_DEVICE_SET_MESSAGE {
314    I2O_MESSAGE_FRAME           StdMessageFrame;
315    I2O_TRANSACTION_CONTEXT     TransactionContext;
316    BF                          BootDevice:I2O_TID_SZ;
317    BF                          reserved:I2O_RESERVED_4BITS;
318    BF                          reserved1:I2O_RESERVED_16BITS;
319 } I2O_EXEC_BOOT_DEVICE_SET_MESSAGE, *PI2O_EXEC_BOOT_DEVICE_SET_MESSAGE;
320
321
322 /****************************************************************************/
323
324 /* ExecConfigValidate Function Message Frame structure. */
325
326 typedef struct _I2O_EXEC_CONFIG_VALIDATE_MESSAGE {
327    I2O_MESSAGE_FRAME           StdMessageFrame;
328    I2O_TRANSACTION_CONTEXT     TransactionContext;
329 } I2O_EXEC_CONFIG_VALIDATE_MESSAGE, *PI2O_EXEC_CONFIG_VALIDATE_MESSAGE;
330
331
332 /****************************************************************************/
333
334 /* ExecConnSetup Requestor  */
335
336 typedef struct _I2O_ALIAS_CONNECT_SETUP {
337 #if (defined(__BORLANDC__))
338    U32                         IOP1AliasForTargetDevice;
339 #else
340    BF                          IOP1AliasForTargetDevice:I2O_TID_SZ;
341    BF                          IOP2AliasForInitiatorDevice:I2O_TID_SZ;
342    BF                          reserved:I2O_RESERVED_8BITS;
343 #endif
344 } I2O_ALIAS_CONNECT_SETUP, *PI2O_ALIAS_CONNECT_SETUP;
345
346 #define    I2O_OPERATION_FLAG_PEER_TO_PEER_BIDIRECTIONAL   0x01
347
348 /* ExecConnSetup Object  */
349
350 typedef struct _I2O_OBJECT_CONNECT_SETUP {
351 #if (defined(__BORLANDC__))
352    U32                         TargetDevice;
353 #else
354    BF                          TargetDevice:I2O_TID_SZ;
355    BF                          InitiatorDevice:I2O_TID_SZ;
356    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
357 #endif
358 } I2O_OBJECT_CONNECT_SETUP, *PI2O_OBJECT_CONNECT_SETUP;
359
360
361 /* ExecConnSetup Function Message Frame structure. */
362
363 typedef struct _I2O_EXEC_CONN_SETUP_MESSAGE {
364    I2O_MESSAGE_FRAME           StdMessageFrame;
365    I2O_TRANSACTION_CONTEXT     TransactionContext;
366    I2O_OBJECT_CONNECT_SETUP    ObjectInfo;
367    I2O_ALIAS_CONNECT_SETUP     AliasInfo;
368    U16                         IOP2InboundMFrameSize;
369    U16                         reserved;
370    U32                         MessageClass;
371 } I2O_EXEC_CONN_SETUP_MESSAGE, *PI2O_EXEC_CONN_SETUP_MESSAGE;
372
373
374 /* ExecConnSetup Object Reply */
375
376 typedef struct _I2O_OBJECT_CONNECT_REPLY {
377 #if (defined(__BORLANDC__))
378    U32                         TargetDevice;
379 #else
380    BF                          TargetDevice:I2O_TID_SZ;
381    BF                          InitiatorDevice:I2O_TID_SZ;
382    BF                          ReplyStatusCode:I2O_8BIT_FLAGS_SZ;
383 #endif
384 } I2O_OBJECT_CONNECT_REPLY, *PI2O_OBJECT_CONNECT_REPLY;
385
386
387 /* ExecConnSetup reply structure. */
388
389 typedef struct _I2O_EXEC_CONN_SETUP_REPLY {
390    I2O_MESSAGE_FRAME           StdMessageFrame;
391    I2O_TRANSACTION_CONTEXT     TransactionContext;
392    I2O_OBJECT_CONNECT_REPLY    ObjectInfo;
393    I2O_ALIAS_CONNECT_SETUP     AliasInfo;
394    U16                         IOP2InboundMFrameSize;
395    U16                         reserved;
396 } I2O_EXEC_CONN_SETUP_REPLY, *PI2O_EXEC_CONN_SETUP_REPLY;
397
398
399 /****************************************************************************/
400
401 /* ExecDdmDestroy Function Message Frame structure. */
402
403 typedef struct _I2O_EXEC_DDM_DESTROY_MESSAGE {
404    I2O_MESSAGE_FRAME           StdMessageFrame;
405    I2O_TRANSACTION_CONTEXT     TransactionContext;
406    BF                          DdmTID:I2O_TID_SZ;
407    BF                          reserved:I2O_RESERVED_4BITS;
408    BF                          reserved1:I2O_RESERVED_16BITS;
409 } I2O_EXEC_DDM_DESTROY_MESSAGE, *PI2O_EXEC_DDM_DESTROY_MESSAGE;
410
411
412 /****************************************************************************/
413
414 /* ExecDdmEnable Function Message Frame structure. */
415
416 typedef struct _I2O_EXEC_DDM_ENABLE_MESSAGE {
417    I2O_MESSAGE_FRAME           StdMessageFrame;
418    I2O_TRANSACTION_CONTEXT     TransactionContext;
419    BF                          DeviceTID:I2O_TID_SZ;
420    BF                          reserved2:I2O_RESERVED_4BITS;
421    BF                          reserved1:I2O_RESERVED_16BITS;
422    BF                          IOP_ID:I2O_IOP_ID_SZ;
423    BF                          reserved:I2O_RESERVED_4BITS;
424    BF                          HostUnitID:I2O_UNIT_ID_SZ;
425 } I2O_EXEC_DDM_ENABLE_MESSAGE, *PI2O_EXEC_DDM_ENABLE_MESSAGE;
426
427
428 /****************************************************************************/
429
430 /* ExecDdmQuiesce Function Message Frame structure. */
431
432 typedef struct _I2O_EXEC_DDM_QUIESCE_MESSAGE {
433    I2O_MESSAGE_FRAME           StdMessageFrame;
434    I2O_TRANSACTION_CONTEXT     TransactionContext;
435    BF                          DeviceTID:I2O_TID_SZ;
436    BF                          reserved2:I2O_RESERVED_4BITS;
437    BF                          reserved1:I2O_RESERVED_16BITS;
438    BF                          IOP_ID:I2O_IOP_ID_SZ;
439    BF                          reserved:I2O_RESERVED_4BITS;
440    BF                          HostUnitID:I2O_UNIT_ID_SZ;
441 } I2O_EXEC_DDM_QUIESCE_MESSAGE, *PI2O_EXEC_DDM_QUIESCE_MESSAGE;
442
443
444 /****************************************************************************/
445
446 /* ExecDdmReset Function Message Frame structure. */
447
448 typedef struct _I2O_EXEC_DDM_RESET_MESSAGE {
449    I2O_MESSAGE_FRAME           StdMessageFrame;
450    I2O_TRANSACTION_CONTEXT     TransactionContext;
451    BF                          DeviceTID:I2O_TID_SZ;
452    BF                          reserved2:I2O_RESERVED_4BITS;
453    BF                          reserved1:I2O_RESERVED_16BITS;
454    BF                          IOP_ID:I2O_IOP_ID_SZ;
455    BF                          reserved:I2O_RESERVED_4BITS;
456    BF                          HostUnitID:I2O_UNIT_ID_SZ;
457 } I2O_EXEC_DDM_RESET_MESSAGE, *PI2O_EXEC_DDM_RESET_MESSAGE;
458
459
460 /****************************************************************************/
461
462 /* ExecDdmSuspend Function Message Frame structure. */
463
464 typedef struct _I2O_EXEC_DDM_SUSPEND_MESSAGE {
465    I2O_MESSAGE_FRAME           StdMessageFrame;
466    I2O_TRANSACTION_CONTEXT     TransactionContext;
467    BF                          DdmTID:I2O_TID_SZ;
468    BF                          reserved:I2O_RESERVED_4BITS;
469    BF                          reserved1:I2O_RESERVED_16BITS;
470 } I2O_EXEC_DDM_SUSPEND_MESSAGE, *PI2O_EXEC_DDM_SUSPEND_MESSAGE;
471
472
473 /****************************************************************************/
474
475 #define    I2O_OPERATION_FLAG_ASSIGN_PERMANENT         0x01
476
477 /* ExecDeviceAssign Function Message Frame structure. */
478
479 typedef struct _I2O_EXEC_DEVICE_ASSIGN_MESSAGE {
480    I2O_MESSAGE_FRAME           StdMessageFrame;
481    I2O_TRANSACTION_CONTEXT     TransactionContext;
482 #if (defined(__BORLANDC__))
483    U32                         DeviceTID;
484 #else
485    BF                          DeviceTID:I2O_TID_SZ;
486    BF                          DdmTID:I2O_TID_SZ;
487    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
488 #endif
489    BF                          IOP_ID:I2O_IOP_ID_SZ;
490    BF                          reserved:I2O_RESERVED_4BITS;
491    BF                          HostUnitID:I2O_UNIT_ID_SZ;
492 } I2O_EXEC_DEVICE_ASSIGN_MESSAGE, *PI2O_EXEC_DEVICE_ASSIGN_MESSAGE;
493
494
495 /****************************************************************************/
496
497 #define    I2O_OPERATION_FLAG_RELEASE_PERMANENT        0x01
498
499 /* ExecDeviceRelease Function Message Frame structure. */
500
501 typedef struct _I2O_EXEC_DEVICE_RELEASE_MESSAGE {
502    I2O_MESSAGE_FRAME           StdMessageFrame;
503    I2O_TRANSACTION_CONTEXT     TransactionContext;
504 #if (defined(__BORLANDC__))
505    U32                         DeviceTID;
506 #else
507    BF                          DeviceTID:I2O_TID_SZ;
508    BF                          DdmTID:I2O_TID_SZ;
509    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
510 #endif
511    BF                          IOP_ID:I2O_IOP_ID_SZ;
512    BF                          reserved:I2O_RESERVED_4BITS;
513    BF                          HostUnitID:I2O_UNIT_ID_SZ;
514 } I2O_EXEC_DEVICE_RELEASE_MESSAGE, *PI2O_EXEC_DEVICE_RELEASE_MESSAGE;
515
516
517 /****************************************************************************/
518
519 /* HRT Entry Structure defined in I2OMSG.H */
520
521 /* ExecHrtGet Function Message Frame structure. */
522
523 typedef struct _I2O_EXEC_HRT_GET_MESSAGE {
524    I2O_MESSAGE_FRAME           StdMessageFrame;
525    I2O_TRANSACTION_CONTEXT     TransactionContext;
526    I2O_SG_ELEMENT              SGL;
527 } I2O_EXEC_HRT_GET_MESSAGE, *PI2O_EXEC_HRT_GET_MESSAGE;
528
529
530 /****************************************************************************/
531
532
533 /* ExecIopClear Function Message Frame structure. */
534
535 typedef struct _I2O_EXEC_IOP_CLEAR_MESSAGE {
536    I2O_MESSAGE_FRAME           StdMessageFrame;
537    I2O_TRANSACTION_CONTEXT     TransactionContext;
538 } I2O_EXEC_IOP_CLEAR_MESSAGE, *PI2O_EXEC_IOP_CLEAR_MESSAGE;
539
540
541 /****************************************************************************/
542
543
544 /* ExecIopConnect Function Message Frame structure. */
545
546 typedef struct _I2O_EXEC_IOP_CONNECT_MESSAGE {
547    I2O_MESSAGE_FRAME           StdMessageFrame;
548    I2O_TRANSACTION_CONTEXT     TransactionContext;
549    BF                          reserved:I2O_RESERVED_16BITS;
550    BF                          reserved3:I2O_RESERVED_8BITS;
551    BF                          IOP1MsgerType:I2O_MESSENGER_TYPE_SZ;
552    U16                         IOP1InboundMFrameSize;
553    BF                          IOP1AliasForIOP2:I2O_TID_SZ;
554    U8                          reserved1;
555    BF                          IOP_ID1:I2O_IOP_ID_SZ;
556    BF                          reserved2:I2O_RESERVED_4BITS;
557    BF                          HostUnitID1:I2O_UNIT_ID_SZ;
558 } I2O_EXEC_IOP_CONNECT_MESSAGE, *PI2O_EXEC_IOP_CONNECT_MESSAGE;
559
560
561     /* ExecIopConnect reply structure */
562
563 typedef struct _I2O_EXEC_IOP_CONNECT_IOP_REPLY {
564    I2O_MESSAGE_FRAME           StdMessageFrame;
565    I2O_TRANSACTION_CONTEXT     TransactionContext;
566    U16                         DetailedStatusCode;
567    U8                          reserved;
568    U8                          ReqStatus;
569    U16                         IOP2InboundMFrameSize;
570    BF                          IOP2AliasForIOP1:I2O_TID_SZ;
571    U8                          reserved1;
572    BF                          IOP_ID2:I2O_IOP_ID_SZ;
573    BF                          reserved2:I2O_RESERVED_4BITS;
574    BF                          HostUnitID2:I2O_UNIT_ID_SZ;
575 } I2O_EXEC_IOP_CONNECT_REPLY, *PI2O_EXEC_IOP_CONNECT_REPLY;
576
577
578 /****************************************************************************/
579
580
581 #define    I2O_EXEC_IOP_RESET_RESERVED_SZ              16
582
583 #define    I2O_EXEC_IOP_RESET_IN_PROGRESS              0x01
584 #define    I2O_EXEC_IOP_RESET_REJECTED                 0x02
585
586 #define    I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ       3
587
588 typedef struct _I2O_EXEC_IOP_RESET_STATUS {
589 #   if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
590         U32                    ResetStatus;
591 #   else
592         U8                     ResetStatus;
593         U8                     reserved[I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ];
594 #   endif
595 } I2O_EXEC_IOP_RESET_STATUS, *PI2O_EXEC_IOP_RESET_STATUS;
596
597
598 /* ExecIopReset Function Message Frame structure. */
599
600 typedef struct _I2O_EXEC_IOP_RESET_MESSAGE {
601    U8                          VersionOffset;
602    U8                          MsgFlags;
603    U16                         MessageSize;
604 #if (defined(__BORLANDC__) || defined(sparc))
605    U32                         TargetAddress;
606 #else
607    BF                          TargetAddress:I2O_TID_SZ;
608    BF                          InitiatorAddress:I2O_TID_SZ;
609    BF                          Function:I2O_FUNCTION_SZ;
610 #endif
611    U8                          Reserved[I2O_EXEC_IOP_RESET_RESERVED_SZ];
612    U32                         StatusWordLowAddress;
613    U32                         StatusWordHighAddress;
614 } I2O_EXEC_IOP_RESET_MESSAGE, *PI2O_EXEC_IOP_RESET_MESSAGE;
615
616
617 /****************************************************************************/
618
619 /* LCT Entry Structure defined in I2OMSG.H */
620
621 /* ExecLCTNotify Function Message Frame structure. */
622
623 typedef struct _I2O_EXEC_LCT_NOTIFY_MESSAGE {
624    I2O_MESSAGE_FRAME           StdMessageFrame;
625    I2O_TRANSACTION_CONTEXT     TransactionContext;
626    U32                         ClassIdentifier;
627    U32                         LastReportedChangeIndicator;
628    I2O_SG_ELEMENT              SGL;
629 } I2O_EXEC_LCT_NOTIFY_MESSAGE, *PI2O_EXEC_LCT_NOTIFY_MESSAGE;
630
631
632 /****************************************************************************/
633
634
635 /* ExecOutboundInit Function Message Frame structure. */
636
637 typedef struct _I2O_EXEC_OUTBOUND_INIT_MESSAGE {
638    I2O_MESSAGE_FRAME           StdMessageFrame;
639    I2O_TRANSACTION_CONTEXT     TransactionContext;
640    U32                         HostPageFrameSize;
641    U8                          InitCode;
642    U8                          reserved;
643    U16                         OutboundMFrameSize;
644    I2O_SG_ELEMENT              SGL;
645 } I2O_EXEC_OUTBOUND_INIT_MESSAGE, *PI2O_EXEC_OUTBOUND_INIT_MESSAGE;
646
647
648 #define    I2O_EXEC_OUTBOUND_INIT_IN_PROGRESS          0x01
649 #define    I2O_EXEC_OUTBOUND_INIT_REJECTED             0x02
650 #define    I2O_EXEC_OUTBOUND_INIT_FAILED               0x03
651 #define    I2O_EXEC_OUTBOUND_INIT_COMPLETE             0x04
652
653 #define    I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ          3
654
655
656 typedef struct _I2O_EXEC_OUTBOUND_INIT_STATUS {
657    U8                          InitStatus;
658    U8                          reserved[I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ];
659 } I2O_EXEC_OUTBOUND_INIT_STATUS, *PI2O_EXEC_OUTBOUND_INIT_STATUS;
660
661
662 typedef struct _I2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST {
663    U32                         MFACount;
664    U32                         MFAReleaseCount;
665    U32                         MFAAddress[1];
666 } I2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST, *PI2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST;
667
668
669 /****************************************************************************/
670
671 /* ExecPathEnable Function Message Frame structure. */
672
673 typedef struct _I2O_EXEC_PATH_ENABLE_MESSAGE {
674    I2O_MESSAGE_FRAME           StdMessageFrame;
675    I2O_TRANSACTION_CONTEXT     TransactionContext;
676    BF                          IOP_ID:I2O_IOP_ID_SZ;
677    BF                          reserved:I2O_RESERVED_4BITS;
678    BF                          HostUnitID:I2O_UNIT_ID_SZ;
679 } I2O_EXEC_PATH_ENABLE_MESSAGE, *PI2O_EXEC_PATH_ENABLE_MESSAGE;
680
681
682 /****************************************************************************/
683
684 /* ExecPathQuiesce Function Message Frame structure. */
685
686 typedef struct _I2O_EXEC_PATH_QUIESCE_MESSAGE {
687    I2O_MESSAGE_FRAME           StdMessageFrame;
688    I2O_TRANSACTION_CONTEXT     TransactionContext;
689    BF                          IOP_ID:I2O_IOP_ID_SZ;
690    BF                          reserved:I2O_RESERVED_4BITS;
691    BF                          HostUnitID:I2O_UNIT_ID_SZ;
692 } I2O_EXEC_PATH_QUIESCE_MESSAGE, *PI2O_EXEC_PATH_QUIESCE_MESSAGE;
693
694
695 /****************************************************************************/
696
697 /* ExecPathReset Function Message Frame structure. */
698
699 typedef struct _I2O_EXEC_PATH_RESET_MESSAGE {
700    I2O_MESSAGE_FRAME           StdMessageFrame;
701    I2O_TRANSACTION_CONTEXT     TransactionContext;
702    BF                          IOP_ID:I2O_IOP_ID_SZ;
703    BF                          reserved:I2O_RESERVED_4BITS;
704    BF                          HostUnitID:I2O_UNIT_ID_SZ;
705 } I2O_EXEC_PATH_RESET_MESSAGE, *PI2O_EXEC_PATH_RESET_MESSAGE;
706
707
708 /****************************************************************************/
709
710 #define    I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ        3
711
712 /* ExecStaticMfCreate Message Frame  structure */
713
714 typedef struct _I2O_EXEC_STATIC_MF_CREATE_MESSAGE {
715    I2O_MESSAGE_FRAME           StdMessageFrame;
716    I2O_TRANSACTION_CONTEXT     TransactionContext;
717    U8                          MaxOutstanding;
718    U8                          reserved[I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ];
719    I2O_MESSAGE_FRAME           StaticMessageFrame;
720 } I2O_EXEC_STATIC_MF_CREATE_MESSAGE, *PI2O_EXEC_STATIC_MF_CREATE_MESSAGE;
721
722
723 /* ExecStaticMfCreate Message Frame reply */
724
725 typedef struct _I2O_EXEC_STATIC_MF_CREATE_REPLY {
726    I2O_SINGLE_REPLY_MESSAGE_FRAME  StdReplyFrame;
727    PI2O_MESSAGE_FRAME              StaticMFA;
728 } I2O_EXEC_STATIC_MF_CREATE_REPLY, *PI2O_EXEC_STATIC_MF_CREATE_REPLY;
729
730
731 /* ExecStaticMfRelease Message Frame structure */
732
733 typedef struct _I2O_EXEC_STATIC_MF_RELEASE_MESSAGE {
734    I2O_MESSAGE_FRAME           StdMessageFrame;
735    I2O_TRANSACTION_CONTEXT     TransactionContext;
736    PI2O_MESSAGE_FRAME          StaticMFA;
737 } I2O_EXEC_STATIC_MF_RELEASE_MESSAGE, *PI2O_EXEC_STATIC_MF_RELEASE_MESSAGE;
738
739
740 /****************************************************************************/
741
742 #define    I2O_EXEC_STATUS_GET_RESERVED_SZ             16
743
744 /* ExecStatusGet Function Message Frame structure. */
745
746 typedef struct _I2O_EXEC_STATUS_GET_MESSAGE {
747    U8                          VersionOffset;
748    U8                          MsgFlags;
749    U16                         MessageSize;
750 #if (defined(__BORLANDC__) || defined(_DPT_BIG_ENDIAN) || defined(sparc))
751    U32                         TargetAddress;
752 #else
753    BF                          TargetAddress:I2O_TID_SZ;
754    BF                          InitiatorAddress:I2O_TID_SZ;
755    BF                          Function:I2O_FUNCTION_SZ;
756 #endif
757    U8                          Reserved[I2O_EXEC_STATUS_GET_RESERVED_SZ];
758    U32                         ReplyBufferAddressLow;
759    U32                         ReplyBufferAddressHigh;
760    U32                         ReplyBufferLength;
761 } I2O_EXEC_STATUS_GET_MESSAGE, *PI2O_EXEC_STATUS_GET_MESSAGE;
762
763
764 #define    I2O_IOP_STATUS_PROD_ID_STR_SZ               24
765 #define    I2O_EXEC_STATUS_GET_REPLY_RESERVED_SZ       6
766
767 /* ExecStatusGet reply Structure */
768
769 #define    I2O_IOP_CAP_CONTEXT_32_ONLY                 0x00000000
770 #define    I2O_IOP_CAP_CONTEXT_64_ONLY                 0x00000001
771 #define    I2O_IOP_CAP_CONTEXT_32_64_NOT_CURRENTLY     0x00000002
772 #define    I2O_IOP_CAP_CONTEXT_32_64_CURRENTLY         0x00000003
773 #define    I2O_IOP_CAP_CURRENT_CONTEXT_NOT_CONFIG      0x00000000
774 #define    I2O_IOP_CAP_CURRENT_CONTEXT_32_ONLY         0x00000004
775 #define    I2O_IOP_CAP_CURRENT_CONTEXT_64_ONLY         0x00000008
776 #define    I2O_IOP_CAP_CURRENT_CONTEXT_32_64           0x0000000C
777 #define    I2O_IOP_CAP_INBOUND_PEER_SUPPORT            0x00000010
778 #define    I2O_IOP_CAP_OUTBOUND_PEER_SUPPORT           0x00000020
779 #define    I2O_IOP_CAP_PEER_TO_PEER_SUPPORT            0x00000040
780
781 typedef struct _I2O_EXEC_STATUS_GET_REPLY {
782    U16                         OrganizationID;
783    U16                         reserved;
784 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
785    U32                         IOP_ID;
786 #else
787    BF                          IOP_ID:I2O_IOP_ID_SZ;
788    BF                          reserved1:I2O_RESERVED_4BITS;
789    BF                          HostUnitID:I2O_UNIT_ID_SZ;
790 #endif
791 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
792    U32                         SegmentNumber;
793 #else
794    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
795    BF                          I2oVersion:I2O_4BIT_VERSION_SZ;
796    BF                          IopState:I2O_IOP_STATE_SZ;
797    BF                          MessengerType:I2O_MESSENGER_TYPE_SZ;
798 #endif
799    U16                         InboundMFrameSize;
800    U8                          InitCode;
801    U8                          reserved2;
802    U32                         MaxInboundMFrames;
803    U32                         CurrentInboundMFrames;
804    U32                         MaxOutboundMFrames;
805    U8                          ProductIDString[I2O_IOP_STATUS_PROD_ID_STR_SZ];
806    U32                         ExpectedLCTSize;
807    U32                         IopCapabilities;
808    U32                         DesiredPrivateMemSize;
809    U32                         CurrentPrivateMemSize;
810    U32                         CurrentPrivateMemBase;
811    U32                         DesiredPrivateIOSize;
812    U32                         CurrentPrivateIOSize;
813    U32                         CurrentPrivateIOBase;
814    U8                          reserved3[3];
815    U8                          SyncByte;
816 } I2O_EXEC_STATUS_GET_REPLY, *PI2O_EXEC_STATUS_GET_REPLY;
817
818
819 /****************************************************************************/
820
821 #define    I2O_EXEC_SW_DOWNLOAD_FLAG_LOAD_MEMORY       0x00
822 #define    I2O_EXEC_SW_DOWNLOAD_FLAG_PERMANENT_STORE   0x01
823 #define    I2O_EXEC_SW_DOWNLOAD_FLAG_EXPERIMENTAL      0x00
824 #define    I2O_EXEC_SW_DOWNLOAD_FLAG_OVERRIDE          0x02
825
826 #define    I2O_EXEC_SW_TYPE_DDM                        0x01
827 #define    I2O_EXEC_SW_TYPE_DDM_MPB                    0x02
828 #define    I2O_EXEC_SW_TYPE_DDM_CONFIG_TABLE           0x03
829 #define    I2O_EXEC_SW_TYPE_IRTOS                      0x11
830 #define    I2O_EXEC_SW_TYPE_IRTOS_PRIVATE_MODULE       0x12
831 #define    I2O_EXEC_SW_TYPE_IRTOS_DIALOG_TABLE         0x13
832 #define    I2O_EXEC_SW_TYPE_IOP_PRIVATE_MODULE         0x22
833 #define    I2O_EXEC_SW_TYPE_IOP_DIALOG_TABLE           0x23
834
835
836 /* I2O ExecSwDownload/Upload/Remove SwID Structure */
837
838 typedef struct _I2O_SW_ID {
839    U16                                      ModuleID;
840    U16                                      OrganizationID;
841 } I2O_SW_ID, *PI2O_SW_ID;
842
843
844 /* ExecSwDownload Function Message Frame structure. */
845
846 typedef struct _I2O_EXEC_SW_DOWNLOAD_MESSAGE {
847    I2O_MESSAGE_FRAME           StdMessageFrame;
848    I2O_TRANSACTION_CONTEXT     TransactionContext;
849    U8                          CurrentFragment;
850    U8                          TotalFragments;
851    U8                          SwType;
852    U8                          DownloadFlags;
853    U32                         SWSize;
854    I2O_SW_ID                   SwID;
855    I2O_SG_ELEMENT              SGL;
856 } I2O_EXEC_SW_DOWNLOAD_MESSAGE, *PI2O_EXEC_SW_DOWNLOAD_MESSAGE;
857
858
859 /****************************************************************************/
860
861
862 /* ExecSwUpload Function Message Frame structure. */
863
864 typedef struct _I2O_EXEC_SW_UPLOAD_MESSAGE {
865    I2O_MESSAGE_FRAME           StdMessageFrame;
866    I2O_TRANSACTION_CONTEXT     TransactionContext;
867    U8                          CurrentFragment;
868    U8                          TotalFragments;
869    U8                          SwType;
870    U8                          UploadFlags;
871    U32                         SWSize;
872    I2O_SW_ID                   SwID;
873    I2O_SG_ELEMENT              SGL;
874 } I2O_EXEC_SW_UPLOAD_MESSAGE, *PI2O_EXEC_SW_UPLOAD_MESSAGE;
875
876
877 /****************************************************************************/
878
879
880 /* ExecSwRemove Function Message Frame structure. */
881
882 typedef struct _I2O_EXEC_SW_REMOVE_MESSAGE {
883    I2O_MESSAGE_FRAME           StdMessageFrame;
884    I2O_TRANSACTION_CONTEXT     TransactionContext;
885    U16                         reserved;
886    U8                          SwType;
887    U8                          RemoveFlags;
888    U32                         SWSize;
889    I2O_SW_ID                   SwID;
890 } I2O_EXEC_SW_REMOVE_MESSAGE, *PI2O_EXEC_SW_REMOVE_MESSAGE;
891
892
893 /****************************************************************************/
894
895
896 /* ExecSysEnable Function Message Frame structure. */
897
898 typedef struct _I2O_EXEC_SYS_ENABLE_MESSAGE {
899    I2O_MESSAGE_FRAME           StdMessageFrame;
900    I2O_TRANSACTION_CONTEXT     TransactionContext;
901 } I2O_EXEC_SYS_ENABLE_MESSAGE, *PI2O_EXEC_SYS_ENABLE_MESSAGE;
902
903
904 /****************************************************************************/
905
906
907 /* ExecSysModify Function Message Frame structure. */
908
909 typedef struct _I2O_EXEC_SYS_MODIFY_MESSAGE {
910    I2O_MESSAGE_FRAME           StdMessageFrame;
911    I2O_TRANSACTION_CONTEXT     TransactionContext;
912    I2O_SG_ELEMENT              SGL;
913 } I2O_EXEC_SYS_MODIFY_MESSAGE, *PI2O_EXEC_SYS_MODIFY_MESSAGE;
914
915
916 /****************************************************************************/
917
918
919 /* ExecSysQuiesce Function Message Frame structure. */
920
921 typedef struct _I2O_EXEC_SYS_QUIESCE_MESSAGE {
922    I2O_MESSAGE_FRAME           StdMessageFrame;
923    I2O_TRANSACTION_CONTEXT     TransactionContext;
924 } I2O_EXEC_SYS_QUIESCE_MESSAGE, *PI2O_EXEC_SYS_QUIESCE_MESSAGE;
925
926
927 /****************************************************************************/
928
929
930 /* ExecSysTabSet (System Table) Function Message Frame structure. */
931
932 #define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_IOP           0x000
933 #define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_HOST          0x001
934 #define I2O_EXEC_SYS_TAB_IOP_ID_UNKNOWN_IOP         0xFFF
935 #define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_LOCAL_UNIT    0x0000
936 #define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_UNKNOWN_UNIT  0xffff
937 #define I2O_EXEC_SYS_TAB_SEG_NUMBER_LOCAL_SEGMENT   0x000
938 #define I2O_EXEC_SYS_TAB_SEG_NUMBER_UNKNOWN_SEGMENT 0xfff
939
940 typedef struct _I2O_EXEC_SYS_TAB_SET_MESSAGE {
941    I2O_MESSAGE_FRAME           StdMessageFrame;
942    I2O_TRANSACTION_CONTEXT     TransactionContext;
943 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
944    U32                         IOP_ID;
945 #else
946    BF                          IOP_ID:I2O_IOP_ID_SZ;
947    BF                          reserved:I2O_RESERVED_4BITS;
948    BF                          HostUnitID:I2O_UNIT_ID_SZ;
949 #endif
950 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
951    U32                         SegmentNumber;
952 #else
953    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
954    BF                          reserved2:I2O_RESERVED_4BITS;
955    BF                          reserved3:I2O_RESERVED_16BITS;
956 #endif
957    I2O_SG_ELEMENT              SGL;
958 } I2O_EXEC_SYS_TAB_SET_MESSAGE, *PI2O_EXEC_SYS_TAB_SET_MESSAGE;
959
960
961 /* ExecSysTabSet (System Table) Header Reply structure. */
962
963 #define    I2O_SET_SYSTAB_RESERVED_SZ                  8
964
965 typedef struct _I2O_SET_SYSTAB_HEADER {
966    U8                          NumberEntries;
967    U8                          SysTabVersion;
968    U16                         reserved;
969    U32                         CurrentChangeIndicator;
970    U8                          reserved1[I2O_SET_SYSTAB_RESERVED_SZ];
971 /*    I2O_SYSTAB_ENTRY    SysTabEntry[1]; */
972 } I2O_SET_SYSTAB_HEADER, *PI2O_SET_SYSTAB_HEADER;
973
974
975 #define    I2O_RESOURCE_MANAGER_VERSION        0
976
977 typedef struct _MESSENGER_INFO {
978    U32                         InboundMessagePortAddressLow;
979    U32                         InboundMessagePortAddressHigh;
980    } I2O_MESSENGER_INFO, *PI2O_MESSENGER_INFO;
981
982 /* ExecSysTabSet IOP Descriptor Entry structure. */
983
984 typedef struct _I2O_IOP_ENTRY {
985    U16                         OrganizationID;
986    U16                         reserved;
987 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
988    U32                         IOP_ID;
989 #else
990    BF                          IOP_ID:I2O_IOP_ID_SZ;
991    BF                          reserved3:I2O_RESERVED_4BITS;
992    BF                          reserved1:I2O_RESERVED_16BITS;
993 #endif
994 #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
995    U32                         SegmentNumber;
996 #else
997    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
998    BF                          I2oVersion:I2O_4BIT_VERSION_SZ;
999    BF                          IopState:I2O_IOP_STATE_SZ;
1000    BF                          MessengerType:I2O_MESSENGER_TYPE_SZ;
1001 #endif
1002    U16                         InboundMessageFrameSize;
1003    U16                         reserved2;
1004    U32                         LastChanged;
1005    U32                         IopCapabilities;
1006    I2O_MESSENGER_INFO          MessengerInfo;
1007 } I2O_IOP_ENTRY, *PI2O_IOP_ENTRY;
1008
1009
1010 /****************************************************************************/
1011 /* Executive Parameter Groups */
1012 /****************************************************************************/
1013
1014
1015 #define    I2O_EXEC_IOP_HARDWARE_GROUP_NO              0x0000
1016 #define    I2O_EXEC_IOP_MESSAGE_IF_GROUP_NO            0x0001
1017 #define    I2O_EXEC_EXECUTING_ENVIRONMENT_GROUP_NO     0x0002
1018 #define    I2O_EXEC_EXECUTING_DDM_LIST_GROUP_NO        0x0003
1019 #define    I2O_EXEC_DRIVER_STORE_GROUP_NO              0x0004
1020 #define    I2O_EXEC_DRIVER_STORE_TABLE_GROUP_NO        0x0005
1021 #define    I2O_EXEC_IOP_BUS_ATTRIBUTES_GROUP_NO        0x0006
1022 #define    I2O_EXEC_IOP_SW_ATTRIBUTES_GROUP_NO         0x0007
1023 #define    I2O_EXEC_HARDWARE_RESOURCE_TABLE_GROUP_NO   0x0100
1024 #define    I2O_EXEC_LCT_SCALAR_GROUP_NO                0x0101
1025 #define    I2O_EXEC_LCT_TABLE_GROUP_NO                 0x0102
1026 #define    I2O_EXEC_SYSTEM_TABLE_GROUP_NO              0x0103
1027 #define    I2O_EXEC_EXTERNAL_CONN_TABLE_GROUP_NO       0x0104
1028
1029
1030 /* EXEC Group 0000h - IOP Hardware Parameter Group */
1031
1032 /* IOP HardWare Capabilities defines */
1033
1034 #define    I2O_IOP_HW_CAP_SELF_BOOT                    0x00000001
1035 #define    I2O_IOP_HW_CAP_IRTOS_UPGRADEABLE            0x00000002
1036 #define    I2O_IOP_HW_CAP_DOWNLOADABLE_DDM             0x00000004
1037 #define    I2O_IOP_HW_CAP_INSTALLABLE_DDM              0x00000008
1038 #define    I2O_IOP_HW_CAP_BATTERY_BACKUP_RAM           0x00000010
1039
1040 /* IOP Processor Type defines */
1041
1042 #define    I2O_IOP_PROC_TYPE_INTEL_80960               0x00
1043 #define    I2O_IOP_PROC_TYPE_AMD_29000                 0x01
1044 #define    I2O_IOP_PROC_TYPE_MOTOROLA_68000            0x02
1045 #define    I2O_IOP_PROC_TYPE_ARM                       0x03
1046 #define    I2O_IOP_PROC_TYPE_MIPS                      0x04
1047 #define    I2O_IOP_PROC_TYPE_SPARC                     0x05
1048 #define    I2O_IOP_PROC_TYPE_POWER_PC                  0x06
1049 #define    I2O_IOP_PROC_TYPE_ALPHA                     0x07
1050 #define    I2O_IOP_PROC_TYPE_INTEL_X86                 0x08
1051 #define    I2O_IOP_PROC_TYPE_OTHER                     0xFF
1052
1053
1054 typedef struct _I2O_EXEC_IOP_HARDWARE_SCALAR {
1055    U16                         I2oVendorID;
1056    U16                         ProductID;
1057    U32                         ProcessorMemory;
1058    U32                         PermMemory;
1059    U32                         HWCapabilities;
1060    U8                          ProcessorType;
1061    U8                          ProcessorVersion;
1062 } I2O_EXEC_IOP_HARDWARE_SCALAR, *PI2O_EXEC_IOP_HARDWARE_SCALAR;
1063
1064
1065 /* EXEC Group 0001h - IOP Message Interface Parameter Group */
1066
1067 /* InitCode defines */
1068 #define    I2O_MESSAGE_IF_INIT_CODE_NO_OWNER           0x00
1069 #define    I2O_MESSAGE_IF_INIT_CODE_BIOS               0x10
1070 #define    I2O_MESSAGE_IF_INIT_CODE_OEM_BIOS_EXTENSION 0x20
1071 #define    I2O_MESSAGE_IF_INIT_CODE_ROM_BIOS_EXTENSION 0x30
1072 #define    I2O_MESSAGE_IF_INIT_CODE_OS                 0x80
1073
1074 typedef struct _I2O_EXEC_IOP_MESSAGE_IF_SCALAR {
1075    U32                     InboundFrameSize;
1076    U32                     InboundSizeTarget;
1077    U32                     InboundMax;
1078    U32                     InboundTarget;
1079    U32                     InboundPoolCount;
1080    U32                     InboundCurrentFree;
1081    U32                     InboundCurrentPost;
1082    U16                     StaticCount;
1083    U16                     StaticInstanceCount;
1084    U16                     StaticLimit;
1085    U16                     StaticInstanceLimit;
1086    U32                     OutboundFrameSize;
1087    U32                     OutboundMax;
1088    U32                     OutboundMaxTarget;
1089    U32                     OutboundCurrentFree;
1090    U32                     OutboundCurrentPost;
1091    U8                      InitCode;
1092 } I2O_EXEC_IOP_MESSAGE_IF_SCALAR, *PI2O_EXEC_IOP_MESSAGE_IF_SCALAR;
1093
1094
1095 /* EXEC Group 0002h - Executing Environment Parameter Group */
1096
1097 typedef struct _I2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR {
1098    U32                     MemTotal;
1099    U32                     MemFree;
1100    U32                     PageSize;
1101    U32                     EventQMax;
1102    U32                     EventQCurrent;
1103    U32                     DDMLoadMax;
1104 } I2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR, *PI2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR;
1105
1106
1107 /* EXEC Group 0003h - Executing DDM's Parameter Group */
1108
1109 /* ModuleType Defines */
1110
1111 #define    I2O_EXEC_DDM_MODULE_TYPE_OTHER              0x00
1112 #define    I2O_EXEC_DDM_MODULE_TYPE_DOWNLOAD           0x01
1113 #define    I2O_EXEC_DDM_MODULE_TYPE_EMBEDDED           0x22
1114
1115
1116 typedef struct _I2O_EXEC_EXECUTE_DDM_TABLE {
1117    U16                     DdmTID;
1118    U8                      ModuleType;
1119    U8                      reserved;
1120    U16                     I2oVendorID;
1121    U16                     ModuleID;
1122    U8                      ModuleName[I2O_MODULE_NAME_SZ];
1123    U32                     ModuleVersion;
1124    U32                     DataSize;
1125    U32                     CodeSize;
1126 } I2O_EXEC_EXECUTE_DDM_TABLE, *PI2O_EXEC_EXECUTE_DDM_TABLE;
1127
1128
1129 /* EXEC Group 0004h - Driver Store Environment Parameter Group */
1130
1131
1132 typedef struct _I2O_EXEC_DRIVER_STORE_SCALAR {
1133    U32                     ModuleLimit;
1134    U32                     ModuleCount;
1135    U32                     CurrentSpace;
1136    U32                     FreeSpace;
1137 } I2O_EXEC_DRIVER_STORE_SCALAR, *PI2O_EXEC_DRIVER_STORE_SCALAR;
1138
1139
1140 /* EXEC Group 0005h - Driver Store Parameter Group */
1141
1142
1143 typedef struct _I2O_EXEC_DRIVER_STORE_TABLE {
1144    U16                     StoredDdmIndex;
1145    U8                      ModuleType;
1146    U8                      reserved;
1147    U16                     I2oVendorID;
1148    U16                     ModuleID;
1149    U8                      ModuleName[I2O_MODULE_NAME_SZ];
1150    U32                     ModuleVersion;
1151    U16                     DateDay;
1152    U16                     DateMonth;
1153    U32                     DateYear;
1154    U32                     ModuleSize;
1155    U32                     MpbSize;
1156    U32                     ModuleFlags;
1157 } I2O_EXEC_DRIVER_STORE_TABLE, *PI2O_EXEC_DRIVER_STORE_TABLE;
1158
1159
1160 /* EXEC Group 0006h - IOP's Bus Attributes Parameter Group */
1161
1162 #define    I2O_EXEC_IOP_BUS_ATTRIB_SYSTEM_BUS          0x00
1163 #define    I2O_EXEC_IOP_BUS_ATTRIB_BRIDGED_SYSTEM_BUS  0x01
1164 #define    I2O_EXEC_IOP_BUS_ATTRIB_PRIVATE             0x02
1165
1166 typedef struct _I2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE {
1167    U32                     BusID;
1168    U8                      BusType;
1169    U8                      MaxAdapters;
1170    U8                      AdapterCount;
1171    U8                      BusAttributes;
1172 } I2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE, *PI2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE;
1173
1174
1175 /* EXEC Group 0007h - IOP's Bus Attributes Parameter Group */
1176
1177 #define    I2O_EXEC_IOP_SW_CAP_IRTOS_I2O_COMPLIANT     0x00000001
1178 #define    I2O_EXEC_IOP_SW_CAP_IRTOS_UPGRADEABLE       0x00000002
1179 #define    I2O_EXEC_IOP_SW_CAP_DOWNLOADABLE_DDM        0x00000004
1180 #define    I2O_EXEC_IOP_SW_CAP_INSTALLABLE_DDM         0x00000008
1181
1182 typedef struct _I2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR {
1183    U16                     I2oVendorID;
1184    U16                     ProductID;
1185    U32                     CodeSize;
1186    U32                     SWCapabilities;
1187 } I2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR, *PI2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR;
1188
1189
1190 /* EXEC Group 0100h - Hardware Resource Table Parameter Group */
1191
1192 typedef struct _I2O_EXEC_HARDWARE_RESOURCE_TABLE {
1193    U32                         AdapterID;
1194    U16                         StateInfo;  /* AdapterState plus Local TID */
1195    U8                          BusNumber;
1196    U8                          BusType;
1197    U64                         PhysicalLocation;
1198    U32                         MemorySpace;
1199    U32                         IoSpace;
1200 } I2O_EXEC_HARDWARE_RESOURCE_TABLE, *PI2O_EXEC_HARDWARE_RESOURCE_TABLE;
1201
1202 /* EXEC Group 0101h - Logical Configuration Table Scalar Parameter Group */
1203
1204 typedef struct _I2O_EXEC_LCT_SCALAR {
1205    U16                         BootDevice;
1206    U32                         IopFlags;
1207    U32                         CurrentChangeIndicator;
1208 } I2O_EXEC_LCT_SCALAR, *PI2O_EXEC_LCT_SCALAR;
1209
1210 /* EXEC Group 0102h - Logical Configuration Table Parameter Group */
1211
1212 typedef struct _I2O_EXEC_LCT_TABLE {
1213    U16                         LocalTID;
1214    U16                         UserTID;
1215    U16                         ParentTID;
1216    U16                         DdmTID;
1217    U32                         ChangeIndicator;
1218    U32                         DeviceFlags;
1219    U32                         ClassID;
1220    U32                         SubClass;
1221    U8                          IdentityTag[I2O_IDENTITY_TAG_SZ];
1222    U32                         EventCapabilities;
1223    U8                          BiosInfo;
1224 } I2O_EXEC_LCT_TABLE, *PI2O_EXEC_LCT_TABLE;
1225
1226 /* EXEC Group 0103h - System Table Parameter Group */
1227
1228 #define    I2O_MESSENGER_TYPE_MEMORY_MAPPED_MESSAGE_UNIT  0x0
1229
1230 typedef struct _I2O_EXEC_SYSTEM_TABLE {
1231    U16                         IOP_ID;
1232    U16                         OrganizationID;
1233    U16                         SegmentNumber;
1234    U8                          Version;
1235    U8                          IopState;
1236    U8                          MessengerType;
1237    U8                          reserved;
1238    U32                         InboundMessagePortAddress;
1239    U16                         InboundMessageFrameSize;
1240    U32                         IopCapabilities;
1241    I2O_MESSENGER_INFO          MessengerInfo;
1242 } I2O_EXEC_SYSTEM_TABLE, *PI2O_EXEC_SYSTEM_TABLE;
1243
1244
1245 /* EXEC Group 0104h - External Connection Table Parameter Group */
1246
1247 #define  I2O_EXEC_XCT_FLAGS_REMOTE_IOP_CREATED_CONNECTION     0x00
1248 #define  I2O_EXEC_XCT_FLAGS_THIS_IOP_CREATED_CONNECTION       0x01
1249
1250 typedef struct _I2O_EXEC_EXTERNAL_CONNECTION_TABLE {
1251    U16                         LocalAliasTID;
1252    U16                         RemoteTID;
1253    U16                         RemoteIOP;
1254    U16                         RemoteUnitID;
1255    U8                          Flags;
1256    U8                          reserved;
1257 } I2O_EXEC_EXTERNAL_CONNECTION_TABLE, *PI2O_EXEC_EXTERNAL_CONNECTION_TABLE;
1258
1259
1260 /****************************************************************************/
1261
1262 PRAGMA_PACK_POP
1263
1264 PRAGMA_ALIGN_POP
1265
1266 #endif        /* I2O_EXECUTIVE_HDR */