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
- Lines: 584
- Date:
Fri Jul 6 17:03:11 2001
- Orig file:
v2.4.6/linux/drivers/message/fusion/lsi/mpi_ioc.h
- Orig date:
Wed Dec 31 16:00:00 1969
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)