patch-2.4.10 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
- Lines: 712
- Date:
Fri Sep 7 09:28:38 2001
- Orig file:
v2.4.9/linux/drivers/message/fusion/lsi/mpi_ioc.h
- Orig date:
Wed Jul 25 17:10:20 2001
diff -u --recursive --new-file v2.4.9/linux/drivers/message/fusion/lsi/mpi_ioc.h linux/drivers/message/fusion/lsi/mpi_ioc.h
@@ -3,10 +3,10 @@
*
*
* Name: MPI_IOC.H
- * Title: MPI IOC, Port, Event, FW Load, and ToolBox messages
+ * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
* Creation Date: August 11, 2000
*
- * MPI Version: 01.01.05
+ * MPI Version: 01.01.07
*
* Version History
* ---------------
@@ -35,6 +35,9 @@
* 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.
+ * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER.
+ * Added structure offset comments.
+ * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE.
* --------------------------------------------------------------------------
*/
@@ -54,36 +57,36 @@
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;
+ U8 WhoInit; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Flags; /* 04h */
+ U8 MaxDevices; /* 05h */
+ U8 MaxBuses; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 ReplyFrameSize; /* 0Ch */
+ U8 Reserved1[2]; /* 0Eh */
+ U32 HostMfaHighAddr; /* 10h */
+ U32 SenseBufferHighAddr; /* 14h */
} 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;
+ U8 WhoInit; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Flags; /* 04h */
+ U8 MaxDevices; /* 05h */
+ U8 MaxBuses; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
} MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY,
IOCInitReply_t, MPI_POINTER pIOCInitReply_t;
@@ -103,12 +106,12 @@
typedef struct _MSG_IOC_FACTS
{
- U8 Reserved[2];
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[3];
- U8 MsgFlags;
- U32 MsgContext;
+ U8 Reserved[2]; /* 00h */
+ U8 ChainOffset; /* 01h */
+ U8 Function; /* 02h */
+ U8 Reserved1[3]; /* 03h */
+ U8 MsgFlags; /* 04h */
+ U32 MsgContext; /* 08h */
} MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS,
IOCFacts_t, MPI_POINTER pIOCFacts_t;
@@ -116,34 +119,34 @@
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;
+ U16 MsgVersion; /* 00h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U16 Reserved; /* 04h */
+ U8 IOCNumber; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
+ U8 MaxChainDepth; /* 14h */
+ U8 WhoInit; /* 15h */
+ U8 BlockSize; /* 16h */
+ U8 Flags; /* 17h */
+ U16 ReplyQueueDepth; /* 18h */
+ U16 RequestFrameSize; /* 1Ah */
+ U16 FWVersion; /* 1Ch */
+ U16 ProductID; /* 1Eh */
+ U32 CurrentHostMfaHighAddr; /* 20h */
+ U16 GlobalCredits; /* 24h */
+ U8 NumberOfPorts; /* 26h */
+ U8 EventState; /* 27h */
+ U32 CurrentSenseBufferHighAddr; /* 28h */
+ U16 CurReplyFrameSize; /* 2Ch */
+ U8 MaxDevices; /* 2Eh */
+ U8 MaxBuses; /* 2Fh */
+ U32 FWImageSize; /* 30h */
+ U32 DataImageSize; /* 34h */
} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
@@ -170,38 +173,38 @@
typedef struct _MSG_PORT_FACTS
{
- U8 Reserved[2];
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[2];
- U8 PortNumber;
- U8 MsgFlags;
- U32 MsgContext;
+ U8 Reserved[2]; /* 00h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[2]; /* 04h */
+ U8 PortNumber; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
} 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;
+ U16 Reserved; /* 00h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U16 Reserved1; /* 04h */
+ U8 PortNumber; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
+ U8 Reserved3; /* 14h */
+ U8 PortType; /* 15h */
+ U16 MaxDevices; /* 16h */
+ U16 PortSCSIID; /* 18h */
+ U16 ProtocolFlags; /* 1Ah */
+ U16 MaxPostedCmdBuffers; /* 1Ch */
+ U16 MaxPersistentIDs; /* 1Eh */
+ U16 MaxLanBuckets; /* 20h */
+ U16 Reserved4; /* 22h */
+ U32 Reserved5; /* 24h */
} MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY,
PortFactsReply_t, MPI_POINTER pPortFactsReply_t;
@@ -226,28 +229,28 @@
typedef struct _MSG_PORT_ENABLE
{
- U8 Reserved[2];
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[2];
- U8 PortNumber;
- U8 MsgFlags;
- U32 MsgContext;
+ U8 Reserved[2]; /* 00h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[2]; /* 04h */
+ U8 PortNumber; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
} 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;
+ U8 Reserved[2]; /* 00h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[2]; /* 04h */
+ U8 PortNumber; /* 05h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
} MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY,
PortEnableReply_t, MPI_POINTER pPortEnableReply_t;
@@ -264,13 +267,13 @@
typedef struct _MSG_EVENT_NOTIFY
{
- U8 Switch;
- U8 Reserved;
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[3];
- U8 MsgFlags;
- U32 MsgContext;
+ U8 Switch; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
} MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY,
EventNotification_t, MPI_POINTER pEventNotification_t;
@@ -278,19 +281,19 @@
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];
+ U16 EventDataLength; /* 00h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[2]; /* 04h */
+ U8 AckRequired; /* 06h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U8 Reserved2[2]; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
+ U32 Event; /* 14h */
+ U32 EventContext; /* 18h */
+ U32 Data[1]; /* 1Ch */
} MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY,
EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t;
@@ -298,28 +301,28 @@
typedef struct _MSG_EVENT_ACK
{
- U8 Reserved[2];
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[3];
- U8 MsgFlags;
- U32 MsgContext;
- U32 Event;
- U32 EventContext;
+ U8 Reserved[2]; /* 00h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U32 Event; /* 0Ch */
+ U32 EventContext; /* 10h */
} 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;
+ U8 Reserved[2]; /* 00h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
} MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY,
EventAckReply_t, MPI_POINTER pEventAckReply_t;
@@ -349,13 +352,23 @@
#define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
#define MPI_EVENT_NOTIFICATION_ACK_REQUIRED (0x01)
-/* SCSI Event data for Port, Bus and Device forms) */
+/* EventChange Event data */
+
+typedef struct _EVENT_DATA_EVENT_CHANGE
+{
+ U8 EventState; /* 00h */
+ U8 Reserved; /* 01h */
+ U16 Reserved1; /* 02h */
+} EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE,
+ EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t;
+
+/* SCSI Event data for Port, Bus and Device forms */
typedef struct _EVENT_DATA_SCSI
{
- U8 TargetID;
- U8 BusPort;
- U16 Reserved;
+ U8 TargetID; /* 00h */
+ U8 BusPort; /* 01h */
+ U16 Reserved; /* 02h */
} EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI,
EventDataScsi_t, MPI_POINTER pEventDataScsi_t;
@@ -363,12 +376,12 @@
typedef struct _EVENT_DATA_LINK_STATUS
{
- U8 State;
- U8 Reserved;
- U16 Reserved1;
- U8 Reserved2;
- U8 Port;
- U16 Reserved3;
+ U8 State; /* 00h */
+ U8 Reserved; /* 01h */
+ U16 Reserved1; /* 02h */
+ U8 Reserved2; /* 04h */
+ U8 Port; /* 05h */
+ U16 Reserved3; /* 06h */
} EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS,
EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t;
@@ -379,13 +392,13 @@
typedef struct _EVENT_DATA_LOOP_STATE
{
- U8 Character4;
- U8 Character3;
- U8 Type;
- U8 Reserved;
- U8 Reserved1;
- U8 Port;
- U16 Reserved2;
+ U8 Character4; /* 00h */
+ U8 Character3; /* 01h */
+ U8 Type; /* 02h */
+ U8 Reserved; /* 03h */
+ U8 Reserved1; /* 04h */
+ U8 Port; /* 05h */
+ U16 Reserved2; /* 06h */
} EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE,
EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t;
@@ -397,10 +410,10 @@
typedef struct _EVENT_DATA_LOGOUT
{
- U32 NPortID;
- U8 Reserved;
- U8 Port;
- U16 Reserved1;
+ U32 NPortID; /* 00h */
+ U8 Reserved; /* 04h */
+ U8 Port; /* 05h */
+ U16 Reserved1; /* 06h */
} EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT,
EventDataLogout_t, MPI_POINTER pEventDataLogout_t;
@@ -408,13 +421,13 @@
typedef struct _EVENT_DATA_RAID_STATUS_CHANGE
{
- U8 VolumeTargetID;
- U8 VolumeBus;
- U8 ReasonCode;
- U8 PhysDiskNum;
- U8 ASC;
- U8 ASCQ;
- U16 Reserved;
+ U8 VolumeTargetID; /* 00h */
+ U8 VolumeBus; /* 01h */
+ U8 ReasonCode; /* 02h */
+ U8 PhysDiskNum; /* 03h */
+ U8 ASC; /* 04h */
+ U8 ASCQ; /* 05h */
+ U16 Reserved; /* 06h */
} EVENT_DATA_RAID_STATUS_CHANGE, MPI_POINTER PTR_EVENT_DATA_RAID_STATUS_CHANGE,
MpiEventDataRaidStatusChange_t, MPI_POINTER pMpiEventDataRaidStatusChange_t;
@@ -441,14 +454,14 @@
typedef struct _MSG_FW_DOWNLOAD
{
- U8 ImageType;
- U8 Reserved;
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[3];
- U8 MsgFlags;
- U32 MsgContext;
- SGE_MPI_UNION SGL;
+ U8 ImageType; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ SGE_MPI_UNION SGL; /* 0Ch */
} MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
FWDownload_t, MPI_POINTER pFWDownload_t;
@@ -459,29 +472,29 @@
typedef struct _FWDownloadTCSGE
{
- U8 Reserved;
- U8 ContextSize;
- U8 DetailsLength;
- U8 Flags;
- U32 Reserved1;
- U32 ImageOffset;
- U32 ImageSize;
+ U8 Reserved; /* 00h */
+ U8 ContextSize; /* 01h */
+ U8 DetailsLength; /* 02h */
+ U8 Flags; /* 03h */
+ U32 Reserved1; /* 04h */
+ U32 ImageOffset; /* 08h */
+ U32 ImageSize; /* 0Ch */
} 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;
+ U8 ImageType; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
} MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY,
FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t;
@@ -492,14 +505,14 @@
typedef struct _MSG_FW_UPLOAD
{
- U8 ImageType;
- U8 Reserved;
- U8 ChainOffset;
- U8 Function;
- U8 Reserved1[3];
- U8 MsgFlags;
- U32 MsgContext;
- SGE_MPI_UNION SGL;
+ U8 ImageType; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 ChainOffset; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ SGE_MPI_UNION SGL; /* 0Ch */
} MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
FWUpload_t, MPI_POINTER pFWUpload_t;
@@ -510,74 +523,88 @@
typedef struct _FWUploadTCSGE
{
- U8 Reserved;
- U8 ContextSize;
- U8 DetailsLength;
- U8 Flags;
- U32 Reserved1;
- U32 ImageOffset;
- U32 ImageSize;
+ U8 Reserved; /* 00h */
+ U8 ContextSize; /* 01h */
+ U8 DetailsLength; /* 02h */
+ U8 Flags; /* 03h */
+ U32 Reserved1; /* 04h */
+ U32 ImageOffset; /* 08h */
+ U32 ImageSize; /* 0Ch */
} 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;
+ U8 ImageType; /* 00h */
+ U8 Reserved; /* 01h */
+ U8 MsgLength; /* 02h */
+ U8 Function; /* 03h */
+ U8 Reserved1[3]; /* 04h */
+ U8 MsgFlags; /* 07h */
+ U32 MsgContext; /* 08h */
+ U16 Reserved2; /* 0Ch */
+ U16 IOCStatus; /* 0Eh */
+ U32 IOCLogInfo; /* 10h */
+ U32 ActualImageSize; /* 14h */
} 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];
+ U32 ArmBranchInstruction0; /* 00h */
+ U32 Signature0; /* 04h */
+ U32 Signature1; /* 08h */
+ U32 Signature2; /* 0Ch */
+ U32 ArmBranchInstruction1; /* 10h */
+ U32 ArmBranchInstruction2; /* 14h */
+ U32 Reserved; /* 18h */
+ U32 Checksum; /* 1Ch */
+ U16 VendorId; /* 20h */
+ U16 ProductId; /* 22h */
+ U16 FwVersion; /* 24h */
+ U16 Reserved1; /* 26h */
+ U32 SeqCodeVersion; /* 28h */
+ U32 ImageSize; /* 2Ch */
+ U32 Reserved2; /* 30h */
+ U32 LoadStartAddress; /* 34h */
+ U32 IopResetVectorValue; /* 38h */
+ U32 IopResetRegAddr; /* 3Ch */
+ U32 VersionNameWhat; /* 40h */
+ U8 VersionName[32]; /* 44h */
+ U32 VendorNameWhat; /* 64h */
+ U8 VendorName[32]; /* 68h */
} MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER,
MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t;
-#define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840)
+#define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840)
+
+/* defines for using the ProductId field */
+#define MPI_FW_HEADER_PID_TYPE_MASK (0xF000)
+#define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000)
+#define MPI_FW_HEADER_PID_TYPE_FC (0x1000)
+
+#define MPI_FW_HEADER_PID_FW_VENDOR_MASK (0x0F00)
+#define MPI_FW_HEADER_PID_FW_VENDOR_LSI (0x0000)
+
+#define MPI_FW_HEADER_PID_FAMILY_MASK (0x000F)
+#define MPI_FW_HEADER_PID_FAMILY_1030_SCSI (0x0000)
+#define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000)
+#define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001)
+#define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002)
typedef struct _MPI_DATA_HEADER
{
- U32 Signature;
- U16 FunctionNumber;
- U16 Length;
- U32 Checksum;
- U32 LoadStartAddress;
+ U32 Signature; /* 00h */
+ U16 FunctionNumber; /* 04h */
+ U16 Length; /* 06h */
+ U32 Checksum; /* 08h */
+ U32 LoadStartAddress; /* 0Ch */
} MPI_DATA_HEADER, MPI_POINTER PTR_MPI_DATA_HEADER,
MpiDataHeader_t, MPI_POINTER pMpiDataHeader_t;
-#define MPI_DATA_HEADER_SIGNATURE (0x43504147)
+#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)