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