Print this page
Initial modifications using the code changes present between
the LSI source code for FreeBSD drivers. Specifically the changes
between from mpslsi-source-17.00.00.00 -> mpslsi-source-03.00.00.00.
This mainly involves using a different scatter/gather element in
frame setup.

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/scsi/adapters/mpt_sas3/mpi/mpi2_ioc.h
          +++ new/usr/src/uts/common/sys/scsi/adapters/mpt_sas3/mpi/mpi2_ioc.h
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23      - * Copyright (c) 2000 to 2009, LSI Corporation.
  24      - * All rights reserved.
       23 + *  Copyright (c) 2000-2012 LSI Corporation.
  25   24   *
  26   25   * Redistribution and use in source and binary forms of all code within
  27   26   * this file that is exclusively owned by LSI, with or without
  28   27   * modification, is permitted provided that, in addition to the CDDL 1.0
  29   28   * License requirements, the following conditions are met:
  30   29   *
  31   30   *    Neither the name of the author nor the names of its contributors may be
  32   31   *    used to endorse or promote products derived from this software without
  33   32   *    specific prior written permission.
  34   33   *
↓ open down ↓ 9 lines elided ↑ open up ↑
  44   43   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45   44   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  46   45   * DAMAGE.
  47   46   */
  48   47  
  49   48  /*
  50   49   *           Name:  mpi2_ioc.h
  51   50   *          Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages
  52   51   *  Creation Date:  October 11, 2006
  53   52   *
  54      - *  mpi2_ioc.h Version:  02.00.12
       53 + *  mpi2_ioc.h Version:  02.00.xx
       54 + *
       55 + *  NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
       56 + *        prefix are for use only on MPI v2.5 products, and must not be used
       57 + *        with MPI v2.0 products. Unless otherwise noted, names beginning with
       58 + *        MPI2 or Mpi2 are for use with both MPI v2.0 and MPI v2.5 products.
  55   59   *
  56   60   *  Version History
  57   61   *  ---------------
  58   62   *
  59   63   *  Date      Version   Description
  60   64   *  --------  --------  ------------------------------------------------------
  61   65   *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
  62   66   *  06-04-07  02.00.01  In IOCFacts Reply structure, renamed MaxDevices to
  63   67   *                      MaxTargets.
  64   68   *                      Added TotalImageSize field to FWDownload Request.
↓ open down ↓ 60 lines elided ↑ open up ↑
 125  129   *                      define.
 126  130   *                      Removed MPI2_EVENT_SAS_DISC_DS_SATA_INIT_FAILURE define.
 127  131   *  05-06-09  02.00.11  Added MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR define.
 128  132   *                      Added MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX define.
 129  133   *                      Added two new reason codes for SAS Device Status Change
 130  134   *                      Event.
 131  135   *                      Added new event: SAS PHY Counter.
 132  136   *  07-30-09  02.00.12  Added GPIO Interrupt event define and structure.
 133  137   *                      Added MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define.
 134  138   *                      Added new product id family for 2208.
      139 + *  10-28-09  02.00.13  Added HostMSIxVectors field to MPI2_IOC_INIT_REQUEST.
      140 + *                      Added MaxMSIxVectors field to MPI2_IOC_FACTS_REPLY.
      141 + *                      Added MinDevHandle field to MPI2_IOC_FACTS_REPLY.
      142 + *                      Added MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY.
      143 + *                      Added MPI2_EVENT_HOST_BASED_DISCOVERY_PHY define.
      144 + *                      Added MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER define.
      145 + *                      Added Host Based Discovery Phy Event data.
      146 + *                      Added defines for ProductID Product field
      147 + *                      (MPI2_FW_HEADER_PID_).
      148 + *                      Modified values for SAS ProductID Family
      149 + *                      (MPI2_FW_HEADER_PID_FAMILY_).
      150 + *  02-10-10  02.00.14  Added SAS Quiesce Event structure and defines.
      151 + *                      Added PowerManagementControl Request structures and
      152 + *                      defines.
      153 + *  05-12-10  02.00.15  Marked Task Set Full Event as obsolete.
      154 + *                      Added MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY define.
      155 + *  11-10-10  02.00.16  Added MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC.
 135  156   *  --------------------------------------------------------------------------
 136  157   */
 137  158  
 138  159  #ifndef MPI2_IOC_H
 139  160  #define MPI2_IOC_H
 140  161  
 141  162  /*****************************************************************************
 142  163  *
 143  164  *               IOC Messages
 144  165  *
↓ open down ↓ 12 lines elided ↑ open up ↑
 157  178      U8                      Function;                       /* 0x03 */
 158  179      U16                     Reserved2;                      /* 0x04 */
 159  180      U8                      Reserved3;                      /* 0x06 */
 160  181      U8                      MsgFlags;                       /* 0x07 */
 161  182      U8                      VP_ID;                          /* 0x08 */
 162  183      U8                      VF_ID;                          /* 0x09 */
 163  184      U16                     Reserved4;                      /* 0x0A */
 164  185      U16                     MsgVersion;                     /* 0x0C */
 165  186      U16                     HeaderVersion;                  /* 0x0E */
 166  187      U32                     Reserved5;                      /* 0x10 */
 167      -    U32                     Reserved6;                      /* 0x14 */
 168      -    U16                     Reserved7;                      /* 0x18 */
      188 +    U16                     Reserved6;                      /* 0x14 */
      189 +    U8                      Reserved7;                      /* 0x16 */
      190 +    U8                      HostMSIxVectors;                /* 0x17 */
      191 +    U16                     Reserved8;                      /* 0x18 */
 169  192      U16                     SystemRequestFrameSize;         /* 0x1A */
 170  193      U16                     ReplyDescriptorPostQueueDepth;  /* 0x1C */
 171  194      U16                     ReplyFreeQueueDepth;            /* 0x1E */
 172  195      U32                     SenseBufferAddressHigh;         /* 0x20 */
 173  196      U32                     SystemReplyAddressHigh;         /* 0x24 */
 174  197      U64                     SystemRequestFrameBaseAddress;  /* 0x28 */
 175  198      U64                     ReplyDescriptorPostQueueAddress;/* 0x30 */
 176  199      U64                     ReplyFreeQueueAddress;          /* 0x38 */
 177  200      U64                     TimeStamp;                      /* 0x40 */
 178  201  } MPI2_IOC_INIT_REQUEST, MPI2_POINTER PTR_MPI2_IOC_INIT_REQUEST,
