patch-2.4.7 linux/drivers/message/fusion/lsi/mpi_ioc.h

Next file: linux/drivers/message/fusion/lsi/mpi_lan.h
Previous file: linux/drivers/message/fusion/lsi/mpi_init.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.6/linux/drivers/message/fusion/lsi/mpi_ioc.h linux/drivers/message/fusion/lsi/mpi_ioc.h
@@ -0,0 +1,583 @@
+/*
+ *  Copyright (c) 2000-2001 LSI Logic Corporation.
+ *
+ *
+ *           Name:  MPI_IOC.H
+ *          Title:  MPI IOC, Port, Event, FW Load, and ToolBox messages
+ *  Creation Date:  August 11, 2000
+ *
+ *    MPI Version:  01.01.05
+ *
+ *  Version History
+ *  ---------------
+ *
+ *  Date      Version   Description
+ *  --------  --------  ------------------------------------------------------
+ *  05-08-00  00.10.01  Original release for 0.10 spec dated 4/26/2000.
+ *  05-24-00  00.10.02  Added _MSG_IOC_INIT_REPLY structure.
+ *  06-06-00  01.00.01  Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY.
+ *  06-12-00  01.00.02  Added _MSG_PORT_ENABLE_REPLY structure.
+ *                      Added _MSG_EVENT_ACK_REPLY structure.
+ *                      Added _MSG_FW_DOWNLOAD_REPLY structure.
+ *                      Added _MSG_TOOLBOX_REPLY structure.
+ *  06-30-00  01.00.03  Added MaxLanBuckets to _PORT_FACT_REPLY structure.
+ *  07-27-00  01.00.04  Added _EVENT_DATA structure definitions for _SCSI,
+ *                      _LINK_STATUS, _LOOP_STATE and _LOGOUT.
+ *  08-11-00  01.00.05  Switched positions of MsgLength and Function fields in
+ *                      _MSG_EVENT_ACK_REPLY structure to match specification.
+ *  11-02-00  01.01.01  Original release for post 1.0 work.
+ *                      Added a value for Manufacturer to WhoInit.
+ *  12-04-00  01.01.02  Modified IOCFacts reply, added FWUpload messages, and
+ *                      removed toolbox message.
+ *  01-09-01  01.01.03  Added event enabled and disabled defines.
+ *                      Added structures for FwHeader and DataHeader.
+ *                      Added ImageType to FwUpload reply.
+ *  02-20-01  01.01.04  Started using MPI_POINTER.
+ *  02-27-01  01.01.05  Added event for RAID status change and its event data.
+ *                      Added IocNumber field to MSG_IOC_FACTS_REPLY.
+ *  --------------------------------------------------------------------------
+ */
+
+#ifndef MPI_IOC_H
+#define MPI_IOC_H
+
+
+/*****************************************************************************
+*
+*               I O C    M e s s a g e s
+*
+*****************************************************************************/
+
+/****************************************************************************/
+/*  IOCInit message                                                         */
+/****************************************************************************/
+
+typedef struct _MSG_IOC_INIT
+{
+    U8                      WhoInit;
+    U8                      Reserved;
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Flags;
+    U8                      MaxDevices;
+    U8                      MaxBuses;
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     ReplyFrameSize;
+    U8                      Reserved1[2];
+    U32                     HostMfaHighAddr;
+    U32                     SenseBufferHighAddr;
+} MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
+  IOCInit_t, MPI_POINTER pIOCInit_t;
+
+typedef struct _MSG_IOC_INIT_REPLY
+{
+    U8                      WhoInit;
+    U8                      Reserved;
+    U8                      MsgLength;
+    U8                      Function;
+    U8                      Flags;
+    U8                      MaxDevices;
+    U8                      MaxBuses;
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+} MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY,
+  IOCInitReply_t, MPI_POINTER pIOCInitReply_t;
+
+/* WhoInit values */
+
+#define MPI_WHOINIT_NO_ONE                      (0x00)
+#define MPI_WHOINIT_SYSTEM_BIOS                 (0x01)
+#define MPI_WHOINIT_ROM_BIOS                    (0x02)
+#define MPI_WHOINIT_PCI_PEER                    (0x03)
+#define MPI_WHOINIT_HOST_DRIVER                 (0x04)
+#define MPI_WHOINIT_MANUFACTURER                (0x05)
+
+
+/****************************************************************************/
+/*  IOC Facts message                                                       */
+/****************************************************************************/
+
+typedef struct _MSG_IOC_FACTS
+{
+    U8                      Reserved[2];
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+} MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS,
+  IOCFacts_t, MPI_POINTER pIOCFacts_t;
+
+/* IOC Facts Reply */
+
+typedef struct _MSG_IOC_FACTS_REPLY
+{
+    U16                     MsgVersion;
+    U8                      MsgLength;
+    U8                      Function;
+    U16                     Reserved;
+    U8                      IOCNumber;
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+    U8                      MaxChainDepth;
+    U8                      WhoInit;
+    U8                      BlockSize;
+    U8                      Flags;
+    U16                     ReplyQueueDepth;
+    U16                     RequestFrameSize;
+    U16                     FWVersion;
+    U16                     ProductID;
+    U32                     CurrentHostMfaHighAddr;
+    U16                     GlobalCredits;
+    U8                      NumberOfPorts;
+    U8                      EventState;
+    U32                     CurrentSenseBufferHighAddr;
+    U16                     CurReplyFrameSize;
+    U8                      MaxDevices;
+    U8                      MaxBuses;
+    U32                     FWImageSize;
+    U32                     DataImageSize;
+} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
+  IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
+
+#define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK      (0xFF00)
+#define MPI_IOCFACTS_MSGVERSION_MINOR_MASK      (0x00FF)
+
+#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT     (0x01)
+#define MPI_IOCFACTS_FLAGS_DATA_IMAGE_UPLOAD    (0x02)
+
+#define MPI_IOCFACTS_EVENTSTATE_DISABLED        (0x00)
+#define MPI_IOCFACTS_EVENTSTATE_ENABLED         (0x01)
+
+
+
+/*****************************************************************************
+*
+*               P o r t    M e s s a g e s
+*
+*****************************************************************************/
+
+/****************************************************************************/
+/*  Port Facts message and Reply                                            */
+/****************************************************************************/
+
+typedef struct _MSG_PORT_FACTS
+{
+     U8                     Reserved[2];
+     U8                     ChainOffset;
+     U8                     Function;
+     U8                     Reserved1[2];
+     U8                     PortNumber;
+     U8                     MsgFlags;
+     U32                    MsgContext;
+} MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS,
+  PortFacts_t, MPI_POINTER pPortFacts_t;
+
+typedef struct _MSG_PORT_FACTS_REPLY
+{
+     U16                    Reserved;
+     U8                     MsgLength;
+     U8                     Function;
+     U16                    Reserved1;
+     U8                     PortNumber;
+     U8                     MsgFlags;
+     U32                    MsgContext;
+     U16                    Reserved2;
+     U16                    IOCStatus;
+     U32                    IOCLogInfo;
+     U8                     Reserved3;
+     U8                     PortType;
+     U16                    MaxDevices;
+     U16                    PortSCSIID;
+     U16                    ProtocolFlags;
+     U16                    MaxPostedCmdBuffers;
+     U16                    MaxPersistentIDs;
+     U16                    MaxLanBuckets;
+     U16                    Reserved4;
+     U32                    Reserved5;
+} MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY,
+  PortFactsReply_t, MPI_POINTER pPortFactsReply_t;
+
+
+/* PortTypes values */
+
+#define MPI_PORTFACTS_PORTTYPE_INACTIVE         (0x00)
+#define MPI_PORTFACTS_PORTTYPE_SCSI             (0x01)
+#define MPI_PORTFACTS_PORTTYPE_FC               (0x10)
+
+/* ProtocolFlags values */
+
+#define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR       (0x01)
+#define MPI_PORTFACTS_PROTOCOL_LAN              (0x02)
+#define MPI_PORTFACTS_PROTOCOL_TARGET           (0x04)
+#define MPI_PORTFACTS_PROTOCOL_INITIATOR        (0x08)
+
+
+/****************************************************************************/
+/*  Port Enable Message                                                     */
+/****************************************************************************/
+
+typedef struct _MSG_PORT_ENABLE
+{
+    U8                      Reserved[2];
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[2];
+    U8                      PortNumber;
+    U8                      MsgFlags;
+    U32                     MsgContext;
+} MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE,
+  PortEnable_t, MPI_POINTER pPortEnable_t;
+
+typedef struct _MSG_PORT_ENABLE_REPLY
+{
+    U8                      Reserved[2];
+    U8                      MsgLength;
+    U8                      Function;
+    U8                      Reserved1[2];
+    U8                      PortNumber;
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+} MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY,
+  PortEnableReply_t, MPI_POINTER pPortEnableReply_t;
+
+
+/*****************************************************************************
+*
+*               E v e n t    M e s s a g e s
+*
+*****************************************************************************/
+
+/****************************************************************************/
+/*  Event Notification messages                                             */
+/****************************************************************************/
+
+typedef struct _MSG_EVENT_NOTIFY
+{
+    U8                      Switch;
+    U8                      Reserved;
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+} MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY,
+  EventNotification_t, MPI_POINTER pEventNotification_t;
+
+/* Event Notification Reply */
+
+typedef struct _MSG_EVENT_NOTIFY_REPLY
+{
+     U16                    EventDataLength;
+     U8                     MsgLength;
+     U8                     Function;
+     U8                     Reserved1[2];
+     U8                     AckRequired;
+     U8                     MsgFlags;
+     U32                    MsgContext;
+     U8                     Reserved2[2];
+     U16                    IOCStatus;
+     U32                    IOCLogInfo;
+     U32                    Event;
+     U32                    EventContext;
+     U32                    Data[1];
+} MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY,
+  EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t;
+
+/* Event Acknowledge */
+
+typedef struct _MSG_EVENT_ACK
+{
+    U8                      Reserved[2];
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U32                     Event;
+    U32                     EventContext;
+} MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK,
+  EventAck_t, MPI_POINTER pEventAck_t;
+
+typedef struct _MSG_EVENT_ACK_REPLY
+{
+    U8                      Reserved[2];
+    U8                      MsgLength;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+} MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY,
+  EventAckReply_t, MPI_POINTER pEventAckReply_t;
+
+
+/* Switch */
+
+#define MPI_EVENT_NOTIFICATION_SWITCH_OFF   (0x00)
+#define MPI_EVENT_NOTIFICATION_SWITCH_ON    (0x01)
+
+/* Event */
+
+#define MPI_EVENT_NONE                      (0x00000000)
+#define MPI_EVENT_LOG_DATA                  (0x00000001)
+#define MPI_EVENT_STATE_CHANGE              (0x00000002)
+#define MPI_EVENT_UNIT_ATTENTION            (0x00000003)
+#define MPI_EVENT_IOC_BUS_RESET             (0x00000004)
+#define MPI_EVENT_EXT_BUS_RESET             (0x00000005)
+#define MPI_EVENT_RESCAN                    (0x00000006)
+#define MPI_EVENT_LINK_STATUS_CHANGE        (0x00000007)
+#define MPI_EVENT_LOOP_STATE_CHANGE         (0x00000008)
+#define MPI_EVENT_LOGOUT                    (0x00000009)
+#define MPI_EVENT_EVENT_CHANGE              (0x0000000A)
+#define MPI_EVENT_RAID_STATUS_CHANGE        (0x0000000B)
+
+/* AckRequired field values */
+
+#define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
+#define MPI_EVENT_NOTIFICATION_ACK_REQUIRED     (0x01)
+
+/* SCSI Event data for Port, Bus and Device forms) */
+
+typedef struct _EVENT_DATA_SCSI
+{
+    U8                      TargetID;
+    U8                      BusPort;
+    U16                     Reserved;
+} EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI,
+  EventDataScsi_t, MPI_POINTER pEventDataScsi_t;
+
+/* MPI Link Status Change Event data */
+
+typedef struct _EVENT_DATA_LINK_STATUS
+{
+    U8                      State;
+    U8                      Reserved;
+    U16                     Reserved1;
+    U8                      Reserved2;
+    U8                      Port;
+    U16                     Reserved3;
+} EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS,
+  EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t;
+
+#define MPI_EVENT_LINK_STATUS_FAILURE       (0x00000000)
+#define MPI_EVENT_LINK_STATUS_ACTIVE        (0x00000001)
+
+/* MPI Loop State Change Event data */
+
+typedef struct _EVENT_DATA_LOOP_STATE
+{
+    U8                      Character4;
+    U8                      Character3;
+    U8                      Type;
+    U8                      Reserved;
+    U8                      Reserved1;
+    U8                      Port;
+    U16                     Reserved2;
+} EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE,
+  EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t;
+
+#define MPI_EVENT_LOOP_STATE_CHANGE_LIP     (0x0001)
+#define MPI_EVENT_LOOP_STATE_CHANGE_LPE     (0x0002)
+#define MPI_EVENT_LOOP_STATE_CHANGE_LPB     (0x0003)
+
+/* MPI LOGOUT Event data */
+
+typedef struct _EVENT_DATA_LOGOUT
+{
+    U32                     NPortID;
+    U8                      Reserved;
+    U8                      Port;
+    U16                     Reserved1;
+} EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT,
+  EventDataLogout_t, MPI_POINTER pEventDataLogout_t;
+
+/* MPI RAID Status Change Event data */
+
+typedef struct _EVENT_DATA_RAID_STATUS_CHANGE
+{
+    U8                      VolumeTargetID;
+    U8                      VolumeBus;
+    U8                      ReasonCode;
+    U8                      PhysDiskNum;
+    U8                      ASC;
+    U8                      ASCQ;
+    U16                     Reserved;
+} EVENT_DATA_RAID_STATUS_CHANGE, MPI_POINTER PTR_EVENT_DATA_RAID_STATUS_CHANGE,
+  MpiEventDataRaidStatusChange_t, MPI_POINTER pMpiEventDataRaidStatusChange_t;
+
+
+/* MPI RAID Status Change Event data ReasonCode values */
+
+#define MPI_EVENT_RAID_DATA_RC_VOLUME_OPTIMAL       (0x00)
+#define MPI_EVENT_RAID_DATA_RC_VOLUME_DEGRADED      (0x01)
+#define MPI_EVENT_RAID_DATA_RC_STARTED_RESYNC       (0x02)
+#define MPI_EVENT_RAID_DATA_RC_DISK_ADDED           (0x03)
+#define MPI_EVENT_RAID_DATA_RC_DISK_NOT_RESPONDING  (0x04)
+#define MPI_EVENT_RAID_DATA_RC_SMART_DATA           (0x05)
+
+
+/*****************************************************************************
+*
+*               F i r m w a r e    L o a d    M e s s a g e s
+*
+*****************************************************************************/
+
+/****************************************************************************/
+/*  Firmware Download message and associated structures                     */
+/****************************************************************************/
+
+typedef struct _MSG_FW_DOWNLOAD
+{
+    U8                      ImageType;
+    U8                      Reserved;
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    SGE_MPI_UNION           SGL;
+} MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
+  FWDownload_t, MPI_POINTER pFWDownload_t;
+
+#define MPI_FW_DOWNLOAD_ITYPE_RESERVED      (0x00)
+#define MPI_FW_DOWNLOAD_ITYPE_FW            (0x01)
+#define MPI_FW_DOWNLOAD_ITYPE_BIOS          (0x02)
+
+
+typedef struct _FWDownloadTCSGE
+{
+    U8                      Reserved;
+    U8                      ContextSize;
+    U8                      DetailsLength;
+    U8                      Flags;
+    U32                     Reserved1;
+    U32                     ImageOffset;
+    U32                     ImageSize;
+} FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE,
+  FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t;
+
+/* Firmware Download reply */
+typedef struct _MSG_FW_DOWNLOAD_REPLY
+{
+    U8                      ImageType;
+    U8                      Reserved;
+    U8                      MsgLength;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+} MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY,
+  FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t;
+
+
+/****************************************************************************/
+/*  Firmware Upload message and associated structures                       */
+/****************************************************************************/
+
+typedef struct _MSG_FW_UPLOAD
+{
+    U8                      ImageType;
+    U8                      Reserved;
+    U8                      ChainOffset;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    SGE_MPI_UNION           SGL;
+} MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
+  FWUpload_t, MPI_POINTER pFWUpload_t;
+
+#define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM      (0x00)
+#define MPI_FW_UPLOAD_ITYPE_FW_FLASH        (0x01)
+#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH      (0x02)
+#define MPI_FW_UPLOAD_ITYPE_DATA_IOC_MEM    (0x03)
+
+typedef struct _FWUploadTCSGE
+{
+    U8                      Reserved;
+    U8                      ContextSize;
+    U8                      DetailsLength;
+    U8                      Flags;
+    U32                     Reserved1;
+    U32                     ImageOffset;
+    U32                     ImageSize;
+} FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE,
+  FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t;
+
+/* Firmware Upload reply */
+typedef struct _MSG_FW_UPLOAD_REPLY
+{
+    U8                      ImageType;
+    U8                      Reserved;
+    U8                      MsgLength;
+    U8                      Function;
+    U8                      Reserved1[3];
+    U8                      MsgFlags;
+    U32                     MsgContext;
+    U16                     Reserved2;
+    U16                     IOCStatus;
+    U32                     IOCLogInfo;
+    U32                     ActualImageSize;
+} MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY,
+  FWUploadReply_t, MPI_POINTER pFWUploadReply_t;
+
+
+typedef struct _MPI_FW_HEADER
+{
+    U32                     ArmBranchInstruction0;
+    U32                     Signature0;
+    U32                     Signature1;
+    U32                     Signature2;
+    U32                     ArmBranchInstruction1;
+    U32                     ArmBranchInstruction2;
+    U32                     Reserved;
+    U32                     Checksum;
+    U16                     VendorId;
+    U16                     ProductId;
+    U16                     FwVersion;
+    U16                     Reserved1;
+    U32                     SeqCodeVersion;
+    U32                     ImageSize;
+    U32                     Reserved2;
+    U32                     LoadStartAddress;
+    U32                     IopResetVectorValue;
+    U32                     IopResetRegAddr;
+    U32                     VersionNameWhat;
+    U8                      VersionName[32];
+    U32                     VendorNameWhat;
+    U8                      VendorName[32];
+} MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER,
+  MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t;
+
+#define MPI_FW_HEADER_WHAT_SIGNATURE    (0x29232840)
+
+
+typedef struct _MPI_DATA_HEADER
+{
+    U32                     Signature;
+    U16                     FunctionNumber;
+    U16                     Length;
+    U32                     Checksum;
+    U32                     LoadStartAddress;
+} MPI_DATA_HEADER, MPI_POINTER PTR_MPI_DATA_HEADER,
+  MpiDataHeader_t, MPI_POINTER pMpiDataHeader_t;
+
+#define MPI_DATA_HEADER_SIGNATURE       (0x43504147)
+
+#endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)