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