The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/raid/asr/i2oexec.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 */

Cache object: ce16064610b99bec8fcdd64285354479


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.