1 /** @file 2 Support for the PCI Express 3.0 standard. 3 4 This header file may not define all structures. Please extend as required. 5 6 Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR> 7 This program and the accompanying materials 8 are licensed and made available under the terms and conditions of the BSD License 9 which accompanies this distribution. The full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 **/ 16 17 #ifndef _PCIEXPRESS30_H_ 18 #define _PCIEXPRESS30_H_ 19 20 #include <IndustryStandard/PciExpress21.h> 21 22 #pragma pack(1) 23 24 #define PCI_EXPRESS_EXTENDED_CAPABILITY_SECONDARY_PCIE_ID 0x0019 25 #define PCI_EXPRESS_EXTENDED_CAPABILITY_SECONDARY_PCIE_VER1 0x1 26 27 typedef union { 28 struct { 29 UINT32 PerformEqualization : 1; 30 UINT32 LinkEqualizationRequestInterruptEnable : 1; 31 UINT32 Reserved : 30; 32 } Bits; 33 UINT32 Uint32; 34 } PCI_EXPRESS_REG_LINK_CONTROL3; 35 36 typedef union { 37 struct { 38 UINT16 DownstreamPortTransmitterPreset : 4; 39 UINT16 DownstreamPortReceiverPresetHint : 3; 40 UINT16 Reserved : 1; 41 UINT16 UpstreamPortTransmitterPreset : 4; 42 UINT16 UpstreamPortReceiverPresetHint : 3; 43 UINT16 Reserved2 : 1; 44 } Bits; 45 UINT16 Uint16; 46 } PCI_EXPRESS_REG_LANE_EQUALIZATION_CONTROL; 47 48 typedef struct { 49 PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; 50 PCI_EXPRESS_REG_LINK_CONTROL3 LinkControl3; 51 UINT32 LaneErrorStatus; 52 PCI_EXPRESS_REG_LANE_EQUALIZATION_CONTROL EqualizationControl[2]; 53 } PCI_EXPRESS_EXTENDED_CAPABILITIES_SECONDARY_PCIE; 54 55 #pragma pack() 56 57 #endif 58