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