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