aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
diff options
context:
space:
mode:
authorSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com>2016-01-28 01:36:58 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2016-02-23 21:27:02 -0500
commitb130b0d56fa97ef17796314995a9dc5dda0edaa5 (patch)
tree1a5864621707993346bb656f036fa548bbadcd38 /drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
parent8038e6456a3e6f5c4759e0d73c4f9165b90c93e7 (diff)
mpt3sas: Added support for high port count HBA variants.
Updated hardware description headers with MPI v2.6 and mpt3sas_pci_table[] with vendor_ids, device_ids of Cutlass and Intruder HBA which have support for 4 ports. Signed-off-by: Suganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: Chaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/mpt3sas/mpi/mpi2_ioc.h')
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_ioc.h117
1 files changed, 109 insertions, 8 deletions
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h b/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
index d7598cc4bb8e..26e1ba4eafb4 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_ioc.h
@@ -1,12 +1,12 @@
1/* 1/*
2 * Copyright (c) 2000-2014 LSI Corporation. 2 * Copyright 2000-2015 Avago Technologies. All rights reserved.
3 * 3 *
4 * 4 *
5 * Name: mpi2_ioc.h 5 * Name: mpi2_ioc.h
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.24 9 * mpi2_ioc.h Version: 02.00.26
10 * 10 *
11 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 11 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
12 * prefix are for use only on MPI v2.5 products, and must not be used 12 * prefix are for use only on MPI v2.5 products, and must not be used
@@ -133,6 +133,10 @@
133 * Added MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY. 133 * Added MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY.
134 * Added Encrypted Hash Extended Image. 134 * Added Encrypted Hash Extended Image.
135 * 12-05-13 02.00.24 Added MPI25_HASH_IMAGE_TYPE_BIOS. 135 * 12-05-13 02.00.24 Added MPI25_HASH_IMAGE_TYPE_BIOS.
136 * 11-18-14 02.00.25 Updated copyright information.
137 * 03-xx-15 02.00.26 Added MPI26_FW_HEADER_PID_FAMILY_3324_SAS and
138 * MPI26_FW_HEADER_PID_FAMILY_3516_SAS.
139 * Added MPI26_CTRL_OP_SHUTDOWN.
136 * -------------------------------------------------------------------------- 140 * --------------------------------------------------------------------------
137 */ 141 */
138 142
@@ -165,7 +169,7 @@ typedef struct _MPI2_IOC_INIT_REQUEST {
165 U16 HeaderVersion; /*0x0E */ 169 U16 HeaderVersion; /*0x0E */
166 U32 Reserved5; /*0x10 */ 170 U32 Reserved5; /*0x10 */
167 U16 Reserved6; /*0x14 */ 171 U16 Reserved6; /*0x14 */
168 U8 Reserved7; /*0x16 */ 172 U8 HostPageSize; /*0x16 */
169 U8 HostMSIxVectors; /*0x17 */ 173 U8 HostMSIxVectors; /*0x17 */
170 U16 Reserved8; /*0x18 */ 174 U16 Reserved8; /*0x18 */
171 U16 SystemRequestFrameSize; /*0x1A */ 175 U16 SystemRequestFrameSize; /*0x1A */
@@ -289,7 +293,8 @@ typedef struct _MPI2_IOC_FACTS_REPLY {
289 U16 MaxDevHandle; /*0x38 */ 293 U16 MaxDevHandle; /*0x38 */
290 U16 MaxPersistentEntries; /*0x3A */ 294 U16 MaxPersistentEntries; /*0x3A */
291 U16 MinDevHandle; /*0x3C */ 295 U16 MinDevHandle; /*0x3C */
292 U16 Reserved4; /*0x3E */ 296 U8 CurrentHostPageSize; /* 0x3E */
297 U8 Reserved4; /* 0x3F */
293} MPI2_IOC_FACTS_REPLY, *PTR_MPI2_IOC_FACTS_REPLY, 298} MPI2_IOC_FACTS_REPLY, *PTR_MPI2_IOC_FACTS_REPLY,
294 Mpi2IOCFactsReply_t, *pMpi2IOCFactsReply_t; 299 Mpi2IOCFactsReply_t, *pMpi2IOCFactsReply_t;
295 300
@@ -326,6 +331,7 @@ typedef struct _MPI2_IOC_FACTS_REPLY {
326/*ProductID field uses MPI2_FW_HEADER_PID_ */ 331/*ProductID field uses MPI2_FW_HEADER_PID_ */
327 332
328/*IOCCapabilities */ 333/*IOCCapabilities */
334#define MPI26_IOCFACTS_CAPABILITY_ATOMIC_REQ (0x00080000)
329#define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE (0x00040000) 335#define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE (0x00040000)
330#define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE (0x00020000) 336#define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE (0x00020000)
331#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY (0x00010000) 337#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY (0x00010000)
@@ -343,8 +349,8 @@ typedef struct _MPI2_IOC_FACTS_REPLY {
343#define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004) 349#define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004)
344 350
345/*ProtocolFlags */ 351/*ProtocolFlags */
346#define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET (0x0001)
347#define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR (0x0002) 352#define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR (0x0002)
353#define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET (0x0001)
348 354
349/**************************************************************************** 355/****************************************************************************
350* PortFacts message 356* PortFacts message
@@ -1247,6 +1253,7 @@ typedef struct _MPI2_FW_UPLOAD_REQUEST {
1247#define MPI2_FW_UPLOAD_ITYPE_MEGARAID (0x09) 1253#define MPI2_FW_UPLOAD_ITYPE_MEGARAID (0x09)
1248#define MPI2_FW_UPLOAD_ITYPE_COMPLETE (0x0A) 1254#define MPI2_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
1249#define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B) 1255#define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1256#define MPI2_FW_UPLOAD_ITYPE_CBB_BACKUP (0x0D)
1250 1257
1251/*MPI v2.0 FWUpload TransactionContext Element */ 1258/*MPI v2.0 FWUpload TransactionContext Element */
1252typedef struct _MPI2_FW_UPLOAD_TCSGE { 1259typedef struct _MPI2_FW_UPLOAD_TCSGE {
@@ -1328,7 +1335,7 @@ typedef struct _MPI2_FW_IMAGE_HEADER {
1328 U32 Reserved54; /*0x54 */ 1335 U32 Reserved54; /*0x54 */
1329 U32 Reserved58; /*0x58 */ 1336 U32 Reserved58; /*0x58 */
1330 U32 Reserved5C; /*0x5C */ 1337 U32 Reserved5C; /*0x5C */
1331 U32 Reserved60; /*0x60 */ 1338 U32 BootFlags; /*0x60 */
1332 U32 FirmwareVersionNameWhat; /*0x64 */ 1339 U32 FirmwareVersionNameWhat; /*0x64 */
1333 U8 FirmwareVersionName[32]; /*0x68 */ 1340 U8 FirmwareVersionName[32]; /*0x68 */
1334 U32 VendorNameWhat; /*0x88 */ 1341 U32 VendorNameWhat; /*0x88 */
@@ -1354,18 +1361,22 @@ typedef struct _MPI2_FW_IMAGE_HEADER {
1354#define MPI2_FW_HEADER_SIGNATURE_OFFSET (0x00) 1361#define MPI2_FW_HEADER_SIGNATURE_OFFSET (0x00)
1355#define MPI2_FW_HEADER_SIGNATURE_MASK (0xFF000000) 1362#define MPI2_FW_HEADER_SIGNATURE_MASK (0xFF000000)
1356#define MPI2_FW_HEADER_SIGNATURE (0xEA000000) 1363#define MPI2_FW_HEADER_SIGNATURE (0xEA000000)
1364#define MPI26_FW_HEADER_SIGNATURE (0xEB000000)
1357 1365
1358/*Signature0 field */ 1366/*Signature0 field */
1359#define MPI2_FW_HEADER_SIGNATURE0_OFFSET (0x04) 1367#define MPI2_FW_HEADER_SIGNATURE0_OFFSET (0x04)
1360#define MPI2_FW_HEADER_SIGNATURE0 (0x5AFAA55A) 1368#define MPI2_FW_HEADER_SIGNATURE0 (0x5AFAA55A)
1369#define MPI26_FW_HEADER_SIGNATURE0 (0x5AEAA55A)
1361 1370
1362/*Signature1 field */ 1371/*Signature1 field */
1363#define MPI2_FW_HEADER_SIGNATURE1_OFFSET (0x08) 1372#define MPI2_FW_HEADER_SIGNATURE1_OFFSET (0x08)
1364#define MPI2_FW_HEADER_SIGNATURE1 (0xA55AFAA5) 1373#define MPI2_FW_HEADER_SIGNATURE1 (0xA55AFAA5)
1374#define MPI26_FW_HEADER_SIGNATURE1 (0xA55AEAA5)
1365 1375
1366/*Signature2 field */ 1376/*Signature2 field */
1367#define MPI2_FW_HEADER_SIGNATURE2_OFFSET (0x0C) 1377#define MPI2_FW_HEADER_SIGNATURE2_OFFSET (0x0C)
1368#define MPI2_FW_HEADER_SIGNATURE2 (0x5AA55AFA) 1378#define MPI2_FW_HEADER_SIGNATURE2 (0x5AA55AFA)
1379#define MPI26_FW_HEADER_SIGNATURE2 (0x5AA55AEA)
1369 1380
1370/*defines for using the ProductID field */ 1381/*defines for using the ProductID field */
1371#define MPI2_FW_HEADER_PID_TYPE_MASK (0xF000) 1382#define MPI2_FW_HEADER_PID_TYPE_MASK (0xF000)
@@ -1381,6 +1392,8 @@ typedef struct _MPI2_FW_IMAGE_HEADER {
1381#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS (0x0013) 1392#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS (0x0013)
1382#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS (0x0014) 1393#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS (0x0014)
1383#define MPI25_FW_HEADER_PID_FAMILY_3108_SAS (0x0021) 1394#define MPI25_FW_HEADER_PID_FAMILY_3108_SAS (0x0021)
1395#define MPI26_FW_HEADER_PID_FAMILY_3324_SAS (0x0028)
1396#define MPI26_FW_HEADER_PID_FAMILY_3516_SAS (0x0031)
1384 1397
1385/*use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */ 1398/*use MPI2_IOCFACTS_PROTOCOL_ defines for ProtocolFlags field */
1386 1399
@@ -1388,6 +1401,7 @@ typedef struct _MPI2_FW_IMAGE_HEADER {
1388 1401
1389#define MPI2_FW_HEADER_IMAGESIZE_OFFSET (0x2C) 1402#define MPI2_FW_HEADER_IMAGESIZE_OFFSET (0x2C)
1390#define MPI2_FW_HEADER_NEXTIMAGE_OFFSET (0x30) 1403#define MPI2_FW_HEADER_NEXTIMAGE_OFFSET (0x30)
1404#define MPI26_FW_HEADER_BOOTFLAGS_OFFSET (0x60)
1391#define MPI2_FW_HEADER_VERNMHWAT_OFFSET (0x64) 1405#define MPI2_FW_HEADER_VERNMHWAT_OFFSET (0x64)
1392 1406
1393#define MPI2_FW_HEADER_WHAT_SIGNATURE (0x29232840) 1407#define MPI2_FW_HEADER_WHAT_SIGNATURE (0x29232840)
@@ -1493,7 +1507,9 @@ typedef struct _MPI2_FLASH_LAYOUT_DATA {
1493#define MPI2_FLASH_REGION_CONFIG_1 (0x07) 1507#define MPI2_FLASH_REGION_CONFIG_1 (0x07)
1494#define MPI2_FLASH_REGION_CONFIG_2 (0x08) 1508#define MPI2_FLASH_REGION_CONFIG_2 (0x08)
1495#define MPI2_FLASH_REGION_MEGARAID (0x09) 1509#define MPI2_FLASH_REGION_MEGARAID (0x09)
1496#define MPI2_FLASH_REGION_INIT (0x0A) 1510#define MPI2_FLASH_REGION_COMMON_BOOT_BLOCK (0x0A)
1511#define MPI2_FLASH_REGION_INIT (MPI2_FLASH_REGION_COMMON_BOOT_BLOCK)
1512#define MPI2_FLASH_REGION_CBB_BACKUP (0x0D)
1497 1513
1498/*ImageRevision */ 1514/*ImageRevision */
1499#define MPI2_FLASH_LAYOUT_IMAGE_REVISION (0x00) 1515#define MPI2_FLASH_LAYOUT_IMAGE_REVISION (0x00)
@@ -1619,7 +1635,6 @@ typedef struct _MPI25_ENCRYPTED_HASH_DATA {
1619Mpi25EncryptedHashData_t, *pMpi25EncryptedHashData_t; 1635Mpi25EncryptedHashData_t, *pMpi25EncryptedHashData_t;
1620 1636
1621 1637
1622
1623/**************************************************************************** 1638/****************************************************************************
1624* PowerManagementControl message 1639* PowerManagementControl message
1625****************************************************************************/ 1640****************************************************************************/
@@ -1726,4 +1741,90 @@ typedef struct _MPI2_PWR_MGMT_CONTROL_REPLY {
1726} MPI2_PWR_MGMT_CONTROL_REPLY, *PTR_MPI2_PWR_MGMT_CONTROL_REPLY, 1741} MPI2_PWR_MGMT_CONTROL_REPLY, *PTR_MPI2_PWR_MGMT_CONTROL_REPLY,
1727 Mpi2PwrMgmtControlReply_t, *pMpi2PwrMgmtControlReply_t; 1742 Mpi2PwrMgmtControlReply_t, *pMpi2PwrMgmtControlReply_t;
1728 1743
1744/****************************************************************************
1745* IO Unit Control messages (MPI v2.6 and later only.)
1746****************************************************************************/
1747
1748/* IO Unit Control Request Message */
1749typedef struct _MPI26_IOUNIT_CONTROL_REQUEST {
1750 U8 Operation; /* 0x00 */
1751 U8 Reserved1; /* 0x01 */
1752 U8 ChainOffset; /* 0x02 */
1753 U8 Function; /* 0x03 */
1754 U16 DevHandle; /* 0x04 */
1755 U8 IOCParameter; /* 0x06 */
1756 U8 MsgFlags; /* 0x07 */
1757 U8 VP_ID; /* 0x08 */
1758 U8 VF_ID; /* 0x09 */
1759 U16 Reserved3; /* 0x0A */
1760 U16 Reserved4; /* 0x0C */
1761 U8 PhyNum; /* 0x0E */
1762 U8 PrimFlags; /* 0x0F */
1763 U32 Primitive; /* 0x10 */
1764 U8 LookupMethod; /* 0x14 */
1765 U8 Reserved5; /* 0x15 */
1766 U16 SlotNumber; /* 0x16 */
1767 U64 LookupAddress; /* 0x18 */
1768 U32 IOCParameterValue; /* 0x20 */
1769 U32 Reserved7; /* 0x24 */
1770 U32 Reserved8; /* 0x28 */
1771} MPI26_IOUNIT_CONTROL_REQUEST,
1772 *PTR_MPI26_IOUNIT_CONTROL_REQUEST,
1773 Mpi26IoUnitControlRequest_t,
1774 *pMpi26IoUnitControlRequest_t;
1775
1776/* values for the Operation field */
1777#define MPI26_CTRL_OP_CLEAR_ALL_PERSISTENT (0x02)
1778#define MPI26_CTRL_OP_SAS_PHY_LINK_RESET (0x06)
1779#define MPI26_CTRL_OP_SAS_PHY_HARD_RESET (0x07)
1780#define MPI26_CTRL_OP_PHY_CLEAR_ERROR_LOG (0x08)
1781#define MPI26_CTRL_OP_SAS_SEND_PRIMITIVE (0x0A)
1782#define MPI26_CTRL_OP_FORCE_FULL_DISCOVERY (0x0B)
1783#define MPI26_CTRL_OP_REMOVE_DEVICE (0x0D)
1784#define MPI26_CTRL_OP_LOOKUP_MAPPING (0x0E)
1785#define MPI26_CTRL_OP_SET_IOC_PARAMETER (0x0F)
1786#define MPI26_CTRL_OP_ENABLE_FP_DEVICE (0x10)
1787#define MPI26_CTRL_OP_DISABLE_FP_DEVICE (0x11)
1788#define MPI26_CTRL_OP_ENABLE_FP_ALL (0x12)
1789#define MPI26_CTRL_OP_DISABLE_FP_ALL (0x13)
1790#define MPI26_CTRL_OP_DEV_ENABLE_NCQ (0x14)
1791#define MPI26_CTRL_OP_DEV_DISABLE_NCQ (0x15)
1792#define MPI26_CTRL_OP_SHUTDOWN (0x16)
1793#define MPI26_CTRL_OP_DEV_ENABLE_PERSIST_CONNECTION (0x17)
1794#define MPI26_CTRL_OP_DEV_DISABLE_PERSIST_CONNECTION (0x18)
1795#define MPI26_CTRL_OP_DEV_CLOSE_PERSIST_CONNECTION (0x19)
1796#define MPI26_CTRL_OP_PRODUCT_SPECIFIC_MIN (0x80)
1797
1798/* values for the PrimFlags field */
1799#define MPI26_CTRL_PRIMFLAGS_SINGLE (0x08)
1800#define MPI26_CTRL_PRIMFLAGS_TRIPLE (0x02)
1801#define MPI26_CTRL_PRIMFLAGS_REDUNDANT (0x01)
1802
1803/* values for the LookupMethod field */
1804#define MPI26_CTRL_LOOKUP_METHOD_WWID_ADDRESS (0x01)
1805#define MPI26_CTRL_LOOKUP_METHOD_ENCLOSURE_SLOT (0x02)
1806#define MPI26_CTRL_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03)
1807
1808
1809/* IO Unit Control Reply Message */
1810typedef struct _MPI26_IOUNIT_CONTROL_REPLY {
1811 U8 Operation; /* 0x00 */
1812 U8 Reserved1; /* 0x01 */
1813 U8 MsgLength; /* 0x02 */
1814 U8 Function; /* 0x03 */
1815 U16 DevHandle; /* 0x04 */
1816 U8 IOCParameter; /* 0x06 */
1817 U8 MsgFlags; /* 0x07 */
1818 U8 VP_ID; /* 0x08 */
1819 U8 VF_ID; /* 0x09 */
1820 U16 Reserved3; /* 0x0A */
1821 U16 Reserved4; /* 0x0C */
1822 U16 IOCStatus; /* 0x0E */
1823 U32 IOCLogInfo; /* 0x10 */
1824} MPI26_IOUNIT_CONTROL_REPLY,
1825 *PTR_MPI26_IOUNIT_CONTROL_REPLY,
1826 Mpi26IoUnitControlReply_t,
1827 *pMpi26IoUnitControlReply_t;
1828
1829
1729#endif 1830#endif