19b631363SMatt Jacob /* $FreeBSD$ */ 2098ca2bdSWarner Losh /*- 3b0a2fdeeSScott Long * Copyright (c) 2000-2005, LSI Logic Corporation and its contributors. 4b0a2fdeeSScott Long * All rights reserved. 5d3ecac66SMatt Jacob * 6d3ecac66SMatt Jacob * Redistribution and use in source and binary forms, with or without 7b0a2fdeeSScott Long * modification, are permitted provided that the following conditions are 8b0a2fdeeSScott Long * met: 9d3ecac66SMatt Jacob * 1. Redistributions of source code must retain the above copyright 10b0a2fdeeSScott Long * notice, this list of conditions and the following disclaimer. 11b0a2fdeeSScott Long * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12b0a2fdeeSScott Long * substantially similar to the "NO WARRANTY" disclaimer below 13b0a2fdeeSScott Long * ("Disclaimer") and any redistribution must be conditioned upon including 14b0a2fdeeSScott Long * a substantially similar Disclaimer requirement for further binary 15b0a2fdeeSScott Long * redistribution. 16b0a2fdeeSScott Long * 3. Neither the name of the LSI Logic Corporation nor the names of its 17b0a2fdeeSScott Long * contributors may be used to endorse or promote products derived from 18b0a2fdeeSScott Long * this software without specific prior written permission. 19d3ecac66SMatt Jacob * 20b0a2fdeeSScott Long * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21b0a2fdeeSScott Long * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22d3ecac66SMatt Jacob * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23b0a2fdeeSScott Long * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24b0a2fdeeSScott Long * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25b0a2fdeeSScott Long * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26b0a2fdeeSScott Long * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27b0a2fdeeSScott Long * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28b0a2fdeeSScott Long * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29b0a2fdeeSScott Long * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF THE COPYRIGHT 30b0a2fdeeSScott Long * OWNER OR CONTRIBUTOR IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 319b631363SMatt Jacob * 329b631363SMatt Jacob * 339de3c85cSMatt Jacob * Name: mpi_ioc.h 349b631363SMatt Jacob * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages 359b631363SMatt Jacob * Creation Date: August 11, 2000 369b631363SMatt Jacob * 379de3c85cSMatt Jacob * mpi_ioc.h Version: 01.05.09 389b631363SMatt Jacob * 399b631363SMatt Jacob * Version History 409b631363SMatt Jacob * --------------- 419b631363SMatt Jacob * 429b631363SMatt Jacob * Date Version Description 439b631363SMatt Jacob * -------- -------- ------------------------------------------------------ 449b631363SMatt Jacob * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 459b631363SMatt Jacob * 05-24-00 00.10.02 Added _MSG_IOC_INIT_REPLY structure. 469b631363SMatt Jacob * 06-06-00 01.00.01 Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY. 479b631363SMatt Jacob * 06-12-00 01.00.02 Added _MSG_PORT_ENABLE_REPLY structure. 489b631363SMatt Jacob * Added _MSG_EVENT_ACK_REPLY structure. 499b631363SMatt Jacob * Added _MSG_FW_DOWNLOAD_REPLY structure. 509b631363SMatt Jacob * Added _MSG_TOOLBOX_REPLY structure. 519b631363SMatt Jacob * 06-30-00 01.00.03 Added MaxLanBuckets to _PORT_FACT_REPLY structure. 529b631363SMatt Jacob * 07-27-00 01.00.04 Added _EVENT_DATA structure definitions for _SCSI, 539b631363SMatt Jacob * _LINK_STATUS, _LOOP_STATE and _LOGOUT. 549b631363SMatt Jacob * 08-11-00 01.00.05 Switched positions of MsgLength and Function fields in 559b631363SMatt Jacob * _MSG_EVENT_ACK_REPLY structure to match specification. 569b631363SMatt Jacob * 11-02-00 01.01.01 Original release for post 1.0 work. 579b631363SMatt Jacob * Added a value for Manufacturer to WhoInit. 589b631363SMatt Jacob * 12-04-00 01.01.02 Modified IOCFacts reply, added FWUpload messages, and 599b631363SMatt Jacob * removed toolbox message. 609b631363SMatt Jacob * 01-09-01 01.01.03 Added event enabled and disabled defines. 619b631363SMatt Jacob * Added structures for FwHeader and DataHeader. 629b631363SMatt Jacob * Added ImageType to FwUpload reply. 639b631363SMatt Jacob * 02-20-01 01.01.04 Started using MPI_POINTER. 649b631363SMatt Jacob * 02-27-01 01.01.05 Added event for RAID status change and its event data. 659b631363SMatt Jacob * Added IocNumber field to MSG_IOC_FACTS_REPLY. 669b631363SMatt Jacob * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER. 679b631363SMatt Jacob * Added structure offset comments. 689b631363SMatt Jacob * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE. 699b631363SMatt Jacob * 08-08-01 01.02.01 Original release for v1.2 work. 709b631363SMatt Jacob * New format for FWVersion and ProductId in 719b631363SMatt Jacob * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. 729b631363SMatt Jacob * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and 739b631363SMatt Jacob * related structure and defines. 749b631363SMatt Jacob * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. 759b631363SMatt Jacob * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. 769b631363SMatt Jacob * Replaced a reserved field in MSG_IOC_FACTS_REPLY with 779b631363SMatt Jacob * IOCExceptions and changed DataImageSize to reserved. 789b631363SMatt Jacob * Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and 799b631363SMatt Jacob * MPI_FW_UPLOAD_ITYPE_NVDATA. 809b631363SMatt Jacob * 09-28-01 01.02.03 Modified Event Data for Integrated RAID. 819b631363SMatt Jacob * 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field. 827fed69eeSMatt Jacob * 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY. 837fed69eeSMatt Jacob * 05-31-02 01.02.06 Added define for 847fed69eeSMatt Jacob * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID. 857fed69eeSMatt Jacob * Added AliasIndex to EVENT_DATA_LOGOUT structure. 867fed69eeSMatt Jacob * 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_. 87b0a2fdeeSScott Long * 06-26-03 01.02.08 Added new values to the product family defines. 889de3c85cSMatt Jacob * 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and 899de3c85cSMatt Jacob * added related defines. 909de3c85cSMatt Jacob * 05-11-04 01.03.01 Original release for MPI v1.3. 919de3c85cSMatt Jacob * 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT. 929de3c85cSMatt Jacob * Added three new fields to MSG_IOC_FACTS_REPLY. 939de3c85cSMatt Jacob * Defined four new bits for the IOCCapabilities field of 949de3c85cSMatt Jacob * the IOCFacts reply. 959de3c85cSMatt Jacob * Added two new PortTypes for the PortFacts reply. 969de3c85cSMatt Jacob * Added six new events along with their EventData 979de3c85cSMatt Jacob * structures. 989de3c85cSMatt Jacob * Added a new MsgFlag to the FwDownload request to 999de3c85cSMatt Jacob * indicate last segment. 1009de3c85cSMatt Jacob * Defined a new image type of boot loader. 1019de3c85cSMatt Jacob * Added FW family codes for SAS product families. 1029de3c85cSMatt Jacob * 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to 1039de3c85cSMatt Jacob * MSG_IOC_FACTS_REPLY. 1049de3c85cSMatt Jacob * 12-07-04 01.05.03 Added more defines for SAS Discovery Error event. 1059de3c85cSMatt Jacob * 12-09-04 01.05.04 Added Unsupported device to SAS Device event. 1069de3c85cSMatt Jacob * 01-15-05 01.05.05 Added event data for SAS SES Event. 1079de3c85cSMatt Jacob * 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define. 1089de3c85cSMatt Jacob * 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts 1099de3c85cSMatt Jacob * Reply and IOC Init Request. 1109de3c85cSMatt Jacob * 03-11-05 01.05.08 Added family code for 1068E family. 1119de3c85cSMatt Jacob * Removed IOCFacts Reply EEDP Capability bit. 1129de3c85cSMatt Jacob * 06-24-05 01.05.09 Added 5 new IOCFacts Reply IOCCapabilities bits. 1139de3c85cSMatt Jacob * Added Max SATA Targets to SAS Discovery Error event. 1149b631363SMatt Jacob * -------------------------------------------------------------------------- 1159b631363SMatt Jacob */ 1169b631363SMatt Jacob 1179b631363SMatt Jacob #ifndef MPI_IOC_H 1189b631363SMatt Jacob #define MPI_IOC_H 1199b631363SMatt Jacob 1209b631363SMatt Jacob 1219b631363SMatt Jacob /***************************************************************************** 1229b631363SMatt Jacob * 1239b631363SMatt Jacob * I O C M e s s a g e s 1249b631363SMatt Jacob * 1259b631363SMatt Jacob *****************************************************************************/ 1269b631363SMatt Jacob 1279b631363SMatt Jacob /****************************************************************************/ 1289b631363SMatt Jacob /* IOCInit message */ 1299b631363SMatt Jacob /****************************************************************************/ 1309b631363SMatt Jacob 1319b631363SMatt Jacob typedef struct _MSG_IOC_INIT 1329b631363SMatt Jacob { 1339b631363SMatt Jacob U8 WhoInit; /* 00h */ 1349b631363SMatt Jacob U8 Reserved; /* 01h */ 1359b631363SMatt Jacob U8 ChainOffset; /* 02h */ 1369b631363SMatt Jacob U8 Function; /* 03h */ 1379b631363SMatt Jacob U8 Flags; /* 04h */ 1389b631363SMatt Jacob U8 MaxDevices; /* 05h */ 1399b631363SMatt Jacob U8 MaxBuses; /* 06h */ 1409b631363SMatt Jacob U8 MsgFlags; /* 07h */ 1419b631363SMatt Jacob U32 MsgContext; /* 08h */ 1429b631363SMatt Jacob U16 ReplyFrameSize; /* 0Ch */ 1439b631363SMatt Jacob U8 Reserved1[2]; /* 0Eh */ 1449b631363SMatt Jacob U32 HostMfaHighAddr; /* 10h */ 1459b631363SMatt Jacob U32 SenseBufferHighAddr; /* 14h */ 1469de3c85cSMatt Jacob U32 ReplyFifoHostSignalingAddr; /* 18h */ 1479de3c85cSMatt Jacob SGE_SIMPLE_UNION HostPageBufferSGE; /* 1Ch */ 1489de3c85cSMatt Jacob U16 MsgVersion; /* 28h */ 1499de3c85cSMatt Jacob U16 HeaderVersion; /* 2Ah */ 1509b631363SMatt Jacob } MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT, 1519b631363SMatt Jacob IOCInit_t, MPI_POINTER pIOCInit_t; 1529b631363SMatt Jacob 1539b631363SMatt Jacob /* WhoInit values */ 1549b631363SMatt Jacob #define MPI_WHOINIT_NO_ONE (0x00) 1559b631363SMatt Jacob #define MPI_WHOINIT_SYSTEM_BIOS (0x01) 1569b631363SMatt Jacob #define MPI_WHOINIT_ROM_BIOS (0x02) 1579b631363SMatt Jacob #define MPI_WHOINIT_PCI_PEER (0x03) 1589b631363SMatt Jacob #define MPI_WHOINIT_HOST_DRIVER (0x04) 1599b631363SMatt Jacob #define MPI_WHOINIT_MANUFACTURER (0x05) 1609b631363SMatt Jacob 1619b631363SMatt Jacob /* Flags values */ 1629de3c85cSMatt Jacob #define MPI_IOCINIT_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04) 1639de3c85cSMatt Jacob #define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02) 1649b631363SMatt Jacob #define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01) 1659b631363SMatt Jacob 1669de3c85cSMatt Jacob /* MsgVersion */ 1679de3c85cSMatt Jacob #define MPI_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00) 1689de3c85cSMatt Jacob #define MPI_IOCINIT_MSGVERSION_MAJOR_SHIFT (8) 1699de3c85cSMatt Jacob #define MPI_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF) 1709de3c85cSMatt Jacob #define MPI_IOCINIT_MSGVERSION_MINOR_SHIFT (0) 1719de3c85cSMatt Jacob 1729de3c85cSMatt Jacob /* HeaderVersion */ 1739de3c85cSMatt Jacob #define MPI_IOCINIT_HEADERVERSION_UNIT_MASK (0xFF00) 1749de3c85cSMatt Jacob #define MPI_IOCINIT_HEADERVERSION_UNIT_SHIFT (8) 1759de3c85cSMatt Jacob #define MPI_IOCINIT_HEADERVERSION_DEV_MASK (0x00FF) 1769de3c85cSMatt Jacob #define MPI_IOCINIT_HEADERVERSION_DEV_SHIFT (0) 1779de3c85cSMatt Jacob 1789de3c85cSMatt Jacob 1799b631363SMatt Jacob typedef struct _MSG_IOC_INIT_REPLY 1809b631363SMatt Jacob { 1819b631363SMatt Jacob U8 WhoInit; /* 00h */ 1829b631363SMatt Jacob U8 Reserved; /* 01h */ 1839b631363SMatt Jacob U8 MsgLength; /* 02h */ 1849b631363SMatt Jacob U8 Function; /* 03h */ 1859b631363SMatt Jacob U8 Flags; /* 04h */ 1869b631363SMatt Jacob U8 MaxDevices; /* 05h */ 1879b631363SMatt Jacob U8 MaxBuses; /* 06h */ 1889b631363SMatt Jacob U8 MsgFlags; /* 07h */ 1899b631363SMatt Jacob U32 MsgContext; /* 08h */ 1909b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 1919b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 1929b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 1939b631363SMatt Jacob } MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY, 1949b631363SMatt Jacob IOCInitReply_t, MPI_POINTER pIOCInitReply_t; 1959b631363SMatt Jacob 1969b631363SMatt Jacob 1979b631363SMatt Jacob 1989b631363SMatt Jacob /****************************************************************************/ 1999b631363SMatt Jacob /* IOC Facts message */ 2009b631363SMatt Jacob /****************************************************************************/ 2019b631363SMatt Jacob 2029b631363SMatt Jacob typedef struct _MSG_IOC_FACTS 2039b631363SMatt Jacob { 2049b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 2059b631363SMatt Jacob U8 ChainOffset; /* 01h */ 2069b631363SMatt Jacob U8 Function; /* 02h */ 2079b631363SMatt Jacob U8 Reserved1[3]; /* 03h */ 2089b631363SMatt Jacob U8 MsgFlags; /* 04h */ 2099b631363SMatt Jacob U32 MsgContext; /* 08h */ 2109b631363SMatt Jacob } MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS, 2119b631363SMatt Jacob IOCFacts_t, MPI_POINTER pIOCFacts_t; 2129b631363SMatt Jacob 2139b631363SMatt Jacob typedef struct _MPI_FW_VERSION_STRUCT 2149b631363SMatt Jacob { 2159b631363SMatt Jacob U8 Dev; /* 00h */ 2169b631363SMatt Jacob U8 Unit; /* 01h */ 2179b631363SMatt Jacob U8 Minor; /* 02h */ 2189b631363SMatt Jacob U8 Major; /* 03h */ 2199b631363SMatt Jacob } MPI_FW_VERSION_STRUCT; 2209b631363SMatt Jacob 2219b631363SMatt Jacob typedef union _MPI_FW_VERSION 2229b631363SMatt Jacob { 2239b631363SMatt Jacob MPI_FW_VERSION_STRUCT Struct; 2249b631363SMatt Jacob U32 Word; 2259b631363SMatt Jacob } MPI_FW_VERSION; 2269b631363SMatt Jacob 2279b631363SMatt Jacob /* IOC Facts Reply */ 2289b631363SMatt Jacob typedef struct _MSG_IOC_FACTS_REPLY 2299b631363SMatt Jacob { 2309b631363SMatt Jacob U16 MsgVersion; /* 00h */ 2319b631363SMatt Jacob U8 MsgLength; /* 02h */ 2329b631363SMatt Jacob U8 Function; /* 03h */ 2337fed69eeSMatt Jacob U16 HeaderVersion; /* 04h */ 2349b631363SMatt Jacob U8 IOCNumber; /* 06h */ 2359b631363SMatt Jacob U8 MsgFlags; /* 07h */ 2369b631363SMatt Jacob U32 MsgContext; /* 08h */ 2379b631363SMatt Jacob U16 IOCExceptions; /* 0Ch */ 2389b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 2399b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 2409b631363SMatt Jacob U8 MaxChainDepth; /* 14h */ 2419b631363SMatt Jacob U8 WhoInit; /* 15h */ 2429b631363SMatt Jacob U8 BlockSize; /* 16h */ 2439b631363SMatt Jacob U8 Flags; /* 17h */ 2449b631363SMatt Jacob U16 ReplyQueueDepth; /* 18h */ 2459b631363SMatt Jacob U16 RequestFrameSize; /* 1Ah */ 2469b631363SMatt Jacob U16 Reserved_0101_FWVersion; /* 1Ch */ /* obsolete 16-bit FWVersion */ 2479b631363SMatt Jacob U16 ProductID; /* 1Eh */ 2489b631363SMatt Jacob U32 CurrentHostMfaHighAddr; /* 20h */ 2499b631363SMatt Jacob U16 GlobalCredits; /* 24h */ 2509b631363SMatt Jacob U8 NumberOfPorts; /* 26h */ 2519b631363SMatt Jacob U8 EventState; /* 27h */ 2529b631363SMatt Jacob U32 CurrentSenseBufferHighAddr; /* 28h */ 2539b631363SMatt Jacob U16 CurReplyFrameSize; /* 2Ch */ 2549b631363SMatt Jacob U8 MaxDevices; /* 2Eh */ 2559b631363SMatt Jacob U8 MaxBuses; /* 2Fh */ 2569b631363SMatt Jacob U32 FWImageSize; /* 30h */ 2579de3c85cSMatt Jacob U32 IOCCapabilities; /* 34h */ 2589b631363SMatt Jacob MPI_FW_VERSION FWVersion; /* 38h */ 2599de3c85cSMatt Jacob U16 HighPriorityQueueDepth; /* 3Ch */ 2609de3c85cSMatt Jacob U16 Reserved2; /* 3Eh */ 2619de3c85cSMatt Jacob SGE_SIMPLE_UNION HostPageBufferSGE; /* 40h */ 2629de3c85cSMatt Jacob U32 ReplyFifoHostSignalingAddr; /* 4Ch */ 2639b631363SMatt Jacob } MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY, 2649b631363SMatt Jacob IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t; 2659b631363SMatt Jacob 2669b631363SMatt Jacob #define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00) 2679de3c85cSMatt Jacob #define MPI_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8) 2689b631363SMatt Jacob #define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF) 2699de3c85cSMatt Jacob #define MPI_IOCFACTS_MSGVERSION_MINOR_SHIFT (0) 2709b631363SMatt Jacob 2719de3c85cSMatt Jacob #define MPI_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00) 2729de3c85cSMatt Jacob #define MPI_IOCFACTS_HDRVERSION_UNIT_SHIFT (8) 2739de3c85cSMatt Jacob #define MPI_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF) 2749de3c85cSMatt Jacob #define MPI_IOCFACTS_HDRVERSION_DEV_SHIFT (0) 2757fed69eeSMatt Jacob 2769b631363SMatt Jacob #define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001) 2777fed69eeSMatt Jacob #define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002) 2789de3c85cSMatt Jacob #define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004) 2799de3c85cSMatt Jacob #define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008) 2809b631363SMatt Jacob 2819b631363SMatt Jacob #define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01) 2829de3c85cSMatt Jacob #define MPI_IOCFACTS_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02) 2839de3c85cSMatt Jacob #define MPI_IOCFACTS_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04) 2849b631363SMatt Jacob 2859b631363SMatt Jacob #define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00) 2869b631363SMatt Jacob #define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01) 2879b631363SMatt Jacob 2889de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001) 2899de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002) 2909de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004) 2919de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008) 2929de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010) 2939de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020) 2949de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040) 2959de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_BIDIRECTIONAL (0x00000080) 2969de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100) 2979de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200) 2989de3c85cSMatt Jacob #define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400) 2999b631363SMatt Jacob 3009b631363SMatt Jacob 3019b631363SMatt Jacob /***************************************************************************** 3029b631363SMatt Jacob * 3039b631363SMatt Jacob * P o r t M e s s a g e s 3049b631363SMatt Jacob * 3059b631363SMatt Jacob *****************************************************************************/ 3069b631363SMatt Jacob 3079b631363SMatt Jacob /****************************************************************************/ 3089b631363SMatt Jacob /* Port Facts message and Reply */ 3099b631363SMatt Jacob /****************************************************************************/ 3109b631363SMatt Jacob 3119b631363SMatt Jacob typedef struct _MSG_PORT_FACTS 3129b631363SMatt Jacob { 3139b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 3149b631363SMatt Jacob U8 ChainOffset; /* 02h */ 3159b631363SMatt Jacob U8 Function; /* 03h */ 3169b631363SMatt Jacob U8 Reserved1[2]; /* 04h */ 3179b631363SMatt Jacob U8 PortNumber; /* 06h */ 3189b631363SMatt Jacob U8 MsgFlags; /* 07h */ 3199b631363SMatt Jacob U32 MsgContext; /* 08h */ 3209b631363SMatt Jacob } MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS, 3219b631363SMatt Jacob PortFacts_t, MPI_POINTER pPortFacts_t; 3229b631363SMatt Jacob 3239b631363SMatt Jacob typedef struct _MSG_PORT_FACTS_REPLY 3249b631363SMatt Jacob { 3259b631363SMatt Jacob U16 Reserved; /* 00h */ 3269b631363SMatt Jacob U8 MsgLength; /* 02h */ 3279b631363SMatt Jacob U8 Function; /* 03h */ 3289b631363SMatt Jacob U16 Reserved1; /* 04h */ 3299b631363SMatt Jacob U8 PortNumber; /* 06h */ 3309b631363SMatt Jacob U8 MsgFlags; /* 07h */ 3319b631363SMatt Jacob U32 MsgContext; /* 08h */ 3329b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 3339b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 3349b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 3359b631363SMatt Jacob U8 Reserved3; /* 14h */ 3369b631363SMatt Jacob U8 PortType; /* 15h */ 3379b631363SMatt Jacob U16 MaxDevices; /* 16h */ 3389b631363SMatt Jacob U16 PortSCSIID; /* 18h */ 3399b631363SMatt Jacob U16 ProtocolFlags; /* 1Ah */ 3409b631363SMatt Jacob U16 MaxPostedCmdBuffers; /* 1Ch */ 3419b631363SMatt Jacob U16 MaxPersistentIDs; /* 1Eh */ 3429b631363SMatt Jacob U16 MaxLanBuckets; /* 20h */ 3439b631363SMatt Jacob U16 Reserved4; /* 22h */ 3449b631363SMatt Jacob U32 Reserved5; /* 24h */ 3459b631363SMatt Jacob } MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY, 3469b631363SMatt Jacob PortFactsReply_t, MPI_POINTER pPortFactsReply_t; 3479b631363SMatt Jacob 3489b631363SMatt Jacob 3499b631363SMatt Jacob /* PortTypes values */ 3509b631363SMatt Jacob 3519b631363SMatt Jacob #define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00) 3529b631363SMatt Jacob #define MPI_PORTFACTS_PORTTYPE_SCSI (0x01) 3539b631363SMatt Jacob #define MPI_PORTFACTS_PORTTYPE_FC (0x10) 3549de3c85cSMatt Jacob #define MPI_PORTFACTS_PORTTYPE_ISCSI (0x20) 3559de3c85cSMatt Jacob #define MPI_PORTFACTS_PORTTYPE_SAS (0x30) 3569b631363SMatt Jacob 3579b631363SMatt Jacob /* ProtocolFlags values */ 3589b631363SMatt Jacob 3599b631363SMatt Jacob #define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR (0x01) 3609b631363SMatt Jacob #define MPI_PORTFACTS_PROTOCOL_LAN (0x02) 3619b631363SMatt Jacob #define MPI_PORTFACTS_PROTOCOL_TARGET (0x04) 3629b631363SMatt Jacob #define MPI_PORTFACTS_PROTOCOL_INITIATOR (0x08) 3639b631363SMatt Jacob 3649b631363SMatt Jacob 3659b631363SMatt Jacob /****************************************************************************/ 3669b631363SMatt Jacob /* Port Enable Message */ 3679b631363SMatt Jacob /****************************************************************************/ 3689b631363SMatt Jacob 3699b631363SMatt Jacob typedef struct _MSG_PORT_ENABLE 3709b631363SMatt Jacob { 3719b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 3729b631363SMatt Jacob U8 ChainOffset; /* 02h */ 3739b631363SMatt Jacob U8 Function; /* 03h */ 3749b631363SMatt Jacob U8 Reserved1[2]; /* 04h */ 3759b631363SMatt Jacob U8 PortNumber; /* 06h */ 3769b631363SMatt Jacob U8 MsgFlags; /* 07h */ 3779b631363SMatt Jacob U32 MsgContext; /* 08h */ 3789b631363SMatt Jacob } MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE, 3799b631363SMatt Jacob PortEnable_t, MPI_POINTER pPortEnable_t; 3809b631363SMatt Jacob 3819b631363SMatt Jacob typedef struct _MSG_PORT_ENABLE_REPLY 3829b631363SMatt Jacob { 3839b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 3849b631363SMatt Jacob U8 MsgLength; /* 02h */ 3859b631363SMatt Jacob U8 Function; /* 03h */ 3869b631363SMatt Jacob U8 Reserved1[2]; /* 04h */ 3879b631363SMatt Jacob U8 PortNumber; /* 05h */ 3889b631363SMatt Jacob U8 MsgFlags; /* 07h */ 3899b631363SMatt Jacob U32 MsgContext; /* 08h */ 3909b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 3919b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 3929b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 3939b631363SMatt Jacob } MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY, 3949b631363SMatt Jacob PortEnableReply_t, MPI_POINTER pPortEnableReply_t; 3959b631363SMatt Jacob 3969b631363SMatt Jacob 3979b631363SMatt Jacob /***************************************************************************** 3989b631363SMatt Jacob * 3999b631363SMatt Jacob * E v e n t M e s s a g e s 4009b631363SMatt Jacob * 4019b631363SMatt Jacob *****************************************************************************/ 4029b631363SMatt Jacob 4039b631363SMatt Jacob /****************************************************************************/ 4049b631363SMatt Jacob /* Event Notification messages */ 4059b631363SMatt Jacob /****************************************************************************/ 4069b631363SMatt Jacob 4079b631363SMatt Jacob typedef struct _MSG_EVENT_NOTIFY 4089b631363SMatt Jacob { 4099b631363SMatt Jacob U8 Switch; /* 00h */ 4109b631363SMatt Jacob U8 Reserved; /* 01h */ 4119b631363SMatt Jacob U8 ChainOffset; /* 02h */ 4129b631363SMatt Jacob U8 Function; /* 03h */ 4139b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 4149b631363SMatt Jacob U8 MsgFlags; /* 07h */ 4159b631363SMatt Jacob U32 MsgContext; /* 08h */ 4169b631363SMatt Jacob } MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY, 4179b631363SMatt Jacob EventNotification_t, MPI_POINTER pEventNotification_t; 4189b631363SMatt Jacob 4199b631363SMatt Jacob /* Event Notification Reply */ 4209b631363SMatt Jacob 4219b631363SMatt Jacob typedef struct _MSG_EVENT_NOTIFY_REPLY 4229b631363SMatt Jacob { 4239b631363SMatt Jacob U16 EventDataLength; /* 00h */ 4249b631363SMatt Jacob U8 MsgLength; /* 02h */ 4259b631363SMatt Jacob U8 Function; /* 03h */ 4269b631363SMatt Jacob U8 Reserved1[2]; /* 04h */ 4279b631363SMatt Jacob U8 AckRequired; /* 06h */ 4289b631363SMatt Jacob U8 MsgFlags; /* 07h */ 4299b631363SMatt Jacob U32 MsgContext; /* 08h */ 4309b631363SMatt Jacob U8 Reserved2[2]; /* 0Ch */ 4319b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 4329b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 4339b631363SMatt Jacob U32 Event; /* 14h */ 4349b631363SMatt Jacob U32 EventContext; /* 18h */ 4359b631363SMatt Jacob U32 Data[1]; /* 1Ch */ 4369b631363SMatt Jacob } MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY, 4379b631363SMatt Jacob EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t; 4389b631363SMatt Jacob 4399b631363SMatt Jacob /* Event Acknowledge */ 4409b631363SMatt Jacob 4419b631363SMatt Jacob typedef struct _MSG_EVENT_ACK 4429b631363SMatt Jacob { 4439b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 4449b631363SMatt Jacob U8 ChainOffset; /* 02h */ 4459b631363SMatt Jacob U8 Function; /* 03h */ 4469b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 4479b631363SMatt Jacob U8 MsgFlags; /* 07h */ 4489b631363SMatt Jacob U32 MsgContext; /* 08h */ 4499b631363SMatt Jacob U32 Event; /* 0Ch */ 4509b631363SMatt Jacob U32 EventContext; /* 10h */ 4519b631363SMatt Jacob } MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK, 4529b631363SMatt Jacob EventAck_t, MPI_POINTER pEventAck_t; 4539b631363SMatt Jacob 4549b631363SMatt Jacob typedef struct _MSG_EVENT_ACK_REPLY 4559b631363SMatt Jacob { 4569b631363SMatt Jacob U8 Reserved[2]; /* 00h */ 4579b631363SMatt Jacob U8 MsgLength; /* 02h */ 4589b631363SMatt Jacob U8 Function; /* 03h */ 4599b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 4609b631363SMatt Jacob U8 MsgFlags; /* 07h */ 4619b631363SMatt Jacob U32 MsgContext; /* 08h */ 4629b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 4639b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 4649b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 4659b631363SMatt Jacob } MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY, 4669b631363SMatt Jacob EventAckReply_t, MPI_POINTER pEventAckReply_t; 4679b631363SMatt Jacob 4689b631363SMatt Jacob /* Switch */ 4699b631363SMatt Jacob 4709b631363SMatt Jacob #define MPI_EVENT_NOTIFICATION_SWITCH_OFF (0x00) 4719b631363SMatt Jacob #define MPI_EVENT_NOTIFICATION_SWITCH_ON (0x01) 4729b631363SMatt Jacob 4739b631363SMatt Jacob /* Event */ 4749b631363SMatt Jacob 4759b631363SMatt Jacob #define MPI_EVENT_NONE (0x00000000) 4769b631363SMatt Jacob #define MPI_EVENT_LOG_DATA (0x00000001) 4779b631363SMatt Jacob #define MPI_EVENT_STATE_CHANGE (0x00000002) 4789b631363SMatt Jacob #define MPI_EVENT_UNIT_ATTENTION (0x00000003) 4799b631363SMatt Jacob #define MPI_EVENT_IOC_BUS_RESET (0x00000004) 4809b631363SMatt Jacob #define MPI_EVENT_EXT_BUS_RESET (0x00000005) 4819b631363SMatt Jacob #define MPI_EVENT_RESCAN (0x00000006) 4829b631363SMatt Jacob #define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007) 4839b631363SMatt Jacob #define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008) 4849b631363SMatt Jacob #define MPI_EVENT_LOGOUT (0x00000009) 4859b631363SMatt Jacob #define MPI_EVENT_EVENT_CHANGE (0x0000000A) 4869b631363SMatt Jacob #define MPI_EVENT_INTEGRATED_RAID (0x0000000B) 4879b631363SMatt Jacob #define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C) 4889b631363SMatt Jacob #define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D) 4899de3c85cSMatt Jacob #define MPI_EVENT_QUEUE_FULL (0x0000000E) 4909de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F) 4919de3c85cSMatt Jacob #define MPI_EVENT_SAS_SES (0x00000010) 4929de3c85cSMatt Jacob #define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011) 4939de3c85cSMatt Jacob #define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012) 4949de3c85cSMatt Jacob #define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013) 4959b631363SMatt Jacob 4969b631363SMatt Jacob /* AckRequired field values */ 4979b631363SMatt Jacob 4989b631363SMatt Jacob #define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00) 4999b631363SMatt Jacob #define MPI_EVENT_NOTIFICATION_ACK_REQUIRED (0x01) 5009b631363SMatt Jacob 5019b631363SMatt Jacob /* EventChange Event data */ 5029b631363SMatt Jacob 5039b631363SMatt Jacob typedef struct _EVENT_DATA_EVENT_CHANGE 5049b631363SMatt Jacob { 5059b631363SMatt Jacob U8 EventState; /* 00h */ 5069b631363SMatt Jacob U8 Reserved; /* 01h */ 5079b631363SMatt Jacob U16 Reserved1; /* 02h */ 5089b631363SMatt Jacob } EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE, 5099b631363SMatt Jacob EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t; 5109b631363SMatt Jacob 5119b631363SMatt Jacob /* SCSI Event data for Port, Bus and Device forms */ 5129b631363SMatt Jacob 5139b631363SMatt Jacob typedef struct _EVENT_DATA_SCSI 5149b631363SMatt Jacob { 5159b631363SMatt Jacob U8 TargetID; /* 00h */ 5169b631363SMatt Jacob U8 BusPort; /* 01h */ 5179b631363SMatt Jacob U16 Reserved; /* 02h */ 5189b631363SMatt Jacob } EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI, 5199b631363SMatt Jacob EventDataScsi_t, MPI_POINTER pEventDataScsi_t; 5209b631363SMatt Jacob 5219b631363SMatt Jacob /* SCSI Device Status Change Event data */ 5229b631363SMatt Jacob 5239b631363SMatt Jacob typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE 5249b631363SMatt Jacob { 5259b631363SMatt Jacob U8 TargetID; /* 00h */ 5269b631363SMatt Jacob U8 Bus; /* 01h */ 5279b631363SMatt Jacob U8 ReasonCode; /* 02h */ 5289b631363SMatt Jacob U8 LUN; /* 03h */ 5299b631363SMatt Jacob U8 ASC; /* 04h */ 5309b631363SMatt Jacob U8 ASCQ; /* 05h */ 5319b631363SMatt Jacob U16 Reserved; /* 06h */ 5329b631363SMatt Jacob } EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE, 5339b631363SMatt Jacob MPI_POINTER PTR_EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE, 5349b631363SMatt Jacob MpiEventDataScsiDeviceStatusChange_t, 5359b631363SMatt Jacob MPI_POINTER pMpiEventDataScsiDeviceStatusChange_t; 5369b631363SMatt Jacob 5379b631363SMatt Jacob /* MPI SCSI Device Status Change Event data ReasonCode values */ 5389b631363SMatt Jacob #define MPI_EVENT_SCSI_DEV_STAT_RC_ADDED (0x03) 5399b631363SMatt Jacob #define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04) 5409b631363SMatt Jacob #define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05) 5419b631363SMatt Jacob 5429de3c85cSMatt Jacob /* SAS Device Status Change Event data */ 5439de3c85cSMatt Jacob 5449de3c85cSMatt Jacob typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE 5459de3c85cSMatt Jacob { 5469de3c85cSMatt Jacob U8 TargetID; /* 00h */ 5479de3c85cSMatt Jacob U8 Bus; /* 01h */ 5489de3c85cSMatt Jacob U8 ReasonCode; /* 02h */ 5499de3c85cSMatt Jacob U8 Reserved; /* 03h */ 5509de3c85cSMatt Jacob U8 ASC; /* 04h */ 5519de3c85cSMatt Jacob U8 ASCQ; /* 05h */ 5529de3c85cSMatt Jacob U16 DevHandle; /* 06h */ 5539de3c85cSMatt Jacob U32 DeviceInfo; /* 08h */ 5549de3c85cSMatt Jacob U16 ParentDevHandle; /* 0Ch */ 5559de3c85cSMatt Jacob U8 PhyNum; /* 0Eh */ 5569de3c85cSMatt Jacob U8 Reserved1; /* 0Fh */ 5579de3c85cSMatt Jacob U64 SASAddress; /* 10h */ 5589de3c85cSMatt Jacob } EVENT_DATA_SAS_DEVICE_STATUS_CHANGE, 5599de3c85cSMatt Jacob MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE, 5609de3c85cSMatt Jacob MpiEventDataSasDeviceStatusChange_t, 5619de3c85cSMatt Jacob MPI_POINTER pMpiEventDataSasDeviceStatusChange_t; 5629de3c85cSMatt Jacob 5639de3c85cSMatt Jacob /* MPI SAS Device Status Change Event data ReasonCode values */ 5649de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03) 5659de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04) 5669de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05) 5679de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06) 5689de3c85cSMatt Jacob #define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07) 5699de3c85cSMatt Jacob 5709de3c85cSMatt Jacob 5719de3c85cSMatt Jacob /* SCSI Event data for Queue Full event */ 5729de3c85cSMatt Jacob 5739de3c85cSMatt Jacob typedef struct _EVENT_DATA_QUEUE_FULL 5749de3c85cSMatt Jacob { 5759de3c85cSMatt Jacob U8 TargetID; /* 00h */ 5769de3c85cSMatt Jacob U8 Bus; /* 01h */ 5779de3c85cSMatt Jacob U16 CurrentDepth; /* 02h */ 5789de3c85cSMatt Jacob } EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL, 5799de3c85cSMatt Jacob EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t; 5809de3c85cSMatt Jacob 5819de3c85cSMatt Jacob /* MPI Integrated RAID Event data */ 5829de3c85cSMatt Jacob 5839de3c85cSMatt Jacob typedef struct _EVENT_DATA_RAID 5849de3c85cSMatt Jacob { 5859de3c85cSMatt Jacob U8 VolumeID; /* 00h */ 5869de3c85cSMatt Jacob U8 VolumeBus; /* 01h */ 5879de3c85cSMatt Jacob U8 ReasonCode; /* 02h */ 5889de3c85cSMatt Jacob U8 PhysDiskNum; /* 03h */ 5899de3c85cSMatt Jacob U8 ASC; /* 04h */ 5909de3c85cSMatt Jacob U8 ASCQ; /* 05h */ 5919de3c85cSMatt Jacob U16 Reserved; /* 06h */ 5929de3c85cSMatt Jacob U32 SettingsStatus; /* 08h */ 5939de3c85cSMatt Jacob } EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID, 5949de3c85cSMatt Jacob MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t; 5959de3c85cSMatt Jacob 5969de3c85cSMatt Jacob /* MPI Integrated RAID Event data ReasonCode values */ 5979de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00) 5989de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01) 5999de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02) 6009de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03) 6019de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04) 6029de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05) 6039de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06) 6049de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07) 6059de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08) 6069de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09) 6079de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_SMART_DATA (0x0A) 6089de3c85cSMatt Jacob #define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B) 6099de3c85cSMatt Jacob 6109b631363SMatt Jacob /* MPI Link Status Change Event data */ 6119b631363SMatt Jacob 6129b631363SMatt Jacob typedef struct _EVENT_DATA_LINK_STATUS 6139b631363SMatt Jacob { 6149b631363SMatt Jacob U8 State; /* 00h */ 6159b631363SMatt Jacob U8 Reserved; /* 01h */ 6169b631363SMatt Jacob U16 Reserved1; /* 02h */ 6179b631363SMatt Jacob U8 Reserved2; /* 04h */ 6189b631363SMatt Jacob U8 Port; /* 05h */ 6199b631363SMatt Jacob U16 Reserved3; /* 06h */ 6209b631363SMatt Jacob } EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS, 6219b631363SMatt Jacob EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t; 6229b631363SMatt Jacob 6239b631363SMatt Jacob #define MPI_EVENT_LINK_STATUS_FAILURE (0x00000000) 6249b631363SMatt Jacob #define MPI_EVENT_LINK_STATUS_ACTIVE (0x00000001) 6259b631363SMatt Jacob 6269b631363SMatt Jacob /* MPI Loop State Change Event data */ 6279b631363SMatt Jacob 6289b631363SMatt Jacob typedef struct _EVENT_DATA_LOOP_STATE 6299b631363SMatt Jacob { 6309b631363SMatt Jacob U8 Character4; /* 00h */ 6319b631363SMatt Jacob U8 Character3; /* 01h */ 6329b631363SMatt Jacob U8 Type; /* 02h */ 6339b631363SMatt Jacob U8 Reserved; /* 03h */ 6349b631363SMatt Jacob U8 Reserved1; /* 04h */ 6359b631363SMatt Jacob U8 Port; /* 05h */ 6369b631363SMatt Jacob U16 Reserved2; /* 06h */ 6379b631363SMatt Jacob } EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE, 6389b631363SMatt Jacob EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t; 6399b631363SMatt Jacob 6409b631363SMatt Jacob #define MPI_EVENT_LOOP_STATE_CHANGE_LIP (0x0001) 6419b631363SMatt Jacob #define MPI_EVENT_LOOP_STATE_CHANGE_LPE (0x0002) 6429b631363SMatt Jacob #define MPI_EVENT_LOOP_STATE_CHANGE_LPB (0x0003) 6439b631363SMatt Jacob 6449b631363SMatt Jacob /* MPI LOGOUT Event data */ 6459b631363SMatt Jacob 6469b631363SMatt Jacob typedef struct _EVENT_DATA_LOGOUT 6479b631363SMatt Jacob { 6489b631363SMatt Jacob U32 NPortID; /* 00h */ 6497fed69eeSMatt Jacob U8 AliasIndex; /* 04h */ 6509b631363SMatt Jacob U8 Port; /* 05h */ 6519b631363SMatt Jacob U16 Reserved1; /* 06h */ 6529b631363SMatt Jacob } EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT, 6539b631363SMatt Jacob EventDataLogout_t, MPI_POINTER pEventDataLogout_t; 6549b631363SMatt Jacob 6557fed69eeSMatt Jacob #define MPI_EVENT_LOGOUT_ALL_ALIASES (0xFF) 6567fed69eeSMatt Jacob 6579de3c85cSMatt Jacob /* SAS SES Event data */ 6587fed69eeSMatt Jacob 6599de3c85cSMatt Jacob typedef struct _EVENT_DATA_SAS_SES 6609b631363SMatt Jacob { 6619de3c85cSMatt Jacob U8 PhyNum; /* 00h */ 6629de3c85cSMatt Jacob U8 Port; /* 01h */ 6639de3c85cSMatt Jacob U8 PortWidth; /* 02h */ 6649de3c85cSMatt Jacob U8 Reserved1; /* 04h */ 6659de3c85cSMatt Jacob } EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES, 6669de3c85cSMatt Jacob MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t; 6679b631363SMatt Jacob 6689de3c85cSMatt Jacob /* SAS Phy Link Status Event data */ 6699de3c85cSMatt Jacob 6709de3c85cSMatt Jacob typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS 6719de3c85cSMatt Jacob { 6729de3c85cSMatt Jacob U8 PhyNum; /* 00h */ 6739de3c85cSMatt Jacob U8 LinkRates; /* 01h */ 6749de3c85cSMatt Jacob U16 DevHandle; /* 02h */ 6759de3c85cSMatt Jacob U64 SASAddress; /* 04h */ 6769de3c85cSMatt Jacob } EVENT_DATA_SAS_PHY_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_SAS_PHY_LINK_STATUS, 6779de3c85cSMatt Jacob MpiEventDataSasPhyLinkStatus_t, MPI_POINTER pMpiEventDataSasPhyLinkStatus_t; 6789de3c85cSMatt Jacob 6799de3c85cSMatt Jacob /* defines for the LinkRates field of the SAS PHY Link Status event */ 6809de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_CURRENT_MASK (0xF0) 6819de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_CURRENT_SHIFT (4) 6829de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_MASK (0x0F) 6839de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_SHIFT (0) 6849de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_UNKNOWN (0x00) 6859de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_PHY_DISABLED (0x01) 6869de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_FAILED_SPEED_NEGOTIATION (0x02) 6879de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE (0x03) 6889de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_1_5 (0x08) 6899de3c85cSMatt Jacob #define MPI_EVENT_SAS_PLS_LR_RATE_3_0 (0x09) 6909de3c85cSMatt Jacob 6919de3c85cSMatt Jacob /* SAS Discovery Errror Event data */ 6929de3c85cSMatt Jacob 6939de3c85cSMatt Jacob typedef struct _EVENT_DATA_DISCOVERY_ERROR 6949de3c85cSMatt Jacob { 6959de3c85cSMatt Jacob U32 DiscoveryStatus; /* 00h */ 6969de3c85cSMatt Jacob U8 Port; /* 04h */ 6979de3c85cSMatt Jacob U8 Reserved1; /* 05h */ 6989de3c85cSMatt Jacob U16 Reserved2; /* 06h */ 6999de3c85cSMatt Jacob } EVENT_DATA_DISCOVERY_ERROR, MPI_POINTER PTR_EVENT_DATA_DISCOVERY_ERROR, 7009de3c85cSMatt Jacob EventDataDiscoveryError_t, MPI_POINTER pEventDataDiscoveryError_t; 7019de3c85cSMatt Jacob 7029de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_LOOP_DETECTED (0x00000001) 7039de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_UNADDRESSABLE_DEVICE (0x00000002) 7049de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_MULTIPLE_PORTS (0x00000004) 7059de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_EXPANDER_ERR (0x00000008) 7069de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_SMP_TIMEOUT (0x00000010) 7079de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_OUT_ROUTE_ENTRIES (0x00000020) 7089de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_INDEX_NOT_EXIST (0x00000040) 7099de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_SMP_FUNCTION_FAILED (0x00000080) 7109de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100) 7119de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200) 7129de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400) 7139de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800) 7149de3c85cSMatt Jacob #define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000) 7159b631363SMatt Jacob 7169b631363SMatt Jacob 7179b631363SMatt Jacob /***************************************************************************** 7189b631363SMatt Jacob * 7199b631363SMatt Jacob * F i r m w a r e L o a d M e s s a g e s 7209b631363SMatt Jacob * 7219b631363SMatt Jacob *****************************************************************************/ 7229b631363SMatt Jacob 7239b631363SMatt Jacob /****************************************************************************/ 7249b631363SMatt Jacob /* Firmware Download message and associated structures */ 7259b631363SMatt Jacob /****************************************************************************/ 7269b631363SMatt Jacob 7279b631363SMatt Jacob typedef struct _MSG_FW_DOWNLOAD 7289b631363SMatt Jacob { 7299b631363SMatt Jacob U8 ImageType; /* 00h */ 7309b631363SMatt Jacob U8 Reserved; /* 01h */ 7319b631363SMatt Jacob U8 ChainOffset; /* 02h */ 7329b631363SMatt Jacob U8 Function; /* 03h */ 7339b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 7349b631363SMatt Jacob U8 MsgFlags; /* 07h */ 7359b631363SMatt Jacob U32 MsgContext; /* 08h */ 7369b631363SMatt Jacob SGE_MPI_UNION SGL; /* 0Ch */ 7379b631363SMatt Jacob } MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD, 7389b631363SMatt Jacob FWDownload_t, MPI_POINTER pFWDownload_t; 7399b631363SMatt Jacob 7409de3c85cSMatt Jacob #define MPI_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01) 7419de3c85cSMatt Jacob 7429b631363SMatt Jacob #define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00) 7439b631363SMatt Jacob #define MPI_FW_DOWNLOAD_ITYPE_FW (0x01) 7449b631363SMatt Jacob #define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02) 7459b631363SMatt Jacob #define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03) 7469de3c85cSMatt Jacob #define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04) 7479b631363SMatt Jacob 7489b631363SMatt Jacob 7499b631363SMatt Jacob typedef struct _FWDownloadTCSGE 7509b631363SMatt Jacob { 7519b631363SMatt Jacob U8 Reserved; /* 00h */ 7529b631363SMatt Jacob U8 ContextSize; /* 01h */ 7539b631363SMatt Jacob U8 DetailsLength; /* 02h */ 7549b631363SMatt Jacob U8 Flags; /* 03h */ 7559b631363SMatt Jacob U32 Reserved_0100_Checksum; /* 04h */ /* obsolete Checksum */ 7569b631363SMatt Jacob U32 ImageOffset; /* 08h */ 7579b631363SMatt Jacob U32 ImageSize; /* 0Ch */ 7589b631363SMatt Jacob } FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE, 7599b631363SMatt Jacob FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t; 7609b631363SMatt Jacob 7619b631363SMatt Jacob /* Firmware Download reply */ 7629b631363SMatt Jacob typedef struct _MSG_FW_DOWNLOAD_REPLY 7639b631363SMatt Jacob { 7649b631363SMatt Jacob U8 ImageType; /* 00h */ 7659b631363SMatt Jacob U8 Reserved; /* 01h */ 7669b631363SMatt Jacob U8 MsgLength; /* 02h */ 7679b631363SMatt Jacob U8 Function; /* 03h */ 7689b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 7699b631363SMatt Jacob U8 MsgFlags; /* 07h */ 7709b631363SMatt Jacob U32 MsgContext; /* 08h */ 7719b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 7729b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 7739b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 7749b631363SMatt Jacob } MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY, 7759b631363SMatt Jacob FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t; 7769b631363SMatt Jacob 7779b631363SMatt Jacob 7789b631363SMatt Jacob /****************************************************************************/ 7799b631363SMatt Jacob /* Firmware Upload message and associated structures */ 7809b631363SMatt Jacob /****************************************************************************/ 7819b631363SMatt Jacob 7829b631363SMatt Jacob typedef struct _MSG_FW_UPLOAD 7839b631363SMatt Jacob { 7849b631363SMatt Jacob U8 ImageType; /* 00h */ 7859b631363SMatt Jacob U8 Reserved; /* 01h */ 7869b631363SMatt Jacob U8 ChainOffset; /* 02h */ 7879b631363SMatt Jacob U8 Function; /* 03h */ 7889b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 7899b631363SMatt Jacob U8 MsgFlags; /* 07h */ 7909b631363SMatt Jacob U32 MsgContext; /* 08h */ 7919b631363SMatt Jacob SGE_MPI_UNION SGL; /* 0Ch */ 7929b631363SMatt Jacob } MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD, 7939b631363SMatt Jacob FWUpload_t, MPI_POINTER pFWUpload_t; 7949b631363SMatt Jacob 7959b631363SMatt Jacob #define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00) 7969b631363SMatt Jacob #define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01) 7979b631363SMatt Jacob #define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02) 7989b631363SMatt Jacob #define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03) 7999de3c85cSMatt Jacob #define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04) 8009de3c85cSMatt Jacob #define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05) 8019b631363SMatt Jacob 8029b631363SMatt Jacob typedef struct _FWUploadTCSGE 8039b631363SMatt Jacob { 8049b631363SMatt Jacob U8 Reserved; /* 00h */ 8059b631363SMatt Jacob U8 ContextSize; /* 01h */ 8069b631363SMatt Jacob U8 DetailsLength; /* 02h */ 8079b631363SMatt Jacob U8 Flags; /* 03h */ 8089b631363SMatt Jacob U32 Reserved1; /* 04h */ 8099b631363SMatt Jacob U32 ImageOffset; /* 08h */ 8109b631363SMatt Jacob U32 ImageSize; /* 0Ch */ 8119b631363SMatt Jacob } FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE, 8129b631363SMatt Jacob FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t; 8139b631363SMatt Jacob 8149b631363SMatt Jacob /* Firmware Upload reply */ 8159b631363SMatt Jacob typedef struct _MSG_FW_UPLOAD_REPLY 8169b631363SMatt Jacob { 8179b631363SMatt Jacob U8 ImageType; /* 00h */ 8189b631363SMatt Jacob U8 Reserved; /* 01h */ 8199b631363SMatt Jacob U8 MsgLength; /* 02h */ 8209b631363SMatt Jacob U8 Function; /* 03h */ 8219b631363SMatt Jacob U8 Reserved1[3]; /* 04h */ 8229b631363SMatt Jacob U8 MsgFlags; /* 07h */ 8239b631363SMatt Jacob U32 MsgContext; /* 08h */ 8249b631363SMatt Jacob U16 Reserved2; /* 0Ch */ 8259b631363SMatt Jacob U16 IOCStatus; /* 0Eh */ 8269b631363SMatt Jacob U32 IOCLogInfo; /* 10h */ 8279b631363SMatt Jacob U32 ActualImageSize; /* 14h */ 8289b631363SMatt Jacob } MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY, 8299b631363SMatt Jacob FWUploadReply_t, MPI_POINTER pFWUploadReply_t; 8309b631363SMatt Jacob 8319b631363SMatt Jacob 8329b631363SMatt Jacob typedef struct _MPI_FW_HEADER 8339b631363SMatt Jacob { 8349b631363SMatt Jacob U32 ArmBranchInstruction0; /* 00h */ 8359b631363SMatt Jacob U32 Signature0; /* 04h */ 8369b631363SMatt Jacob U32 Signature1; /* 08h */ 8379b631363SMatt Jacob U32 Signature2; /* 0Ch */ 8389b631363SMatt Jacob U32 ArmBranchInstruction1; /* 10h */ 8399b631363SMatt Jacob U32 ArmBranchInstruction2; /* 14h */ 8409b631363SMatt Jacob U32 Reserved; /* 18h */ 8419b631363SMatt Jacob U32 Checksum; /* 1Ch */ 8429b631363SMatt Jacob U16 VendorId; /* 20h */ 8439b631363SMatt Jacob U16 ProductId; /* 22h */ 8449b631363SMatt Jacob MPI_FW_VERSION FWVersion; /* 24h */ 8459b631363SMatt Jacob U32 SeqCodeVersion; /* 28h */ 8469b631363SMatt Jacob U32 ImageSize; /* 2Ch */ 8479b631363SMatt Jacob U32 NextImageHeaderOffset; /* 30h */ 8489b631363SMatt Jacob U32 LoadStartAddress; /* 34h */ 8499b631363SMatt Jacob U32 IopResetVectorValue; /* 38h */ 8509b631363SMatt Jacob U32 IopResetRegAddr; /* 3Ch */ 8519b631363SMatt Jacob U32 VersionNameWhat; /* 40h */ 8529b631363SMatt Jacob U8 VersionName[32]; /* 44h */ 8539b631363SMatt Jacob U32 VendorNameWhat; /* 64h */ 8549b631363SMatt Jacob U8 VendorName[32]; /* 68h */ 8559b631363SMatt Jacob } MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER, 8569b631363SMatt Jacob MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t; 8579b631363SMatt Jacob 8589b631363SMatt Jacob #define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840) 8599b631363SMatt Jacob 8609b631363SMatt Jacob /* defines for using the ProductId field */ 8619b631363SMatt Jacob #define MPI_FW_HEADER_PID_TYPE_MASK (0xF000) 8629b631363SMatt Jacob #define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000) 8639b631363SMatt Jacob #define MPI_FW_HEADER_PID_TYPE_FC (0x1000) 8649de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_TYPE_SAS (0x2000) 8659b631363SMatt Jacob 8667fed69eeSMatt Jacob #define MPI_FW_HEADER_SIGNATURE_0 (0x5AEAA55A) 8677fed69eeSMatt Jacob #define MPI_FW_HEADER_SIGNATURE_1 (0xA55AEAA5) 8687fed69eeSMatt Jacob #define MPI_FW_HEADER_SIGNATURE_2 (0x5AA55AEA) 8697fed69eeSMatt Jacob 8709b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_MASK (0x0F00) 8719b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100) 8729b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200) 8739b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_TARGET_SCSI (0x0300) 8749b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_IM_SCSI (0x0400) 8759b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_IS_SCSI (0x0500) 8769b631363SMatt Jacob #define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600) 8779de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_PROD_IR_SCSI (0x0700) 8789b631363SMatt Jacob 8799b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF) 8809de3c85cSMatt Jacob /* SCSI */ 8819b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001) 8829b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002) 8839b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003) 8849b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1030C0_SCSI (0x0004) 8859b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1020A0_SCSI (0x0005) 8869b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1020B0_SCSI (0x0006) 8879b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1020B1_SCSI (0x0007) 8889b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008) 8899b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009) 8909b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A) 891b0a2fdeeSScott Long #define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI (0x000B) 892b0a2fdeeSScott Long #define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C) 8939de3c85cSMatt Jacob /* Fibre Channel */ 8949b631363SMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000) 8959de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001) /* 919 and 929 */ 8969de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002) /* 919X and 929X */ 8979de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003) /* 919XL and 929XL */ 8989de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_939X_FC (0x0004) /* 939X and 949X */ 8999de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005) 9009de3c85cSMatt Jacob /* SAS */ 9019de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001) 9029de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1068_SAS (0x0002) 9039de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_1078_SAS (0x0003) 9049de3c85cSMatt Jacob #define MPI_FW_HEADER_PID_FAMILY_106xE_SAS (0x0004) /* 1068E, 1066E, and 1064E */ 9059b631363SMatt Jacob 9069b631363SMatt Jacob typedef struct _MPI_EXT_IMAGE_HEADER 9079b631363SMatt Jacob { 9089b631363SMatt Jacob U8 ImageType; /* 00h */ 9099b631363SMatt Jacob U8 Reserved; /* 01h */ 9109b631363SMatt Jacob U16 Reserved1; /* 02h */ 9119b631363SMatt Jacob U32 Checksum; /* 04h */ 9129b631363SMatt Jacob U32 ImageSize; /* 08h */ 9139b631363SMatt Jacob U32 NextImageHeaderOffset; /* 0Ch */ 9149b631363SMatt Jacob U32 LoadStartAddress; /* 10h */ 9159b631363SMatt Jacob U32 Reserved2; /* 14h */ 9169b631363SMatt Jacob } MPI_EXT_IMAGE_HEADER, MPI_POINTER PTR_MPI_EXT_IMAGE_HEADER, 9179b631363SMatt Jacob MpiExtImageHeader_t, MPI_POINTER pMpiExtImageHeader_t; 9189b631363SMatt Jacob 9199b631363SMatt Jacob /* defines for the ImageType field */ 9209b631363SMatt Jacob #define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00) 9219b631363SMatt Jacob #define MPI_EXT_IMAGE_TYPE_FW (0x01) 9229b631363SMatt Jacob #define MPI_EXT_IMAGE_TYPE_NVDATA (0x03) 9239de3c85cSMatt Jacob #define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04) 9249b631363SMatt Jacob 9259b631363SMatt Jacob #endif 926