| .. | .. |
|---|
| 1 | 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 | 6 | * Name: mpi2_cnfg.h |
|---|
| 7 | 7 | * Title: MPI Configuration messages and pages |
|---|
| 8 | 8 | * Creation Date: November 10, 2006 |
|---|
| 9 | 9 | * |
|---|
| 10 | | - * mpi2_cnfg.h Version: 02.00.42 |
|---|
| 10 | + * mpi2_cnfg.h Version: 02.00.47 |
|---|
| 11 | 11 | * |
|---|
| 12 | 12 | * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 |
|---|
| 13 | 13 | * prefix are for use only on MPI v2.5 products, and must not be used |
|---|
| .. | .. |
|---|
| 231 | 231 | * Added NOIOB field to PCIe Device Page 2. |
|---|
| 232 | 232 | * Added MPI26_PCIEDEV2_CAP_DATA_BLK_ALIGN_AND_GRAN to |
|---|
| 233 | 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 | * -------------------------------------------------------------------------- |
|---|
| 247 | + * 08-02-18 02.00.44 Added Slotx2, Slotx4 to ManPage 7. |
|---|
| 248 | + * 08-15-18 02.00.45 Added ProductSpecific field at end of IOC Page 1 |
|---|
| 249 | + * 08-28-18 02.00.46 Added NVMs Write Cache flag to IOUnitPage1 |
|---|
| 250 | + * Added DMDReport Delay Time defines to PCIeIOUnitPage1 |
|---|
| 251 | + * 12-17-18 02.00.47 Swap locations of Slotx2 and Slotx4 in ManPage 7. |
|---|
| 252 | + * 08-01-19 02.00.49 Add MPI26_MANPAGE7_FLAG_X2_X4_SLOT_INFO_VALID |
|---|
| 253 | + * Add MPI26_IOUNITPAGE1_NVME_WRCACHE_SHIFT |
|---|
| 235 | 254 | */ |
|---|
| 236 | 255 | |
|---|
| 237 | 256 | #ifndef MPI2_CNFG_H |
|---|
| .. | .. |
|---|
| 536 | 555 | #define MPI2_MFGPAGE_DEVID_SAS2308_1 (0x0086) |
|---|
| 537 | 556 | #define MPI2_MFGPAGE_DEVID_SAS2308_2 (0x0087) |
|---|
| 538 | 557 | #define MPI2_MFGPAGE_DEVID_SAS2308_3 (0x006E) |
|---|
| 539 | | -#define MPI2_MFGPAGE_DEVID_SAS2308_MPI_EP (0x02B0) |
|---|
| 558 | +#define MPI2_MFGPAGE_DEVID_SWITCH_MPI_EP (0x02B0) |
|---|
| 559 | +#define MPI2_MFGPAGE_DEVID_SWITCH_MPI_EP_1 (0x02B1) |
|---|
| 540 | 560 | |
|---|
| 541 | 561 | /*MPI v2.5 SAS products */ |
|---|
| 542 | 562 | #define MPI25_MFGPAGE_DEVID_SAS3004 (0x0096) |
|---|
| .. | .. |
|---|
| 568 | 588 | #define MPI26_MFGPAGE_DEVID_SAS3616 (0x00D1) |
|---|
| 569 | 589 | #define MPI26_MFGPAGE_DEVID_SAS3708 (0x00D2) |
|---|
| 570 | 590 | |
|---|
| 571 | | -#define MPI26_MFGPAGE_DEVID_SAS3816 (0x00A1) |
|---|
| 572 | | -#define MPI26_MFGPAGE_DEVID_SAS3916 (0x00A0) |
|---|
| 591 | +#define MPI26_MFGPAGE_DEVID_SEC_MASK_3916 (0x0003) |
|---|
| 592 | +#define MPI26_MFGPAGE_DEVID_INVALID0_3916 (0x00E0) |
|---|
| 593 | +#define MPI26_MFGPAGE_DEVID_CFG_SEC_3916 (0x00E1) |
|---|
| 594 | +#define MPI26_MFGPAGE_DEVID_HARD_SEC_3916 (0x00E2) |
|---|
| 595 | +#define MPI26_MFGPAGE_DEVID_INVALID1_3916 (0x00E3) |
|---|
| 596 | + |
|---|
| 597 | +#define MPI26_MFGPAGE_DEVID_SEC_MASK_3816 (0x0003) |
|---|
| 598 | +#define MPI26_MFGPAGE_DEVID_INVALID0_3816 (0x00E4) |
|---|
| 599 | +#define MPI26_MFGPAGE_DEVID_CFG_SEC_3816 (0x00E5) |
|---|
| 600 | +#define MPI26_MFGPAGE_DEVID_HARD_SEC_3816 (0x00E6) |
|---|
| 601 | +#define MPI26_MFGPAGE_DEVID_INVALID1_3816 (0x00E7) |
|---|
| 573 | 602 | |
|---|
| 574 | 603 | |
|---|
| 575 | 604 | /*Manufacturing Page 0 */ |
|---|
| .. | .. |
|---|
| 788 | 817 | U8 Location; /*0x14 */ |
|---|
| 789 | 818 | U8 ReceptacleID; /*0x15 */ |
|---|
| 790 | 819 | U16 Slot; /*0x16 */ |
|---|
| 791 | | - U32 Reserved2; /*0x18 */ |
|---|
| 820 | + U16 Slotx2; /*0x18 */ |
|---|
| 821 | + U16 Slotx4; /*0x1A */ |
|---|
| 792 | 822 | } MPI2_MANPAGE7_CONNECTOR_INFO, |
|---|
| 793 | 823 | *PTR_MPI2_MANPAGE7_CONNECTOR_INFO, |
|---|
| 794 | 824 | Mpi2ManPage7ConnectorInfo_t, |
|---|
| .. | .. |
|---|
| 863 | 893 | #define MPI2_MANPAGE7_FLAG_EVENTREPLAY_SLOT_ORDER (0x00000002) |
|---|
| 864 | 894 | #define MPI2_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001) |
|---|
| 865 | 895 | |
|---|
| 896 | +#define MPI26_MANPAGE7_FLAG_CONN_LANE_USE_PINOUT (0x00000020) |
|---|
| 897 | +#define MPI26_MANPAGE7_FLAG_X2_X4_SLOT_INFO_VALID (0x00000010) |
|---|
| 866 | 898 | |
|---|
| 867 | 899 | /* |
|---|
| 868 | 900 | *Generic structure to use for product-specific manufacturing pages |
|---|
| .. | .. |
|---|
| 932 | 964 | |
|---|
| 933 | 965 | #define MPI2_IOUNITPAGE1_PAGEVERSION (0x04) |
|---|
| 934 | 966 | |
|---|
| 935 | | -/*IO Unit Page 1 Flags defines */ |
|---|
| 967 | +/* IO Unit Page 1 Flags defines */ |
|---|
| 968 | +#define MPI26_IOUNITPAGE1_NVME_WRCACHE_MASK (0x00030000) |
|---|
| 969 | +#define MPI26_IOUNITPAGE1_NVME_WRCACHE_SHIFT (16) |
|---|
| 970 | +#define MPI26_IOUNITPAGE1_NVME_WRCACHE_NO_CHANGE (0x00000000) |
|---|
| 971 | +#define MPI26_IOUNITPAGE1_NVME_WRCACHE_ENABLE (0x00010000) |
|---|
| 972 | +#define MPI26_IOUNITPAGE1_NVME_WRCACHE_DISABLE (0x00020000) |
|---|
| 936 | 973 | #define MPI2_IOUNITPAGE1_ATA_SECURITY_FREEZE_LOCK (0x00004000) |
|---|
| 937 | 974 | #define MPI25_IOUNITPAGE1_NEW_DEVICE_FAST_PATH_DISABLE (0x00002000) |
|---|
| 938 | 975 | #define MPI25_IOUNITPAGE1_DISABLE_FAST_PATH (0x00001000) |
|---|
| .. | .. |
|---|
| 1372 | 1409 | U8 PCIBusNum; /*0x0E */ |
|---|
| 1373 | 1410 | U8 PCIDomainSegment; /*0x0F */ |
|---|
| 1374 | 1411 | U32 Reserved1; /*0x10 */ |
|---|
| 1375 | | - U32 Reserved2; /*0x14 */ |
|---|
| 1412 | + U32 ProductSpecific; /* 0x14 */ |
|---|
| 1376 | 1413 | } MPI2_CONFIG_PAGE_IOC_1, |
|---|
| 1377 | 1414 | *PTR_MPI2_CONFIG_PAGE_IOC_1, |
|---|
| 1378 | 1415 | Mpi2IOCPage1_t, *pMpi2IOCPage1_t; |
|---|
| .. | .. |
|---|
| 1511 | 1548 | U32 BiosOptions; /*0x04 */ |
|---|
| 1512 | 1549 | U32 IOCSettings; /*0x08 */ |
|---|
| 1513 | 1550 | U8 SSUTimeout; /*0x0C */ |
|---|
| 1514 | | - U8 Reserved1; /*0x0D */ |
|---|
| 1551 | + U8 MaxEnclosureLevel; /*0x0D */ |
|---|
| 1515 | 1552 | U16 Reserved2; /*0x0E */ |
|---|
| 1516 | 1553 | U32 DeviceSettings; /*0x10 */ |
|---|
| 1517 | 1554 | U16 NumberOfDevices; /*0x14 */ |
|---|
| .. | .. |
|---|
| 1530 | 1567 | #define MPI2_BIOSPAGE1_OPTIONS_BOOT_LIST_ADD_ALT_BOOT_DEVICE (0x00008000) |
|---|
| 1531 | 1568 | #define MPI2_BIOSPAGE1_OPTIONS_ADVANCED_CONFIG (0x00004000) |
|---|
| 1532 | 1569 | |
|---|
| 1533 | | -#define MPI2_BIOSPAGE1_OPTIONS_PNS_MASK (0x00003800) |
|---|
| 1534 | 1570 | #define MPI2_BIOSPAGE1_OPTIONS_PNS_MASK (0x00003800) |
|---|
| 1535 | 1571 | #define MPI2_BIOSPAGE1_OPTIONS_PNS_PBDHL (0x00000000) |
|---|
| 1536 | 1572 | #define MPI2_BIOSPAGE1_OPTIONS_PNS_ENCSLOSURE (0x00000800) |
|---|
| .. | .. |
|---|
| 3271 | 3307 | U16 NumSlots; /*0x18 */ |
|---|
| 3272 | 3308 | U16 StartSlot; /*0x1A */ |
|---|
| 3273 | 3309 | U8 ChassisSlot; /*0x1C */ |
|---|
| 3274 | | - U8 EnclosureLeve; /*0x1D */ |
|---|
| 3310 | + U8 EnclosureLevel; /*0x1D */ |
|---|
| 3275 | 3311 | U16 SEPDevHandle; /*0x1E */ |
|---|
| 3276 | | - U32 Reserved3; /*0x20 */ |
|---|
| 3277 | | - U32 Reserved4; /*0x24 */ |
|---|
| 3312 | + U8 OEMRD; /*0x20 */ |
|---|
| 3313 | + U8 Reserved1a; /*0x21 */ |
|---|
| 3314 | + U16 Reserved2; /*0x22 */ |
|---|
| 3315 | + U32 Reserved3; /*0x24 */ |
|---|
| 3278 | 3316 | } MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0, |
|---|
| 3279 | 3317 | *PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0, |
|---|
| 3280 | 3318 | Mpi2SasEnclosurePage0_t, *pMpi2SasEnclosurePage0_t, |
|---|
| .. | .. |
|---|
| 3285 | 3323 | #define MPI2_SASENCLOSURE0_PAGEVERSION (0x04) |
|---|
| 3286 | 3324 | |
|---|
| 3287 | 3325 | /*values for SAS Enclosure Page 0 Flags field */ |
|---|
| 3326 | +#define MPI26_SAS_ENCLS0_FLAGS_OEMRD_VALID (0x0080) |
|---|
| 3327 | +#define MPI26_SAS_ENCLS0_FLAGS_OEMRD_COLLECTING (0x0040) |
|---|
| 3288 | 3328 | #define MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020) |
|---|
| 3289 | 3329 | #define MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010) |
|---|
| 3290 | 3330 | #define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F) |
|---|
| .. | .. |
|---|
| 3298 | 3338 | #define MPI26_ENCLOSURE0_PAGEVERSION (0x04) |
|---|
| 3299 | 3339 | |
|---|
| 3300 | 3340 | /*Values for Enclosure Page 0 Flags field */ |
|---|
| 3341 | +#define MPI26_ENCLS0_FLAGS_OEMRD_VALID (0x0080) |
|---|
| 3342 | +#define MPI26_ENCLS0_FLAGS_OEMRD_COLLECTING (0x0040) |
|---|
| 3301 | 3343 | #define MPI26_ENCLS0_FLAGS_CHASSIS_SLOT_VALID (0x0020) |
|---|
| 3302 | 3344 | #define MPI26_ENCLS0_FLAGS_ENCL_LEVEL_VALID (0x0010) |
|---|
| 3303 | 3345 | #define MPI26_ENCLS0_FLAGS_MNG_MASK (0x000F) |
|---|
| .. | .. |
|---|
| 3696 | 3738 | Mpi26PCIeIOUnit1PhyData_t, *pMpi26PCIeIOUnit1PhyData_t; |
|---|
| 3697 | 3739 | |
|---|
| 3698 | 3740 | /*values for LinkFlags */ |
|---|
| 3699 | | -#define MPI26_PCIEIOUNIT1_LINKFLAGS_DIS_SRIS (0x00) |
|---|
| 3700 | | -#define MPI26_PCIEIOUNIT1_LINKFLAGS_EN_SRIS (0x01) |
|---|
| 3741 | +#define MPI26_PCIEIOUNIT1_LINKFLAGS_DIS_SEPARATE_REFCLK (0x00) |
|---|
| 3742 | +#define MPI26_PCIEIOUNIT1_LINKFLAGS_SRIS_EN (0x01) |
|---|
| 3743 | +#define MPI26_PCIEIOUNIT1_LINKFLAGS_SRNS_EN (0x02) |
|---|
| 3701 | 3744 | |
|---|
| 3702 | 3745 | /* |
|---|
| 3703 | 3746 | *Host code (drivers, BIOS, utilities, etc.) should leave this define set to |
|---|
| .. | .. |
|---|
| 3714 | 3757 | U16 AdditionalControlFlags; /*0x0C */ |
|---|
| 3715 | 3758 | U16 NVMeMaxQueueDepth; /*0x0E */ |
|---|
| 3716 | 3759 | U8 NumPhys; /*0x10 */ |
|---|
| 3717 | | - U8 Reserved1; /*0x11 */ |
|---|
| 3760 | + U8 DMDReportPCIe; /*0x11 */ |
|---|
| 3718 | 3761 | U16 Reserved2; /*0x12 */ |
|---|
| 3719 | 3762 | MPI26_PCIE_IO_UNIT1_PHY_DATA |
|---|
| 3720 | 3763 | PhyData[MPI26_PCIE_IOUNIT1_PHY_MAX];/*0x14 */ |
|---|
| .. | .. |
|---|
| 3735 | 3778 | #define MPI26_PCIEIOUNIT1_MAX_RATE_5_0 (0x30) |
|---|
| 3736 | 3779 | #define MPI26_PCIEIOUNIT1_MAX_RATE_8_0 (0x40) |
|---|
| 3737 | 3780 | #define MPI26_PCIEIOUNIT1_MAX_RATE_16_0 (0x50) |
|---|
| 3781 | + |
|---|
| 3782 | +/*values for PCIe IO Unit Page 1 DMDReportPCIe */ |
|---|
| 3783 | +#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_MASK (0x80) |
|---|
| 3784 | +#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_1_SEC (0x00) |
|---|
| 3785 | +#define MPI26_PCIEIOUNIT1_DMDRPT_UNIT_16_SEC (0x80) |
|---|
| 3786 | +#define MPI26_PCIEIOUNIT1_DMDRPT_DELAY_TIME_MASK (0x7F) |
|---|
| 3738 | 3787 | |
|---|
| 3739 | 3788 | /*see mpi2_pci.h for values for PCIe IO Unit Page 0 ControllerPhyDeviceInfo |
|---|
| 3740 | 3789 | *values |
|---|
| .. | .. |
|---|
| 3788 | 3837 | |
|---|
| 3789 | 3838 | /*use MPI26_PCIE_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */ |
|---|
| 3790 | 3839 | |
|---|
| 3840 | +/* defines for the Flags field */ |
|---|
| 3841 | +#define MPI26_PCIESWITCH1_2_RETIMER_PRESENCE (0x0002) |
|---|
| 3842 | +#define MPI26_PCIESWITCH1_RETIMER_PRESENCE (0x0001) |
|---|
| 3791 | 3843 | |
|---|
| 3792 | 3844 | /**************************************************************************** |
|---|
| 3793 | 3845 | * PCIe Device Config Pages (MPI v2.6 and later) |
|---|
| .. | .. |
|---|
| 3849 | 3901 | *field |
|---|
| 3850 | 3902 | */ |
|---|
| 3851 | 3903 | |
|---|
| 3852 | | -/*values for PCIe Device Page 0 Flags field */ |
|---|
| 3853 | | -#define MPI26_PCIEDEV0_FLAGS_UNAUTHORIZED_DEVICE (0x8000) |
|---|
| 3854 | | -#define MPI26_PCIEDEV0_FLAGS_ENABLED_FAST_PATH (0x4000) |
|---|
| 3855 | | -#define MPI26_PCIEDEV0_FLAGS_FAST_PATH_CAPABLE (0x2000) |
|---|
| 3856 | | -#define MPI26_PCIEDEV0_FLAGS_ASYNCHRONOUS_NOTIFICATION (0x0400) |
|---|
| 3857 | | -#define MPI26_PCIEDEV0_FLAGS_ATA_SW_PRESERVATION (0x0200) |
|---|
| 3858 | | -#define MPI26_PCIEDEV0_FLAGS_UNSUPPORTED_DEVICE (0x0100) |
|---|
| 3859 | | -#define MPI26_PCIEDEV0_FLAGS_ATA_48BIT_LBA_SUPPORTED (0x0080) |
|---|
| 3860 | | -#define MPI26_PCIEDEV0_FLAGS_ATA_SMART_SUPPORTED (0x0040) |
|---|
| 3861 | | -#define MPI26_PCIEDEV0_FLAGS_ATA_NCQ_SUPPORTED (0x0020) |
|---|
| 3862 | | -#define MPI26_PCIEDEV0_FLAGS_ATA_FUA_SUPPORTED (0x0010) |
|---|
| 3863 | | -#define MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID (0x0002) |
|---|
| 3864 | | -#define MPI26_PCIEDEV0_FLAGS_DEVICE_PRESENT (0x0001) |
|---|
| 3904 | +/*values for PCIe Device Page 0 Flags field*/ |
|---|
| 3905 | +#define MPI26_PCIEDEV0_FLAGS_2_RETIMER_PRESENCE (0x00020000) |
|---|
| 3906 | +#define MPI26_PCIEDEV0_FLAGS_RETIMER_PRESENCE (0x00010000) |
|---|
| 3907 | +#define MPI26_PCIEDEV0_FLAGS_UNAUTHORIZED_DEVICE (0x00008000) |
|---|
| 3908 | +#define MPI26_PCIEDEV0_FLAGS_ENABLED_FAST_PATH (0x00004000) |
|---|
| 3909 | +#define MPI26_PCIEDEV0_FLAGS_FAST_PATH_CAPABLE (0x00002000) |
|---|
| 3910 | +#define MPI26_PCIEDEV0_FLAGS_ASYNCHRONOUS_NOTIFICATION (0x00000400) |
|---|
| 3911 | +#define MPI26_PCIEDEV0_FLAGS_ATA_SW_PRESERVATION (0x00000200) |
|---|
| 3912 | +#define MPI26_PCIEDEV0_FLAGS_UNSUPPORTED_DEVICE (0x00000100) |
|---|
| 3913 | +#define MPI26_PCIEDEV0_FLAGS_ATA_48BIT_LBA_SUPPORTED (0x00000080) |
|---|
| 3914 | +#define MPI26_PCIEDEV0_FLAGS_ATA_SMART_SUPPORTED (0x00000040) |
|---|
| 3915 | +#define MPI26_PCIEDEV0_FLAGS_ATA_NCQ_SUPPORTED (0x00000020) |
|---|
| 3916 | +#define MPI26_PCIEDEV0_FLAGS_ATA_FUA_SUPPORTED (0x00000010) |
|---|
| 3917 | +#define MPI26_PCIEDEV0_FLAGS_ENCL_LEVEL_VALID (0x00000002) |
|---|
| 3918 | +#define MPI26_PCIEDEV0_FLAGS_DEVICE_PRESENT (0x00000001) |
|---|
| 3865 | 3919 | |
|---|
| 3866 | 3920 | /* values for PCIe Device Page 0 SupportedLinkRates field */ |
|---|
| 3867 | 3921 | #define MPI26_PCIEDEV0_LINK_RATE_16_0_SUPPORTED (0x08) |
|---|
| .. | .. |
|---|
| 3882 | 3936 | U32 MaximumDataTransferSize; /*0x0C */ |
|---|
| 3883 | 3937 | U32 Capabilities; /*0x10 */ |
|---|
| 3884 | 3938 | U16 NOIOB; /* 0x14 */ |
|---|
| 3885 | | - U16 Reserved2; /* 0x16 */ |
|---|
| 3939 | + U16 ShutdownLatency; /* 0x16 */ |
|---|
| 3940 | + U16 VendorID; /* 0x18 */ |
|---|
| 3941 | + U16 DeviceID; /* 0x1A */ |
|---|
| 3942 | + U16 SubsystemVendorID; /* 0x1C */ |
|---|
| 3943 | + U16 SubsystemID; /* 0x1E */ |
|---|
| 3944 | + U8 RevisionID; /* 0x20 */ |
|---|
| 3945 | + U8 Reserved21[3]; /* 0x21 */ |
|---|
| 3886 | 3946 | } MPI26_CONFIG_PAGE_PCIEDEV_2, *PTR_MPI26_CONFIG_PAGE_PCIEDEV_2, |
|---|
| 3887 | 3947 | Mpi26PCIeDevicePage2_t, *pMpi26PCIeDevicePage2_t; |
|---|
| 3888 | 3948 | |
|---|