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