Deleted Added
sdiff udiff text old ( 96554 ) new ( 96615 )
full compact
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: head/sys/dev/asr/i2oexec.h 96615 2002-05-14 21:59:10Z obrien $
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
132PRAGMA_ALIGN_PUSH
133PRAGMA_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
245typedef 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
267typedef 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
284typedef 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
297typedef 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
314typedef 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
327typedef 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
337typedef 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
351typedef 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
364typedef 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
377typedef 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
390typedef 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
404typedef 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
417typedef 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
433typedef 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
449typedef 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
465typedef 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
480typedef 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
502typedef 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
524typedef 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
536typedef 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
547typedef 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
564typedef 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
589typedef 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
601typedef 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
624typedef 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
638typedef 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
657typedef 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
663typedef 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
674typedef 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
687typedef 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
700typedef 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
715typedef 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
726typedef 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
734typedef 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
747typedef 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
782typedef 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
839typedef 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
847typedef 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
865typedef 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
883typedef 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
899typedef 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
910typedef 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
922typedef 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
941typedef 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
966typedef 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
978typedef struct _MESSENGER_INFO {
979 U32 InboundMessagePortAddressLow;
980 U32 InboundMessagePortAddressHigh;
981 } I2O_MESSENGER_INFO, *PI2O_MESSENGER_INFO;
982
983/* ExecSysTabSet IOP Descriptor Entry structure. */
984
985typedef 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
1055typedef 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
1075typedef 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
1098typedef 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
1117typedef 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
1133typedef 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
1144typedef 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
1167typedef 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
1183typedef 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
1193typedef 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
1205typedef 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
1213typedef 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
1231typedef 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
1251typedef 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
1263PRAGMA_PACK_POP
1264
1265PRAGMA_ALIGN_POP
1266
1267#endif /* I2O_EXECUTIVE_HDR */