TianoCore EDK2 master
Loading...
Searching...
No Matches
PciExpress40.h
Go to the documentation of this file.
1
12#ifndef _PCIEXPRESS40_H_
13#define _PCIEXPRESS40_H_
14
16
17#pragma pack(1)
18
23#define PCI_EXPRESS_EXTENDED_CAPABILITY_PHYSICAL_LAYER_16_0_ID 0x0026
24#define PCI_EXPRESS_EXTENDED_CAPABILITY_PHYSICAL_LAYER_16_0_VER1 0x1
25
26// Register offsets from Physical Layer PCI-E Ext Cap Header
27#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_CAPABILITIES_OFFSET 0x04
28#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_CONTROL_OFFSET 0x08
29#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_STATUS_OFFSET 0x0C
30#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_LOCAL_DATA_PARITY_STATUS_OFFSET 0x10
31#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_FIRST_RETIMER_DATA_PARITY_STATUS_OFFSET 0x14
32#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_SECOND_RETIMER_DATA_PARITY_STATUS_OFFSET 0x18
33#define PCI_EXPRESS_REG_PHYSICAL_LAYER_16_0_LANE_EQUALIZATION_CONTROL_OFFSET 0x20
34
35typedef union {
36 struct {
37 UINT32 Reserved : 32; // Reserved bit 0:31
38 } Bits;
39 UINT32 Uint32;
41
42typedef union {
43 struct {
44 UINT32 Reserved : 32; // Reserved bit 0:31
45 } Bits;
46 UINT32 Uint32;
48
49typedef union {
50 struct {
51 UINT32 EqualizationComplete : 1; // bit 0
52 UINT32 EqualizationPhase1Success : 1; // bit 1
53 UINT32 EqualizationPhase2Success : 1; // bit 2
54 UINT32 EqualizationPhase3Success : 1; // bit 3
55 UINT32 LinkEqualizationRequest : 1; // bit 4
56 UINT32 Reserved : 27; // Reserved bit 5:31
57 } Bits;
58 UINT32 Uint32;
60
61typedef union {
62 struct {
63 UINT8 DownstreamPortTransmitterPreset : 4; // bit 0..3
64 UINT8 UpstreamPortTransmitterPreset : 4; // bit 4..7
65 } Bits;
66 UINT8 Uint8;
68
69typedef struct {
74 UINT32 LocalDataParityMismatchStatus;
75 UINT32 FirstRetimerDataParityMismatchStatus;
76 UINT32 SecondRetimerDataParityMismatchStatus;
77 UINT32 Reserved;
81
85#define PCI_EXPRESS_EXTENDED_CAPABILITY_DESIGNATED_VENDOR_SPECIFIC_ID 0x0023
86
87typedef union {
88 struct {
89 UINT32 DvsecVendorId : 16; // bit 0..15
90 UINT32 DvsecRevision : 4; // bit 16..19
91 UINT32 DvsecLength : 12; // bit 20..31
92 } Bits;
93 UINT32 Uint32;
95
96typedef union {
97 struct {
98 UINT16 DvsecId : 16; // bit 0..15
99 } Bits;
100 UINT16 Uint16;
102
103typedef struct {
105 PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DesignatedVendorSpecificHeader1;
106 PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DesignatedVendorSpecificHeader2;
107 UINT8 DesignatedVendorSpecific[1];
110
111#pragma pack()
112
113#endif