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