diff options
author | Suganath prabu Subramani <suganath-prabu.subramani@avagotech.com> | 2016-01-28 01:36:58 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-02-23 21:27:02 -0500 |
commit | b130b0d56fa97ef17796314995a9dc5dda0edaa5 (patch) | |
tree | 1a5864621707993346bb656f036fa548bbadcd38 /drivers/scsi/mpt3sas/mpi/mpi2_ioc.h | |
parent | 8038e6456a3e6f5c4759e0d73c4f9165b90c93e7 (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.h | 117 |
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 */ |
1252 | typedef struct _MPI2_FW_UPLOAD_TCSGE { | 1259 | typedef 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 { | |||
1619 | Mpi25EncryptedHashData_t, *pMpi25EncryptedHashData_t; | 1635 | Mpi25EncryptedHashData_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 */ | ||
1749 | typedef 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 */ | ||
1810 | typedef 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 |