diff options
Diffstat (limited to 'drivers/scsi/mpt2sas/mpi/mpi2_ioc.h')
-rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_ioc.h | 91 |
1 files changed, 83 insertions, 8 deletions
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h index c294128bdeb4..754938422f6a 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages | 6 | * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages |
7 | * Creation Date: October 11, 2006 | 7 | * Creation Date: October 11, 2006 |
8 | * | 8 | * |
9 | * mpi2_ioc.h Version: 02.00.11 | 9 | * mpi2_ioc.h Version: 02.00.13 |
10 | * | 10 | * |
11 | * Version History | 11 | * Version History |
12 | * --------------- | 12 | * --------------- |
@@ -84,6 +84,20 @@ | |||
84 | * Added two new reason codes for SAS Device Status Change | 84 | * Added two new reason codes for SAS Device Status Change |
85 | * Event. | 85 | * Event. |
86 | * Added new event: SAS PHY Counter. | 86 | * Added new event: SAS PHY Counter. |
87 | * 07-30-09 02.00.12 Added GPIO Interrupt event define and structure. | ||
88 | * Added MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define. | ||
89 | * Added new product id family for 2208. | ||
90 | * 10-28-09 02.00.13 Added HostMSIxVectors field to MPI2_IOC_INIT_REQUEST. | ||
91 | * Added MaxMSIxVectors field to MPI2_IOC_FACTS_REPLY. | ||
92 | * Added MinDevHandle field to MPI2_IOC_FACTS_REPLY. | ||
93 | * Added MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY. | ||
94 | * Added MPI2_EVENT_HOST_BASED_DISCOVERY_PHY define. | ||
95 | * Added MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER define. | ||
96 | * Added Host Based Discovery Phy Event data. | ||
97 | * Added defines for ProductID Product field | ||
98 | * (MPI2_FW_HEADER_PID_). | ||
99 | * Modified values for SAS ProductID Family | ||
100 | * (MPI2_FW_HEADER_PID_FAMILY_). | ||
87 | * -------------------------------------------------------------------------- | 101 | * -------------------------------------------------------------------------- |
88 | */ | 102 | */ |
89 | 103 | ||
@@ -116,8 +130,10 @@ typedef struct _MPI2_IOC_INIT_REQUEST | |||
116 | U16 MsgVersion; /* 0x0C */ | 130 | U16 MsgVersion; /* 0x0C */ |
117 | U16 HeaderVersion; /* 0x0E */ | 131 | U16 HeaderVersion; /* 0x0E */ |
118 | U32 Reserved5; /* 0x10 */ | 132 | U32 Reserved5; /* 0x10 */ |
119 | U32 Reserved6; /* 0x14 */ | 133 | U16 Reserved6; /* 0x14 */ |
120 | U16 Reserved7; /* 0x18 */ | 134 | U8 Reserved7; /* 0x16 */ |
135 | U8 HostMSIxVectors; /* 0x17 */ | ||
136 | U16 Reserved8; /* 0x18 */ | ||
121 | U16 SystemRequestFrameSize; /* 0x1A */ | 137 | U16 SystemRequestFrameSize; /* 0x1A */ |
122 | U16 ReplyDescriptorPostQueueDepth; /* 0x1C */ | 138 | U16 ReplyDescriptorPostQueueDepth; /* 0x1C */ |
123 | U16 ReplyFreeQueueDepth; /* 0x1E */ | 139 | U16 ReplyFreeQueueDepth; /* 0x1E */ |
@@ -212,7 +228,7 @@ typedef struct _MPI2_IOC_FACTS_REPLY | |||
212 | U8 MaxChainDepth; /* 0x14 */ | 228 | U8 MaxChainDepth; /* 0x14 */ |
213 | U8 WhoInit; /* 0x15 */ | 229 | U8 WhoInit; /* 0x15 */ |
214 | U8 NumberOfPorts; /* 0x16 */ | 230 | U8 NumberOfPorts; /* 0x16 */ |
215 | U8 Reserved2; /* 0x17 */ | 231 | U8 MaxMSIxVectors; /* 0x17 */ |
216 | U16 RequestCredit; /* 0x18 */ | 232 | U16 RequestCredit; /* 0x18 */ |
217 | U16 ProductID; /* 0x1A */ | 233 | U16 ProductID; /* 0x1A */ |
218 | U32 IOCCapabilities; /* 0x1C */ | 234 | U32 IOCCapabilities; /* 0x1C */ |
@@ -230,7 +246,8 @@ typedef struct _MPI2_IOC_FACTS_REPLY | |||
230 | U8 MaxVolumes; /* 0x37 */ | 246 | U8 MaxVolumes; /* 0x37 */ |
231 | U16 MaxDevHandle; /* 0x38 */ | 247 | U16 MaxDevHandle; /* 0x38 */ |
232 | U16 MaxPersistentEntries; /* 0x3A */ | 248 | U16 MaxPersistentEntries; /* 0x3A */ |
233 | U32 Reserved4; /* 0x3C */ | 249 | U16 MinDevHandle; /* 0x3C */ |
250 | U16 Reserved4; /* 0x3E */ | ||
234 | } MPI2_IOC_FACTS_REPLY, MPI2_POINTER PTR_MPI2_IOC_FACTS_REPLY, | 251 | } MPI2_IOC_FACTS_REPLY, MPI2_POINTER PTR_MPI2_IOC_FACTS_REPLY, |
235 | Mpi2IOCFactsReply_t, MPI2_POINTER pMpi2IOCFactsReply_t; | 252 | Mpi2IOCFactsReply_t, MPI2_POINTER pMpi2IOCFactsReply_t; |
236 | 253 | ||
@@ -266,6 +283,7 @@ typedef struct _MPI2_IOC_FACTS_REPLY | |||
266 | /* ProductID field uses MPI2_FW_HEADER_PID_ */ | 283 | /* ProductID field uses MPI2_FW_HEADER_PID_ */ |
267 | 284 | ||
268 | /* IOCCapabilities */ | 285 | /* IOCCapabilities */ |
286 | #define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY (0x00010000) | ||
269 | #define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX (0x00008000) | 287 | #define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX (0x00008000) |
270 | #define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR (0x00004000) | 288 | #define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR (0x00004000) |
271 | #define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY (0x00002000) | 289 | #define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY (0x00002000) |
@@ -274,6 +292,7 @@ typedef struct _MPI2_IOC_FACTS_REPLY | |||
274 | #define MPI2_IOCFACTS_CAPABILITY_MULTICAST (0x00000100) | 292 | #define MPI2_IOCFACTS_CAPABILITY_MULTICAST (0x00000100) |
275 | #define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET (0x00000080) | 293 | #define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET (0x00000080) |
276 | #define MPI2_IOCFACTS_CAPABILITY_EEDP (0x00000040) | 294 | #define MPI2_IOCFACTS_CAPABILITY_EEDP (0x00000040) |
295 | #define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020) | ||
277 | #define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010) | 296 | #define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010) |
278 | #define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008) | 297 | #define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008) |
279 | #define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004) | 298 | #define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004) |
@@ -448,6 +467,8 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REPLY | |||
448 | #define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST (0x0020) | 467 | #define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST (0x0020) |
449 | #define MPI2_EVENT_LOG_ENTRY_ADDED (0x0021) | 468 | #define MPI2_EVENT_LOG_ENTRY_ADDED (0x0021) |
450 | #define MPI2_EVENT_SAS_PHY_COUNTER (0x0022) | 469 | #define MPI2_EVENT_SAS_PHY_COUNTER (0x0022) |
470 | #define MPI2_EVENT_GPIO_INTERRUPT (0x0023) | ||
471 | #define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY (0x0024) | ||
451 | 472 | ||
452 | 473 | ||
453 | /* Log Entry Added Event data */ | 474 | /* Log Entry Added Event data */ |
@@ -469,6 +490,16 @@ typedef struct _MPI2_EVENT_DATA_LOG_ENTRY_ADDED | |||
469 | MPI2_POINTER PTR_MPI2_EVENT_DATA_LOG_ENTRY_ADDED, | 490 | MPI2_POINTER PTR_MPI2_EVENT_DATA_LOG_ENTRY_ADDED, |
470 | Mpi2EventDataLogEntryAdded_t, MPI2_POINTER pMpi2EventDataLogEntryAdded_t; | 491 | Mpi2EventDataLogEntryAdded_t, MPI2_POINTER pMpi2EventDataLogEntryAdded_t; |
471 | 492 | ||
493 | /* GPIO Interrupt Event data */ | ||
494 | |||
495 | typedef struct _MPI2_EVENT_DATA_GPIO_INTERRUPT { | ||
496 | U8 GPIONum; /* 0x00 */ | ||
497 | U8 Reserved1; /* 0x01 */ | ||
498 | U16 Reserved2; /* 0x02 */ | ||
499 | } MPI2_EVENT_DATA_GPIO_INTERRUPT, | ||
500 | MPI2_POINTER PTR_MPI2_EVENT_DATA_GPIO_INTERRUPT, | ||
501 | Mpi2EventDataGpioInterrupt_t, MPI2_POINTER pMpi2EventDataGpioInterrupt_t; | ||
502 | |||
472 | /* Hard Reset Received Event data */ | 503 | /* Hard Reset Received Event data */ |
473 | 504 | ||
474 | typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED | 505 | typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED |
@@ -778,6 +809,7 @@ typedef struct _MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST | |||
778 | MPI2_POINTER pMpi2EventDataSasTopologyChangeList_t; | 809 | MPI2_POINTER pMpi2EventDataSasTopologyChangeList_t; |
779 | 810 | ||
780 | /* values for the ExpStatus field */ | 811 | /* values for the ExpStatus field */ |
812 | #define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER (0x00) | ||
781 | #define MPI2_EVENT_SAS_TOPO_ES_ADDED (0x01) | 813 | #define MPI2_EVENT_SAS_TOPO_ES_ADDED (0x01) |
782 | #define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING (0x02) | 814 | #define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING (0x02) |
783 | #define MPI2_EVENT_SAS_TOPO_ES_RESPONDING (0x03) | 815 | #define MPI2_EVENT_SAS_TOPO_ES_RESPONDING (0x03) |
@@ -863,6 +895,44 @@ typedef struct _MPI2_EVENT_DATA_SAS_PHY_COUNTER { | |||
863 | * */ | 895 | * */ |
864 | 896 | ||
865 | 897 | ||
898 | /* Host Based Discovery Phy Event data */ | ||
899 | |||
900 | typedef struct _MPI2_EVENT_HBD_PHY_SAS { | ||
901 | U8 Flags; /* 0x00 */ | ||
902 | U8 NegotiatedLinkRate; /* 0x01 */ | ||
903 | U8 PhyNum; /* 0x02 */ | ||
904 | U8 PhysicalPort; /* 0x03 */ | ||
905 | U32 Reserved1; /* 0x04 */ | ||
906 | U8 InitialFrame[28]; /* 0x08 */ | ||
907 | } MPI2_EVENT_HBD_PHY_SAS, MPI2_POINTER PTR_MPI2_EVENT_HBD_PHY_SAS, | ||
908 | Mpi2EventHbdPhySas_t, MPI2_POINTER pMpi2EventHbdPhySas_t; | ||
909 | |||
910 | /* values for the Flags field */ | ||
911 | #define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID (0x02) | ||
912 | #define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME (0x01) | ||
913 | |||
914 | /* use MPI2_SAS_NEG_LINK_RATE_ defines from mpi2_cnfg.h for | ||
915 | * the NegotiatedLinkRate field */ | ||
916 | |||
917 | typedef union _MPI2_EVENT_HBD_DESCRIPTOR { | ||
918 | MPI2_EVENT_HBD_PHY_SAS Sas; | ||
919 | } MPI2_EVENT_HBD_DESCRIPTOR, MPI2_POINTER PTR_MPI2_EVENT_HBD_DESCRIPTOR, | ||
920 | Mpi2EventHbdDescriptor_t, MPI2_POINTER pMpi2EventHbdDescriptor_t; | ||
921 | |||
922 | typedef struct _MPI2_EVENT_DATA_HBD_PHY { | ||
923 | U8 DescriptorType; /* 0x00 */ | ||
924 | U8 Reserved1; /* 0x01 */ | ||
925 | U16 Reserved2; /* 0x02 */ | ||
926 | U32 Reserved3; /* 0x04 */ | ||
927 | MPI2_EVENT_HBD_DESCRIPTOR Descriptor; /* 0x08 */ | ||
928 | } MPI2_EVENT_DATA_HBD_PHY, MPI2_POINTER PTR_MPI2_EVENT_DATA_HBD_PHY, | ||
929 | Mpi2EventDataHbdPhy_t, MPI2_POINTER pMpi2EventDataMpi2EventDataHbdPhy_t; | ||
930 | |||
931 | /* values for the DescriptorType field */ | ||
932 | #define MPI2_EVENT_HBD_DT_SAS (0x01) | ||
933 | |||
934 | |||
935 | |||
866 | /**************************************************************************** | 936 | /**************************************************************************** |
867 | * EventAck message | 937 | * EventAck message |
868 | ****************************************************************************/ | 938 | ****************************************************************************/ |
@@ -1111,12 +1181,17 @@ typedef struct _MPI2_FW_IMAGE_HEADER | |||
1111 | #define MPI2_FW_HEADER_PID_TYPE_MASK (0xF000) | 1181 | #define MPI2_FW_HEADER_PID_TYPE_MASK (0xF000) |
1112 | #define MPI2_FW_HEADER_PID_TYPE_SAS (0x2000) | 1182 | #define MPI2_FW_HEADER_PID_TYPE_SAS (0x2000) |
1113 | 1183 | ||
1114 | #define MPI2_FW_HEADER_PID_PROD_MASK (0x0F00) | 1184 | #define MPI2_FW_HEADER_PID_PROD_MASK (0x0F00) |
1115 | #define MPI2_FW_HEADER_PID_PROD_A (0x0000) | 1185 | #define MPI2_FW_HEADER_PID_PROD_A (0x0000) |
1186 | #define MPI2_FW_HEADER_PID_PROD_MASK (0x0F00) | ||
1187 | #define MPI2_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200) | ||
1188 | #define MPI2_FW_HEADER_PID_PROD_IR_SCSI (0x0700) | ||
1189 | |||
1116 | 1190 | ||
1117 | #define MPI2_FW_HEADER_PID_FAMILY_MASK (0x00FF) | 1191 | #define MPI2_FW_HEADER_PID_FAMILY_MASK (0x00FF) |
1118 | /* SAS */ | 1192 | /* SAS */ |
1119 | #define MPI2_FW_HEADER_PID_FAMILY_2108_SAS (0x0010) | 1193 | #define MPI2_FW_HEADER_PID_FAMILY_2108_SAS (0x0013) |
1194 | #define MPI2_FW_HEADER_PID_FAMILY_2208_SAS (0x0014) | ||
1120 | 1195 | ||
1121 | /* use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */ | 1196 | /* use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */ |
1122 | 1197 | ||