↓ open down ↓ 74 lines elided ↑ open up ↑
 253  276      U8                      MsgFlags;                       /* 0x07 */
 254  277      U8                      VP_ID;                          /* 0x08 */
 255  278      U8                      VF_ID;                          /* 0x09 */
 256  279      U16                     Reserved1;                      /* 0x0A */
 257  280      U16                     IOCExceptions;                  /* 0x0C */
 258  281      U16                     IOCStatus;                      /* 0x0E */
 259  282      U32                     IOCLogInfo;                     /* 0x10 */
 260  283      U8                      MaxChainDepth;                  /* 0x14 */
 261  284      U8                      WhoInit;                        /* 0x15 */
 262  285      U8                      NumberOfPorts;                  /* 0x16 */
 263      -    U8                      Reserved2;                      /* 0x17 */
      286 +    U8                      MaxMSIxVectors;                 /* 0x17 */
 264  287      U16                     RequestCredit;                  /* 0x18 */
 265  288      U16                     ProductID;                      /* 0x1A */
 266  289      U32                     IOCCapabilities;                /* 0x1C */
 267  290      MPI2_VERSION_UNION      FWVersion;                      /* 0x20 */
 268  291      U16                     IOCRequestFrameSize;            /* 0x24 */
 269  292      U16                     Reserved3;                      /* 0x26 */
 270  293      U16                     MaxInitiators;                  /* 0x28 */
 271  294      U16                     MaxTargets;                     /* 0x2A */
 272  295      U16                     MaxSasExpanders;                /* 0x2C */
 273  296      U16                     MaxEnclosures;                  /* 0x2E */
 274  297      U16                     ProtocolFlags;                  /* 0x30 */
 275  298      U16                     HighPriorityCredit;             /* 0x32 */
 276  299      U16                     MaxReplyDescriptorPostQueueDepth; /* 0x34 */
 277  300      U8                      ReplyFrameSize;                 /* 0x36 */
 278  301      U8                      MaxVolumes;                     /* 0x37 */
 279  302      U16                     MaxDevHandle;                   /* 0x38 */
 280  303      U16                     MaxPersistentEntries;           /* 0x3A */
 281      -    U32                     Reserved4;                      /* 0x3C */
      304 +    U16                     MinDevHandle;                   /* 0x3C */
      305 +    U16                     Reserved4;                      /* 0x3E */
 282  306  } MPI2_IOC_FACTS_REPLY, MPI2_POINTER PTR_MPI2_IOC_FACTS_REPLY,
 283  307    Mpi2IOCFactsReply_t, MPI2_POINTER pMpi2IOCFactsReply_t;
 284  308  
 285  309  /* MsgVersion */
 286  310  #define MPI2_IOCFACTS_MSGVERSION_MAJOR_MASK             (0xFF00)
 287  311  #define MPI2_IOCFACTS_MSGVERSION_MAJOR_SHIFT            (8)
 288  312  #define MPI2_IOCFACTS_MSGVERSION_MINOR_MASK             (0x00FF)
 289  313  #define MPI2_IOCFACTS_MSGVERSION_MINOR_SHIFT            (0)
 290  314  
 291  315  /* HeaderVersion */
↓ open down ↓ 15 lines elided ↑ open up ↑
 307  331  #define MPI2_IOCFACTS_EXCEPT_MANUFACT_CHECKSUM_FAIL     (0x0008)
 308  332  #define MPI2_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL           (0x0004)
 309  333  #define MPI2_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID        (0x0002)
 310  334  #define MPI2_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL       (0x0001)
 311  335  
 312  336  /* defines for WhoInit field are after the IOCInit Request */
 313  337  
 314  338  /* ProductID field uses MPI2_FW_HEADER_PID_ */
 315  339  
 316  340  /* IOCCapabilities */
      341 +#define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE     (0x00020000)
      342 +#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY   (0x00010000)
 317  343  #define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX            (0x00008000)
 318  344  #define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR       (0x00004000)
 319  345  #define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY           (0x00002000)
 320  346  #define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID        (0x00001000)
 321  347  #define MPI2_IOCFACTS_CAPABILITY_TLR                    (0x00000800)
 322  348  #define MPI2_IOCFACTS_CAPABILITY_MULTICAST              (0x00000100)
 323  349  #define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET   (0x00000080)
 324  350  #define MPI2_IOCFACTS_CAPABILITY_EEDP                   (0x00000040)
 325  351  #define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER        (0x00000020)
 326  352  #define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER        (0x00000010)
