xref: /dragonfly/sys/dev/raid/asr/i2oexec.h (revision 36a3d1d6)
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.4 2004/02/12 00:00:19 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(__DragonFly__))
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 */
1267