aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
diff options
context:
space:
mode:
authorSuganath Prabu <suganath-prabu.subramani@broadcom.com>2018-10-25 10:03:40 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2018-11-06 20:16:01 -0500
commitff92b9dd9268507e23fc10cc4341626cef50367c (patch)
tree94c07ec904164fc5b95c4000f464ac45aab60844 /drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
parent651022382c7f8da46cb4872a545ee1da6d097d2a (diff)
scsi: mpt3sas: Update MPI headers to support Aero controllers
Updating MPI headers to the latest version 2.6.7 to add support to the driver to detect the new 3816 and 3916 chip based controllers. Separate out firmware image data from mpi2_ioc.h to new file mpi2_image.h Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h')
-rw-r--r--drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h94
1 files changed, 68 insertions, 26 deletions
diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
index 5122920a961a..398fa6fde960 100644
--- a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
+++ b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
@@ -1,13 +1,13 @@
1/* SPDX-License-Identifier: GPL-2.0 */ 1/* SPDX-License-Identifier: GPL-2.0 */
2/* 2/*
3 * Copyright 2000-2015 Avago Technologies. All rights reserved. 3 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
4 * 4 *
5 * 5 *
6 * Name: mpi2_cnfg.h 6 * Name: mpi2_cnfg.h
7 * Title: MPI Configuration messages and pages 7 * Title: MPI Configuration messages and pages
8 * Creation Date: November 10, 2006 8 * Creation Date: November 10, 2006
9 * 9 *
10 * mpi2_cnfg.h Version: 02.00.42 10 * mpi2_cnfg.h Version: 02.00.46
11 * 11 *
12 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 12 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
13 * prefix are for use only on MPI v2.5 products, and must not be used 13 * prefix are for use only on MPI v2.5 products, and must not be used
@@ -231,6 +231,18 @@
231 * Added NOIOB field to PCIe Device Page 2. 231 * Added NOIOB field to PCIe Device Page 2.
232 * Added MPI26_PCIEDEV2_CAP_DATA_BLK_ALIGN_AND_GRAN to 232 * Added MPI26_PCIEDEV2_CAP_DATA_BLK_ALIGN_AND_GRAN to
233 * the Capabilities field of PCIe Device Page 2. 233 * the Capabilities field of PCIe Device Page 2.
234 * 07-22-18 02.00.43 Added defines for SAS3916 and SAS3816.
235 * Added WRiteCache defines to IO Unit Page 1.
236 * Added MaxEnclosureLevel to BIOS Page 1.
237 * Added OEMRD to SAS Enclosure Page 1.
238 * Added DMDReportPCIe to PCIe IO Unit Page 1.
239 * Added Flags field and flags for Retimers to
240 * PCIe Switch Page 1.
241 * 08-02-18 02.00.44 Added Slotx2, Slotx4 to ManPage 7.
242 * 08-15-18 02.00.45 Added ProductSpecific field at end of IOC Page 1
243 * 08-28-18 02.00.46 Added NVMs Write Cache flag to IOUnitPage1
244 * Added DMDReport Delay Time defines to
245 * PCIeIOUnitPage1
234 * -------------------------------------------------------------------------- 246 * --------------------------------------------------------------------------
235 */ 247 */
236 248
@@ -568,8 +580,17 @@ typedef struct _MPI2_CONFIG_REPLY {
568#define MPI26_MFGPAGE_DEVID_SAS3616 (0x00D1) 580#define MPI26_MFGPAGE_DEVID_SAS3616 (0x00D1)
569#define MPI26_MFGPAGE_DEVID_SAS3708 (0x00D2) 581#define MPI26_MFGPAGE_DEVID_SAS3708 (0x00D2)
570 582
571#define MPI26_MFGPAGE_DEVID_SAS3816 (0x00A1) 583#define MPI26_MFGPAGE_DEVID_SEC_MASK_3916 (0x0003)
572#define MPI26_MFGPAGE_DEVID_SAS3916 (0x00A0) 584#define MPI26_MFGPAGE_DEVID_INVALID0_3916 (0x00E0)
585#define MPI26_MFGPAGE_DEVID_CFG_SEC_3916 (0x00E1)
586#define MPI26_MFGPAGE_DEVID_HARD_SEC_3916 (0x00E2)
587#define MPI26_MFGPAGE_DEVID_INVALID1_3916 (0x00E3)
588
589#define MPI26_MFGPAGE_DEVID_SEC_MASK_3816 (0x0003)
590#define MPI26_MFGPAGE_DEVID_INVALID0_3816 (0x00E4)
591#define MPI26_MFGPAGE_DEVID_CFG_SEC_3816 (0x00E5)
592#define MPI26_MFGPAGE_DEVID_HARD_SEC_3816 (0x00E6)
593#define MPI26_MFGPAGE_DEVID_INVALID1_3816 (0x00E7)
573 594
574 595
575/*Manufacturing Page 0 */ 596/*Manufacturing Page 0 */
@@ -932,7 +953,11 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1 {
932 953
933#define MPI2_IOUNITPAGE1_PAGEVERSION (0x04) 954#define MPI2_IOUNITPAGE1_PAGEVERSION (0x04)
934 955
935/*IO Unit Page 1 Flags defines */ 956/* IO Unit Page 1 Flags defines */
957#define MPI26_IOUNITPAGE1_NVME_WRCACHE_MASK (0x00030000)
958#define MPI26_IOUNITPAGE1_NVME_WRCACHE_ENABLE (0x00000000)
959#define MPI26_IOUNITPAGE1_NVME_WRCACHE_DISABLE (0x00010000)
960#define MPI26_IOUNITPAGE1_NVME_WRCACHE_NO_CHANGE (0x00020000)
936#define MPI2_IOUNITPAGE1_ATA_SECURITY_FREEZE_LOCK (0x00004000) 961#define MPI2_IOUNITPAGE1_ATA_SECURITY_FREEZE_LOCK (0x00004000)
937#define MPI25_IOUNITPAGE1_NEW_DEVICE_FAST_PATH_DISABLE (0x00002000) 962#define MPI25_IOUNITPAGE1_NEW_DEVICE_FAST_PATH_DISABLE (0x00002000)
938#define MPI25_IOUNITPAGE1_DISABLE_FAST_PATH (0x00001000) 963#define MPI25_IOUNITPAGE1_DISABLE_FAST_PATH (0x00001000)
@@ -1511,7 +1536,7 @@ typedef struct _MPI2_CONFIG_PAGE_BIOS_1 {
1511 U32 BiosOptions; /*0x04 */ 1536 U32 BiosOptions; /*0x04 */
1512 U32 IOCSettings; /*0x08 */ 1537 U32 IOCSettings; /*0x08 */
1513 U8 SSUTimeout; /*0x0C */ 1538 U8 SSUTimeout; /*0x0C */
1514 U8 Reserved1; /*0x0D */ 1539 U8 MaxEnclosureLevel; /*0x0D */
1515 U16 Reserved2; /*0x0E */ 1540 U16 Reserved2; /*0x0E */
1516 U32 DeviceSettings; /*0x10 */ 1541 U32 DeviceSettings; /*0x10 */
1517 U16 NumberOfDevices; /*0x14 */ 1542 U16 NumberOfDevices; /*0x14 */
@@ -1531,7 +1556,6 @@ typedef struct _MPI2_CONFIG_PAGE_BIOS_1 {
1531#define MPI2_BIOSPAGE1_OPTIONS_ADVANCED_CONFIG (0x00004000) 1556#define MPI2_BIOSPAGE1_OPTIONS_ADVANCED_CONFIG (0x00004000)
1532 1557
1533#define MPI2_BIOSPAGE1_OPTIONS_PNS_MASK (0x00003800) 1558#define MPI2_BIOSPAGE1_OPTIONS_PNS_MASK (0x00003800)
1534#define MPI2_BIOSPAGE1_OPTIONS_PNS_MASK (0x00003800)
1535#define MPI2_BIOSPAGE1_OPTIONS_PNS_PBDHL (0x00000000) 1559#define MPI2_BIOSPAGE1_OPTIONS_PNS_PBDHL (0x00000000)
1536#define MPI2_BIOSPAGE1_OPTIONS_PNS_ENCSLOSURE (0x00000800) 1560#define MPI2_BIOSPAGE1_OPTIONS_PNS_ENCSLOSURE (0x00000800)
1537#define MPI2_BIOSPAGE1_OPTIONS_PNS_LWWID (0x00001000) 1561#define MPI2_BIOSPAGE1_OPTIONS_PNS_LWWID (0x00001000)
@@ -3271,10 +3295,12 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0 {
3271 U16 NumSlots; /*0x18 */ 3295 U16 NumSlots; /*0x18 */
3272 U16 StartSlot; /*0x1A */ 3296 U16 StartSlot; /*0x1A */
3273 U8 ChassisSlot; /*0x1C */ 3297 U8 ChassisSlot; /*0x1C */
3274 U8 EnclosureLeve; /*0x1D */ 3298 U8 EnclosureLevel; /*0x1D */
3275 U16 SEPDevHandle; /*0x1E */ 3299 U16 SEPDevHandle; /*0x1E */
3276 U32 Reserved3; /*0x20 */ 3300 U8 OEMRD; /*0x20 */
3277 U32 Reserved4; /*0x24 */ 3301 U8 Reserved1a; /*0x21 */
3302 U16 Reserved2; /*0x22 */
3303 U32 Reserved3; /*0x24 */
3278} MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0, 3304} MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
3279 *PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0, 3305 *PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
3280 Mpi2SasEnclosurePage0_t, *pMpi2SasEnclosurePage0_t, 3306 Mpi2SasEnclosurePage0_t, *pMpi2SasEnclosurePage0_t,
@@ -3285,6 +3311,8 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0 {
3285#define MPI2_SASENCLOSURE0_PAGEVERSION (0x04) 3311#define MPI2_SASENCLOSURE0_PAGEVERSION (0x04)
3286 3312
3287/*values for SAS Enclosure Page 0 Flags field */ 3313/*values for SAS Enclosure Page 0 Flags field */
3314#define MPI26_SAS_ENCLS0_FLAGS_OEMRD_VALID (0x0080)
3315#define MPI26_SAS_ENCLS0_FLAGS_OEMRD_COLLECTING (0x0040)
3288#define MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020) 3316#define MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020)
3289#define MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010) 3317#define MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010)
3290#define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F) 3318#define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
@@ -3298,6 +3326,8 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0 {
3298#define MPI26_ENCLOSURE0_PAGEVERSION (0x04) 3326#define MPI26_ENCLOSURE0_PAGEVERSION (0x04)
3299 3327
3300/*Values for Enclosure Page 0 Flags field */ 3328/*Values for Enclosure Page 0 Flags field */
3329#define MPI26_ENCLS0_FLAGS_OEMRD_VALID (0x0080)
3330#define MPI26_ENCLS0_FLAGS_OEMRD_COLLECTING (0x0040)
3301#define MPI26_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020) 3331#define MPI26_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020)
3302#define MPI26_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010) 3332#define MPI26_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010)
3303#define MPI26_ENCLS0_FLAGS_MNG_MASK (0x000F) 3333#define MPI26_ENCLS0_FLAGS_MNG_MASK (0x000F)
@@ -3696,8 +3726,9 @@ typedef struct _MPI26_PCIE_IO_UNIT1_PHY_DATA {
3696 Mpi26PCIeIOUnit1PhyData_t, *pMpi26PCIeIOUnit1PhyData_t; 3726 Mpi26PCIeIOUnit1PhyData_t, *pMpi26PCIeIOUnit1PhyData_t;
3697 3727
3698/*values for LinkFlags */ 3728/*values for LinkFlags */
3699#define MPI26_PCIEIOUNIT1_LINKFLAGS_DIS_SRIS (0x00) 3729#define MPI26_PCIEIOUNIT1_LINKFLAGS_DIS_SEPARATE_REFCLK (0x00)
3700#define MPI26_PCIEIOUNIT1_LINKFLAGS_EN_SRIS (0x01) 3730#define MPI26_PCIEIOUNIT1_LINKFLAGS_SRIS_EN (0x01)
3731#define MPI26_PCIEIOUNIT1_LINKFLAGS_SRNS_EN (0x02)
3701 3732
3702/* 3733/*
3703 *Host code (drivers, BIOS, utilities, etc.) should leave this define set to 3734 *Host code (drivers, BIOS, utilities, etc.) should leave this define set to
@@ -3714,7 +3745,7 @@ typedef struct _MPI26_CONFIG_PAGE_PIOUNIT_1 {
3714 U16 AdditionalControlFlags; /*0x0C */ 3745 U16 AdditionalControlFlags; /*0x0C */
3715 U16 NVMeMaxQueueDepth; /*0x0E */ 3746 U16 NVMeMaxQueueDepth; /*0x0E */
3716 U8 NumPhys; /*0x10 */ 3747 U8 NumPhys; /*0x10 */
3717 U8 Reserved1; /*0x11 */ 3748 U8 DMDReportPCIe; /*0x11 */
3718 U16 Reserved2; /*0x12 */ 3749 U16 Reserved2; /*0x12 */
3719 MPI26_PCIE_IO_UNIT1_PHY_DATA 3750 MPI26_PCIE_IO_UNIT1_PHY_DATA
3720 PhyData[MPI26_PCIE_IOUNIT1_PHY_MAX];/*0x14 */ 3751 PhyData[MPI26_PCIE_IOUNIT1_PHY_MAX];/*0x14 */
@@ -3736,6 +3767,12 @@ typedef struct _MPI26_CONFIG_PAGE_PIOUNIT_1 {
3736#define MPI26_PCIEIOUNIT1_MAX_RATE_8_0 (0x40) 3767#define MPI26_PCIEIOUNIT1_MAX_RATE_8_0 (0x40)
3737#define MPI26_PCIEIOUNIT1_MAX_RATE_16_0 (0x50) 3768#define MPI26_PCIEIOUNIT1_MAX_RATE_16_0 (0x50)
3738 3769
3770/*values for PCIe IO Unit Page 1 DMDReportPCIe */
3771#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_MASK (0x80)
3772#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_1_SEC (0x00)
3773#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_16_SEC (0x80)
3774#define MPI26_PCIEIOUNIT1_DMDRPT_DELAY_TIME_MASK (0x7F)
3775
3739/*see mpi2_pci.h for values for PCIe IO Unit Page 0 ControllerPhyDeviceInfo 3776/*see mpi2_pci.h for values for PCIe IO Unit Page 0 ControllerPhyDeviceInfo
3740 *values 3777 *values
3741 */ 3778 */
@@ -3788,6 +3825,9 @@ typedef struct _MPI26_CONFIG_PAGE_PSWITCH_1 {
3788 3825
3789/*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */ 3826/*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */
3790 3827
3828/* defines for the Flags field */
3829#define MPI26_PCIESWITCH1_2_RETIMER_PRESENCE (0x0002)
3830#define MPI26_PCIESWITCH1_RETIMER_PRESENCE (0x0001)
3791 3831
3792/**************************************************************************** 3832/****************************************************************************
3793* PCIe Device Config Pages (MPI v2.6 and later) 3833* PCIe Device Config Pages (MPI v2.6 and later)
@@ -3849,19 +3889,21 @@ typedef struct _MPI26_CONFIG_PAGE_PCIEDEV_0 {
3849 *field 3889 *field
3850 */ 3890 */
3851 3891
3852/*values for PCIe Device Page 0 Flags field */ 3892/*values for PCIe Device Page 0 Flags field*/
3853#define MPI26_PCIEDEV0_FLAGS_UNAUTHORIZED_DEVICE (0x8000) 3893#define MPI26_PCIEDEV0_FLAGS_2_RETIMER_PRESENCE (0x00020000)
3854#define MPI26_PCIEDEV0_FLAGS_ENABLED_FAST_PATH (0x4000) 3894#define MPI26_PCIEDEV0_FLAGS_RETIMER_PRESENCE (0x00010000)
3855#define MPI26_PCIEDEV0_FLAGS_FAST_PATH_CAPABLE (0x2000) 3895#define MPI26_PCIEDEV0_FLAGS_UNAUTHORIZED_DEVICE (0x00008000)
3856#define MPI26_PCIEDEV0_FLAGS_ASYNCHRONOUS_NOTIFICATION (0x0400) 3896#define MPI26_PCIEDEV0_FLAGS_ENABLED_FAST_PATH (0x00004000)
3857#define MPI26_PCIEDEV0_FLAGS_ATA_SW_PRESERVATION (0x0200) 3897#define MPI26_PCIEDEV0_FLAGS_FAST_PATH_CAPABLE (0x00002000)
3858#define MPI26_PCIEDEV0_FLAGS_UNSUPPORTED_DEVICE (0x0100) 3898#define MPI26_PCIEDEV0_FLAGS_ASYNCHRONOUS_NOTIFICATION (0x00000400)
3859#define MPI26_PCIEDEV0_FLAGS_ATA_48BIT_LBA_SUPPORTED (0x0080) 3899#define MPI26_PCIEDEV0_FLAGS_ATA_SW_PRESERVATION (0x00000200)
3860#define MPI26_PCIEDEV0_FLAGS_ATA_SMART_SUPPORTED (0x0040) 3900#define MPI26_PCIEDEV0_FLAGS_UNSUPPORTED_DEVICE (0x00000100)
3861#define MPI26_PCIEDEV0_FLAGS_ATA_NCQ_SUPPORTED (0x0020) 3901#define MPI26_PCIEDEV0_FLAGS_ATA_48BIT_LBA_SUPPORTED (0x00000080)
3862#define MPI26_PCIEDEV0_FLAGS_ATA_FUA_SUPPORTED (0x0010) 3902#define MPI26_PCIEDEV0_FLAGS_ATA_SMART_SUPPORTED (0x00000040)
3863#define MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID (0x0002) 3903#define MPI26_PCIEDEV0_FLAGS_ATA_NCQ_SUPPORTED (0x00000020)
3864#define MPI26_PCIEDEV0_FLAGS_DEVICE_PRESENT (0x0001) 3904#define MPI26_PCIEDEV0_FLAGS_ATA_FUA_SUPPORTED (0x00000010)
3905#define MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID (0x00000002)
3906#define MPI26_PCIEDEV0_FLAGS_DEVICE_PRESENT (0x00000001)
3865 3907
3866/* values for PCIe Device Page 0 SupportedLinkRates field */ 3908/* values for PCIe Device Page 0 SupportedLinkRates field */
3867#define MPI26_PCIEDEV0_LINK_RATE_16_0_SUPPORTED (0x08) 3909#define MPI26_PCIEDEV0_LINK_RATE_16_0_SUPPORTED (0x08)