↓ open down ↓ 149 lines elided ↑ open up ↑
 476  502  
 477  503  /* AckRequired */
 478  504  #define MPI2_EVENT_NOTIFICATION_ACK_NOT_REQUIRED    (0x00)
 479  505  #define MPI2_EVENT_NOTIFICATION_ACK_REQUIRED        (0x01)
 480  506  
 481  507  /* Event */
 482  508  #define MPI2_EVENT_LOG_DATA                         (0x0001)
 483  509  #define MPI2_EVENT_STATE_CHANGE                     (0x0002)
 484  510  #define MPI2_EVENT_HARD_RESET_RECEIVED              (0x0005)
 485  511  #define MPI2_EVENT_EVENT_CHANGE                     (0x000A)
 486      -#define MPI2_EVENT_TASK_SET_FULL                    (0x000E)
      512 +#define MPI2_EVENT_TASK_SET_FULL                    (0x000E) /* obsolete */
 487  513  #define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE         (0x000F)
 488  514  #define MPI2_EVENT_IR_OPERATION_STATUS              (0x0014)
 489  515  #define MPI2_EVENT_SAS_DISCOVERY                    (0x0016)
 490  516  #define MPI2_EVENT_SAS_BROADCAST_PRIMITIVE          (0x0017)
 491  517  #define MPI2_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE    (0x0018)
 492  518  #define MPI2_EVENT_SAS_INIT_TABLE_OVERFLOW          (0x0019)
 493  519  #define MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST         (0x001C)
 494  520  #define MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE    (0x001D)
 495  521  #define MPI2_EVENT_IR_VOLUME                        (0x001E)
 496  522  #define MPI2_EVENT_IR_PHYSICAL_DISK                 (0x001F)
 497  523  #define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST     (0x0020)
 498  524  #define MPI2_EVENT_LOG_ENTRY_ADDED                  (0x0021)
 499  525  #define MPI2_EVENT_SAS_PHY_COUNTER                  (0x0022)
 500  526  #define MPI2_EVENT_GPIO_INTERRUPT                   (0x0023)
      527 +#define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY         (0x0024)
      528 +#define MPI2_EVENT_SAS_QUIESCE                      (0x0025)
 501  529  
 502  530  
 503  531  /* Log Entry Added Event data */
 504  532  
 505  533  /* the following structure matches MPI2_LOG_0_ENTRY in mpi2_cnfg.h */
 506  534  #define MPI2_EVENT_DATA_LOG_DATA_LENGTH             (0x1C)
 507  535  
 508  536  typedef struct _MPI2_EVENT_DATA_LOG_ENTRY_ADDED
 509  537  {
 510  538      U64         TimeStamp;                          /* 0x00 */
↓ open down ↓ 25 lines elided ↑ open up ↑
 536  564  {
 537  565      U8                      Reserved1;                      /* 0x00 */
 538  566      U8                      Port;                           /* 0x01 */
 539  567      U16                     Reserved2;                      /* 0x02 */
 540  568  } MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
 541  569    MPI2_POINTER PTR_MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
 542  570    Mpi2EventDataHardResetReceived_t,
 543  571    MPI2_POINTER pMpi2EventDataHardResetReceived_t;
 544  572  
 545  573  /* Task Set Full Event data */
      574 +/*   this event is obsolete */
 546  575  
 547  576  typedef struct _MPI2_EVENT_DATA_TASK_SET_FULL
 548  577  {
 549  578      U16                     DevHandle;                      /* 0x00 */
 550  579      U16                     CurrentDepth;                   /* 0x02 */
 551  580  } MPI2_EVENT_DATA_TASK_SET_FULL, MPI2_POINTER PTR_MPI2_EVENT_DATA_TASK_SET_FULL,
 552  581    Mpi2EventDataTaskSetFull_t, MPI2_POINTER pMpi2EventDataTaskSetFull_t;
 553  582  
 554  583  
 555  584  /* SAS Device Status Change Event data */
↓ open down ↓ 276 lines elided ↑ open up ↑
 832  861      U8                              StartPhyNum;                /* 0x09 */
 833  862      U8                              ExpStatus;                  /* 0x0A */
 834  863      U8                              PhysicalPort;               /* 0x0B */
 835  864      MPI2_EVENT_SAS_TOPO_PHY_ENTRY   PHY[MPI2_EVENT_SAS_TOPO_PHY_COUNT]; /* 0x0C*/
 836  865  } MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
 837  866    MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
 838  867    Mpi2EventDataSasTopologyChangeList_t,
 839  868    MPI2_POINTER pMpi2EventDataSasTopologyChangeList_t;
 840  869  
 841  870  /* values for the ExpStatus field */
      871 +#define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER                  (0x00)
 842  872  #define MPI2_EVENT_SAS_TOPO_ES_ADDED                        (0x01)
 843  873  #define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING               (0x02)
 844  874  #define MPI2_EVENT_SAS_TOPO_ES_RESPONDING                   (0x03)
 845  875  #define MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING         (0x04)
 846  876  
 847  877  /* defines for the LinkRate field */
 848  878  #define MPI2_EVENT_SAS_TOPO_LR_CURRENT_MASK                 (0xF0)
 849  879  #define MPI2_EVENT_SAS_TOPO_LR_CURRENT_SHIFT                (4)
 850  880  #define MPI2_EVENT_SAS_TOPO_LR_PREV_MASK                    (0x0F)
 851  881  #define MPI2_EVENT_SAS_TOPO_LR_PREV_SHIFT                   (0)
 852  882  
 853  883  #define MPI2_EVENT_SAS_TOPO_LR_UNKNOWN_LINK_RATE            (0x00)
 854  884  #define MPI2_EVENT_SAS_TOPO_LR_PHY_DISABLED                 (0x01)
 855  885  #define MPI2_EVENT_SAS_TOPO_LR_NEGOTIATION_FAILED           (0x02)
 856  886  #define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE            (0x03)
 857  887  #define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR                (0x04)
 858  888  #define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS        (0x05)
      889 +#define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY              (0x06)
 859  890  #define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5                     (0x08)
 860  891  #define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0                     (0x09)
 861  892  #define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0                     (0x0A)
      893 +#define MPI25_EVENT_SAS_TOPO_LR_RATE_12_0                   (0x0B)
 862  894  
 863  895  /* values for the PhyStatus field */
 864  896  #define MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT                (0x80)
 865  897  #define MPI2_EVENT_SAS_TOPO_PS_MULTIPLEX_CHANGE             (0x10)
 866  898  /* values for the PhyStatus ReasonCode sub-field */
 867  899  #define MPI2_EVENT_SAS_TOPO_RC_MASK                         (0x0F)
 868  900  #define MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED                   (0x01)
 869  901  #define MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING          (0x02)
 870  902  #define MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED                  (0x03)
 871  903  #define MPI2_EVENT_SAS_TOPO_RC_NO_CHANGE                    (0x04)
↓ open down ↓ 44 lines elided ↑ open up ↑
 916  948  
 917  949  /* use MPI2_SASPHY3_EVENT_CODE_ values from mpi2_cnfg.h for the PhyEventCode field */
 918  950  
 919  951  /* use MPI2_SASPHY3_COUNTER_TYPE_ values from mpi2_cnfg.h for the CounterType field */
 920  952  
 921  953  /* use MPI2_SASPHY3_TIME_UNITS_ values from mpi2_cnfg.h for the TimeUnits field */
 922  954  
 923  955  /* use MPI2_SASPHY3_TFLAGS_ values from mpi2_cnfg.h for the ThresholdFlags field */
 924  956  
 925  957  
      958 +/* SAS Quiesce Event data */
      959 +
      960 +typedef struct _MPI2_EVENT_DATA_SAS_QUIESCE
      961 +{
      962 +    U8                      ReasonCode;                 /* 0x00 */
      963 +    U8                      Reserved1;                  /* 0x01 */
      964 +    U16                     Reserved2;                  /* 0x02 */
      965 +    U32                     Reserved3;                  /* 0x04 */
      966 +} MPI2_EVENT_DATA_SAS_QUIESCE,
      967 +  MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_QUIESCE,
      968 +  Mpi2EventDataSasQuiesce_t, MPI2_POINTER pMpi2EventDataSasQuiesce_t;
      969 +
      970 +/* SAS Quiesce Event data ReasonCode values */
      971 +#define MPI2_EVENT_SAS_QUIESCE_RC_STARTED                   (0x01)
      972 +#define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED                 (0x02)
      973 +
      974 +
      975 +/* Host Based Discovery Phy Event data */
      976 +
      977 +typedef struct _MPI2_EVENT_HBD_PHY_SAS
      978 +{
      979 +    U8          Flags;                      /* 0x00 */
      980 +    U8          NegotiatedLinkRate;         /* 0x01 */
      981 +    U8          PhyNum;                     /* 0x02 */
      982 +    U8          PhysicalPort;               /* 0x03 */
      983 +    U32         Reserved1;                  /* 0x04 */
      984 +    U8          InitialFrame[28];           /* 0x08 */
      985 +} MPI2_EVENT_HBD_PHY_SAS, MPI2_POINTER PTR_MPI2_EVENT_HBD_PHY_SAS,
      986 +  Mpi2EventHbdPhySas_t, MPI2_POINTER pMpi2EventHbdPhySas_t;
      987 +
      988 +/* values for the Flags field */
      989 +#define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID        (0x02)
      990 +#define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME         (0x01)
      991 +
      992 +/* use MPI2_SAS_NEG_LINK_RATE_ defines from mpi2_cnfg.h for the NegotiatedLinkRate field */
      993 +
      994 +typedef union _MPI2_EVENT_HBD_DESCRIPTOR
      995 +{
      996 +    MPI2_EVENT_HBD_PHY_SAS      Sas;
      997 +} MPI2_EVENT_HBD_DESCRIPTOR, MPI2_POINTER PTR_MPI2_EVENT_HBD_DESCRIPTOR,
      998 +  Mpi2EventHbdDescriptor_t, MPI2_POINTER pMpi2EventHbdDescriptor_t;
      999 +
     1000 +typedef struct _MPI2_EVENT_DATA_HBD_PHY
     1001 +{
     1002 +    U8                          DescriptorType;     /* 0x00 */
     1003 +    U8                          Reserved1;          /* 0x01 */
     1004 +    U16                         Reserved2;          /* 0x02 */
     1005 +    U32                         Reserved3;          /* 0x04 */
     1006 +    MPI2_EVENT_HBD_DESCRIPTOR   Descriptor;         /* 0x08 */
     1007 +} MPI2_EVENT_DATA_HBD_PHY, MPI2_POINTER PTR_MPI2_EVENT_DATA_HBD_PHY,
     1008 +  Mpi2EventDataHbdPhy_t, MPI2_POINTER pMpi2EventDataMpi2EventDataHbdPhy_t;
     1009 +
     1010 +/* values for the DescriptorType field */
     1011 +#define MPI2_EVENT_HBD_DT_SAS               (0x01)
     1012 +
     1013 +
     1014 +
 926 1015  /****************************************************************************
 927 1016  *  EventAck message
 928 1017  ****************************************************************************/
 929 1018  
 930 1019  /* EventAck Request message */
 931 1020  typedef struct _MPI2_EVENT_ACK_REQUEST
 932 1021  {
 933 1022      U16                     Reserved1;                      /* 0x00 */
 934 1023      U8                      ChainOffset;                    /* 0x02 */
 935 1024      U8                      Function;                       /* 0x03 */
↓ open down ↓ 26 lines elided ↑ open up ↑
 962 1051      U16                     IOCStatus;                      /* 0x0E */
 963 1052      U32                     IOCLogInfo;                     /* 0x10 */
 964 1053  } MPI2_EVENT_ACK_REPLY, MPI2_POINTER PTR_MPI2_EVENT_ACK_REPLY,
 965 1054    Mpi2EventAckReply_t, MPI2_POINTER pMpi2EventAckReply_t;
 966 1055  
 967 1056  
 968 1057  /****************************************************************************
 969 1058  *  FWDownload message
 970 1059  ****************************************************************************/
 971 1060  
 972      -/* FWDownload Request message */
     1061 +/* MPI v2.0 FWDownload Request message */
 973 1062  typedef struct _MPI2_FW_DOWNLOAD_REQUEST
 974 1063  {
 975 1064      U8                      ImageType;                  /* 0x00 */
 976 1065      U8                      Reserved1;                  /* 0x01 */
 977 1066      U8                      ChainOffset;                /* 0x02 */
 978 1067      U8                      Function;                   /* 0x03 */
 979 1068      U16                     Reserved2;                  /* 0x04 */
 980 1069      U8                      Reserved3;                  /* 0x06 */
 981 1070      U8                      MsgFlags;                   /* 0x07 */
 982 1071      U8                      VP_ID;                      /* 0x08 */
↓ open down ↓ 6 lines elided ↑ open up ↑
 989 1078    Mpi2FWDownloadRequest, MPI2_POINTER pMpi2FWDownloadRequest;
 990 1079  
 991 1080  #define MPI2_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT   (0x01)
 992 1081  
 993 1082  #define MPI2_FW_DOWNLOAD_ITYPE_FW                   (0x01)
 994 1083  #define MPI2_FW_DOWNLOAD_ITYPE_BIOS                 (0x02)
 995 1084  #define MPI2_FW_DOWNLOAD_ITYPE_MANUFACTURING        (0x06)
 996 1085  #define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_1             (0x07)
 997 1086  #define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_2             (0x08)
 998 1087  #define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID             (0x09)
     1088 +#define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE             (0x0A)
 999 1089  #define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK    (0x0B)
     1090 +#define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC (0xF0)
1000 1091  
1001      -/* FWDownload TransactionContext Element */
     1092 +/* MPI v2.0 FWDownload TransactionContext Element */
1002 1093  typedef struct _MPI2_FW_DOWNLOAD_TCSGE
1003 1094  {
1004 1095      U8                      Reserved1;                  /* 0x00 */
1005 1096      U8                      ContextSize;                /* 0x01 */
1006 1097      U8                      DetailsLength;              /* 0x02 */
1007 1098      U8                      Flags;                      /* 0x03 */
1008 1099      U32                     Reserved2;                  /* 0x04 */
1009 1100      U32                     ImageOffset;                /* 0x08 */
1010 1101      U32                     ImageSize;                  /* 0x0C */
1011 1102  } MPI2_FW_DOWNLOAD_TCSGE, MPI2_POINTER PTR_MPI2_FW_DOWNLOAD_TCSGE,
1012 1103    Mpi2FWDownloadTCSGE_t, MPI2_POINTER pMpi2FWDownloadTCSGE_t;
1013 1104  
     1105 +
     1106 +/* MPI v2.5 FWDownload Request message */
     1107 +typedef struct _MPI25_FW_DOWNLOAD_REQUEST
     1108 +{
     1109 +    U8                      ImageType;                  /* 0x00 */
     1110 +    U8                      Reserved1;                  /* 0x01 */
     1111 +    U8                      ChainOffset;                /* 0x02 */
     1112 +    U8                      Function;                   /* 0x03 */
     1113 +    U16                     Reserved2;                  /* 0x04 */
     1114 +    U8                      Reserved3;                  /* 0x06 */
     1115 +    U8                      MsgFlags;                   /* 0x07 */
     1116 +    U8                      VP_ID;                      /* 0x08 */
     1117 +    U8                      VF_ID;                      /* 0x09 */
     1118 +    U16                     Reserved4;                  /* 0x0A */
     1119 +    U32                     TotalImageSize;             /* 0x0C */
     1120 +    U32                     Reserved5;                  /* 0x10 */
     1121 +    U32                     Reserved6;                  /* 0x14 */
     1122 +    U32                     ImageOffset;                /* 0x18 */
     1123 +    U32                     ImageSize;                  /* 0x1C */
     1124 +    MPI25_SGE_IO_UNION      SGL;                        /* 0x20 */
     1125 +} MPI25_FW_DOWNLOAD_REQUEST, MPI2_POINTER PTR_MPI25_FW_DOWNLOAD_REQUEST,
     1126 +  Mpi25FWDownloadRequest, MPI2_POINTER pMpi25FWDownloadRequest;
     1127 +
     1128 +
1014 1129  /* FWDownload Reply message */
1015 1130  typedef struct _MPI2_FW_DOWNLOAD_REPLY
1016 1131  {
1017 1132      U8                      ImageType;                  /* 0x00 */
1018 1133      U8                      Reserved1;                  /* 0x01 */
1019 1134      U8                      MsgLength;                  /* 0x02 */
1020 1135      U8                      Function;                   /* 0x03 */
1021 1136      U16                     Reserved2;                  /* 0x04 */
1022 1137      U8                      Reserved3;                  /* 0x06 */
1023 1138      U8                      MsgFlags;                   /* 0x07 */
↓ open down ↓ 4 lines elided ↑ open up ↑
1028 1143      U16                     IOCStatus;                  /* 0x0E */
1029 1144      U32                     IOCLogInfo;                 /* 0x10 */
1030 1145  } MPI2_FW_DOWNLOAD_REPLY, MPI2_POINTER PTR_MPI2_FW_DOWNLOAD_REPLY,
1031 1146    Mpi2FWDownloadReply_t, MPI2_POINTER pMpi2FWDownloadReply_t;
1032 1147  
1033 1148  
1034 1149  /****************************************************************************
1035 1150  *  FWUpload message
1036 1151  ****************************************************************************/
1037 1152  
1038      -/* FWUpload Request message */
     1153 +/* MPI v2.0 FWUpload Request message */
1039 1154  typedef struct _MPI2_FW_UPLOAD_REQUEST
1040 1155  {
1041 1156      U8                      ImageType;                  /* 0x00 */
1042 1157      U8                      Reserved1;                  /* 0x01 */
1043 1158      U8                      ChainOffset;                /* 0x02 */
1044 1159      U8                      Function;                   /* 0x03 */
1045 1160      U16                     Reserved2;                  /* 0x04 */
1046 1161      U8                      Reserved3;                  /* 0x06 */
1047 1162      U8                      MsgFlags;                   /* 0x07 */
1048 1163      U8                      VP_ID;                      /* 0x08 */
↓ open down ↓ 9 lines elided ↑ open up ↑
1058 1173  #define MPI2_FW_UPLOAD_ITYPE_FW_FLASH           (0x01)
1059 1174  #define MPI2_FW_UPLOAD_ITYPE_BIOS_FLASH         (0x02)
1060 1175  #define MPI2_FW_UPLOAD_ITYPE_FW_BACKUP          (0x05)
1061 1176  #define MPI2_FW_UPLOAD_ITYPE_MANUFACTURING      (0x06)
1062 1177  #define MPI2_FW_UPLOAD_ITYPE_CONFIG_1           (0x07)
1063 1178  #define MPI2_FW_UPLOAD_ITYPE_CONFIG_2           (0x08)
1064 1179  #define MPI2_FW_UPLOAD_ITYPE_MEGARAID           (0x09)
1065 1180  #define MPI2_FW_UPLOAD_ITYPE_COMPLETE           (0x0A)
1066 1181  #define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK  (0x0B)
1067 1182  
     1183 +/* MPI v2.0 FWUpload TransactionContext Element */
1068 1184  typedef struct _MPI2_FW_UPLOAD_TCSGE
1069 1185  {
1070 1186      U8                      Reserved1;                  /* 0x00 */
1071 1187      U8                      ContextSize;                /* 0x01 */
1072 1188      U8                      DetailsLength;              /* 0x02 */
1073 1189      U8                      Flags;                      /* 0x03 */
1074 1190      U32                     Reserved2;                  /* 0x04 */
1075 1191      U32                     ImageOffset;                /* 0x08 */
1076 1192      U32                     ImageSize;                  /* 0x0C */
1077 1193  } MPI2_FW_UPLOAD_TCSGE, MPI2_POINTER PTR_MPI2_FW_UPLOAD_TCSGE,
1078 1194    Mpi2FWUploadTCSGE_t, MPI2_POINTER pMpi2FWUploadTCSGE_t;
1079 1195  
     1196 +
     1197 +/* MPI v2.5 FWUpload Request message */
     1198 +typedef struct _MPI25_FW_UPLOAD_REQUEST
     1199 +{
     1200 +    U8                      ImageType;                  /* 0x00 */
     1201 +    U8                      Reserved1;                  /* 0x01 */
     1202 +    U8                      ChainOffset;                /* 0x02 */
     1203 +    U8                      Function;                   /* 0x03 */
     1204 +    U16                     Reserved2;                  /* 0x04 */
     1205 +    U8                      Reserved3;                  /* 0x06 */
     1206 +    U8                      MsgFlags;                   /* 0x07 */
     1207 +    U8                      VP_ID;                      /* 0x08 */
     1208 +    U8                      VF_ID;                      /* 0x09 */
     1209 +    U16                     Reserved4;                  /* 0x0A */
     1210 +    U32                     Reserved5;                  /* 0x0C */
     1211 +    U32                     Reserved6;                  /* 0x10 */
     1212 +    U32                     Reserved7;                  /* 0x14 */
     1213 +    U32                     ImageOffset;                /* 0x18 */
     1214 +    U32                     ImageSize;                  /* 0x1C */
     1215 +    MPI25_SGE_IO_UNION      SGL;                        /* 0x20 */
     1216 +} MPI25_FW_UPLOAD_REQUEST, MPI2_POINTER PTR_MPI25_FW_UPLOAD_REQUEST,
     1217 +  Mpi25FWUploadRequest_t, MPI2_POINTER pMpi25FWUploadRequest_t;
     1218 +
     1219 +
1080 1220  /* FWUpload Reply message */
1081 1221  typedef struct _MPI2_FW_UPLOAD_REPLY
1082 1222  {
1083 1223      U8                      ImageType;                  /* 0x00 */
1084 1224      U8                      Reserved1;                  /* 0x01 */
1085 1225      U8                      MsgLength;                  /* 0x02 */
1086 1226      U8                      Function;                   /* 0x03 */
1087 1227      U16                     Reserved2;                  /* 0x04 */
1088 1228      U8                      Reserved3;                  /* 0x06 */
1089 1229      U8                      MsgFlags;                   /* 0x07 */
↓ open down ↓ 74 lines elided ↑ open up ↑
1164 1304  
1165 1305  /* Signature2 field */
1166 1306  #define MPI2_FW_HEADER_SIGNATURE2_OFFSET        (0x0C)
1167 1307  #define MPI2_FW_HEADER_SIGNATURE2               (0x5AA55AFA)
1168 1308  
1169 1309  
1170 1310  /* defines for using the ProductID field */
1171 1311  #define MPI2_FW_HEADER_PID_TYPE_MASK            (0xF000)
1172 1312  #define MPI2_FW_HEADER_PID_TYPE_SAS             (0x2000)
1173 1313  
1174      -#define MPI2_FW_HEADER_PID_PROD_MASK            (0x0F00)
1175      -#define MPI2_FW_HEADER_PID_PROD_A               (0x0000)
     1314 +#define MPI2_FW_HEADER_PID_PROD_MASK                    (0x0F00)
     1315 +#define MPI2_FW_HEADER_PID_PROD_A                       (0x0000)
     1316 +#define MPI2_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI   (0x0200)
     1317 +#define MPI2_FW_HEADER_PID_PROD_IR_SCSI                 (0x0700)
1176 1318  
1177 1319  #define MPI2_FW_HEADER_PID_FAMILY_MASK          (0x00FF)
1178      -/* SAS */
1179      -#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS      (0x0010)
1180      -#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS      (0x0011)
     1320 +/* SAS ProductID Family bits */
     1321 +#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS      (0x0013)
     1322 +#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS      (0x0014)
     1323 +#define MPI25_FW_HEADER_PID_FAMILY_3108_SAS     (0x0021)
1181 1324  
1182 1325  /* use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */
1183 1326  
1184 1327  /* use MPI2_IOCFACTS_CAPABILITY_ defines for IOCCapabilities field */
1185 1328  
1186 1329  
1187 1330  #define MPI2_FW_HEADER_IMAGESIZE_OFFSET         (0x2C)
1188 1331  #define MPI2_FW_HEADER_NEXTIMAGE_OFFSET         (0x30)
1189 1332  #define MPI2_FW_HEADER_VERNMHWAT_OFFSET         (0x64)
1190 1333  
↓ open down ↓ 195 lines elided ↑ open up ↑
1386 1529  
1387 1530  #define MPI2_INIT_IMAGE_SIGNATURE_BYTE_8        (0x5A)
1388 1531  #define MPI2_INIT_IMAGE_SIGNATURE_BYTE_9        (0xA5)
1389 1532  #define MPI2_INIT_IMAGE_SIGNATURE_BYTE_A        (0xEA)
1390 1533  #define MPI2_INIT_IMAGE_SIGNATURE_BYTE_B        (0x5A)
1391 1534  
1392 1535  /* defines for the ResetVector field */
1393 1536  #define MPI2_INIT_IMAGE_RESETVECTOR_OFFSET      (0x14)
1394 1537  
1395 1538  
     1539 +/****************************************************************************
     1540 +*  PowerManagementControl message
     1541 +****************************************************************************/
     1542 +
     1543 +/* PowerManagementControl Request message */
     1544 +typedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST
     1545 +{
     1546 +    U8                      Feature;                    /* 0x00 */
     1547 +    U8                      Reserved1;                  /* 0x01 */
     1548 +    U8                      ChainOffset;                /* 0x02 */
     1549 +    U8                      Function;                   /* 0x03 */
     1550 +    U16                     Reserved2;                  /* 0x04 */
     1551 +    U8                      Reserved3;                  /* 0x06 */
     1552 +    U8                      MsgFlags;                   /* 0x07 */
     1553 +    U8                      VP_ID;                      /* 0x08 */
     1554 +    U8                      VF_ID;                      /* 0x09 */
     1555 +    U16                     Reserved4;                  /* 0x0A */
     1556 +    U8                      Parameter1;                 /* 0x0C */
     1557 +    U8                      Parameter2;                 /* 0x0D */
     1558 +    U8                      Parameter3;                 /* 0x0E */
     1559 +    U8                      Parameter4;                 /* 0x0F */
     1560 +    U32                     Reserved5;                  /* 0x10 */
     1561 +    U32                     Reserved6;                  /* 0x14 */
     1562 +} MPI2_PWR_MGMT_CONTROL_REQUEST, MPI2_POINTER PTR_MPI2_PWR_MGMT_CONTROL_REQUEST,
     1563 +  Mpi2PwrMgmtControlRequest_t, MPI2_POINTER pMpi2PwrMgmtControlRequest_t;
     1564 +
     1565 +/* defines for the Feature field */
     1566 +#define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND       (0x01)
     1567 +#define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION   (0x02)
     1568 +#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK               (0x03)
     1569 +#define MPI2_PM_CONTROL_FEATURE_IOC_SPEED               (0x04)
     1570 +#define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC    (0x80)
     1571 +#define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC    (0xFF)
     1572 +
     1573 +/* parameter usage for the MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND Feature */
     1574 +/* Parameter1 contains a PHY number */
     1575 +/* Parameter2 indicates power condition action using these defines */
     1576 +#define MPI2_PM_CONTROL_PARAM2_PARTIAL                  (0x01)
     1577 +#define MPI2_PM_CONTROL_PARAM2_SLUMBER                  (0x02)
     1578 +#define MPI2_PM_CONTROL_PARAM2_EXIT_PWR_MGMT            (0x03)
     1579 +/* Parameter3 and Parameter4 are reserved */
     1580 +
     1581 +/* parameter usage for the MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION Feature */
     1582 +/* Parameter1 contains SAS port width modulation group number */
     1583 +/* Parameter2 indicates IOC action using these defines */
     1584 +#define MPI2_PM_CONTROL_PARAM2_REQUEST_OWNERSHIP        (0x01)
     1585 +#define MPI2_PM_CONTROL_PARAM2_CHANGE_MODULATION        (0x02)
     1586 +#define MPI2_PM_CONTROL_PARAM2_RELINQUISH_OWNERSHIP     (0x03)
     1587 +/* Parameter3 indicates desired modulation level using these defines */
     1588 +#define MPI2_PM_CONTROL_PARAM3_25_PERCENT               (0x00)
     1589 +#define MPI2_PM_CONTROL_PARAM3_50_PERCENT               (0x01)
     1590 +#define MPI2_PM_CONTROL_PARAM3_75_PERCENT               (0x02)
     1591 +#define MPI2_PM_CONTROL_PARAM3_100_PERCENT              (0x03)
     1592 +/* Parameter4 is reserved */
     1593 +
     1594 +/* parameter usage for the MPI2_PM_CONTROL_FEATURE_PCIE_LINK Feature */
     1595 +/* Parameter1 indicates desired PCIe link speed using these defines */
     1596 +#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS            (0x00)
     1597 +#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS            (0x01)
     1598 +#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS            (0x02)
     1599 +/* Parameter2 indicates desired PCIe link width using these defines */
     1600 +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1                 (0x01)
     1601 +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2                 (0x02)
     1602 +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4                 (0x04)
     1603 +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8                 (0x08)
     1604 +/* Parameter3 and Parameter4 are reserved */
     1605 +
     1606 +/* parameter usage for the MPI2_PM_CONTROL_FEATURE_IOC_SPEED Feature */
     1607 +/* Parameter1 indicates desired IOC hardware clock speed using these defines */
     1608 +#define MPI2_PM_CONTROL_PARAM1_FULL_IOC_SPEED           (0x01)
     1609 +#define MPI2_PM_CONTROL_PARAM1_HALF_IOC_SPEED           (0x02)
     1610 +#define MPI2_PM_CONTROL_PARAM1_QUARTER_IOC_SPEED        (0x04)
     1611 +#define MPI2_PM_CONTROL_PARAM1_EIGHTH_IOC_SPEED         (0x08)
     1612 +/* Parameter2, Parameter3, and Parameter4 are reserved */
     1613 +
     1614 +
     1615 +/* PowerManagementControl Reply message */
     1616 +typedef struct _MPI2_PWR_MGMT_CONTROL_REPLY
     1617 +{
     1618 +    U8                      Feature;                    /* 0x00 */
     1619 +    U8                      Reserved1;                  /* 0x01 */
     1620 +    U8                      MsgLength;                  /* 0x02 */
     1621 +    U8                      Function;                   /* 0x03 */
     1622 +    U16                     Reserved2;                  /* 0x04 */
     1623 +    U8                      Reserved3;                  /* 0x06 */
     1624 +    U8                      MsgFlags;                   /* 0x07 */
     1625 +    U8                      VP_ID;                      /* 0x08 */
     1626 +    U8                      VF_ID;                      /* 0x09 */
     1627 +    U16                     Reserved4;                  /* 0x0A */
     1628 +    U16                     Reserved5;                  /* 0x0C */
     1629 +    U16                     IOCStatus;                  /* 0x0E */
     1630 +    U32                     IOCLogInfo;                 /* 0x10 */
     1631 +} MPI2_PWR_MGMT_CONTROL_REPLY, MPI2_POINTER PTR_MPI2_PWR_MGMT_CONTROL_REPLY,
     1632 +  Mpi2PwrMgmtControlReply_t, MPI2_POINTER pMpi2PwrMgmtControlReply_t;
     1633 +
     1634 +
1396 1635  #endif
1397 1636  
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX