1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef PCH_PCIE_DEVICE_TABLE_H_
#define PCH_PCIE_DEVICE_TABLE_H_
//
// PCIe device table PPI GUID.
//
extern EFI_GUID gPchPcieDeviceTablePpiGuid;
typedef enum {
PchPcieOverrideDisabled = 0,
PchPcieL1L2Override = 0x01,
PchPcieL1SubstatesOverride = 0x02,
PchPcieL1L2AndL1SubstatesOverride = 0x03,
PchPcieLtrOverride = 0x04
} PCH_PCIE_OVERRIDE_CONFIG;
/**
PCIe device table entry entry
The PCIe device table is being used to override PCIe device ASPM settings.
To take effect table consisting of such entries must be instelled as PPI
on gPchPcieDeviceTablePpiGuid.
Last entry VendorId must be 0.
**/
typedef struct {
UINT16 VendorId; ///< The vendor Id of Pci Express card ASPM setting override, 0xFFFF means any Vendor ID
UINT16 DeviceId; ///< The Device Id of Pci Express card ASPM setting override, 0xFFFF means any Device ID
UINT8 RevId; ///< The Rev Id of Pci Express card ASPM setting override, 0xFF means all steppings
UINT8 BaseClassCode; ///< The Base Class Code of Pci Express card ASPM setting override, 0xFF means all base class
UINT8 SubClassCode; ///< The Sub Class Code of Pci Express card ASPM setting override, 0xFF means all sub class
UINT8 EndPointAspm; ///< Override device ASPM (see: PCH_PCIE_ASPM_CONTROL)
///< Bit 1 must be set in OverrideConfig for this field to take effect
UINT16 OverrideConfig; ///< The override config bitmap (see: PCH_PCIE_OVERRIDE_CONFIG).
/**
The L1Substates Capability Offset Override. (applicable if bit 2 is set in OverrideConfig)
This field can be zero if only the L1 Substate value is going to be override.
**/
UINT16 L1SubstatesCapOffset;
/**
L1 Substate Capability Mask. (applicable if bit 2 is set in OverrideConfig)
Set to zero then the L1 Substate Capability [3:0] is ignored, and only L1s values are override.
Only bit [3:0] are applicable. Other bits are ignored.
**/
UINT8 L1SubstatesCapMask;
/**
L1 Substate Port Common Mode Restore Time Override. (applicable if bit 2 is set in OverrideConfig)
L1sCommonModeRestoreTime and L1sTpowerOnScale can have a valid value of 0, but not the L1sTpowerOnValue.
If L1sTpowerOnValue is zero, all L1sCommonModeRestoreTime, L1sTpowerOnScale, and L1sTpowerOnValue are ignored,
and only L1SubstatesCapOffset is override.
**/
UINT8 L1sCommonModeRestoreTime;
/**
L1 Substate Port Tpower_on Scale Override. (applicable if bit 2 is set in OverrideConfig)
L1sCommonModeRestoreTime and L1sTpowerOnScale can have a valid value of 0, but not the L1sTpowerOnValue.
If L1sTpowerOnValue is zero, all L1sCommonModeRestoreTime, L1sTpowerOnScale, and L1sTpowerOnValue are ignored,
and only L1SubstatesCapOffset is override.
**/
UINT8 L1sTpowerOnScale;
/**
L1 Substate Port Tpower_on Value Override. (applicable if bit 2 is set in OverrideConfig)
L1sCommonModeRestoreTime and L1sTpowerOnScale can have a valid value of 0, but not the L1sTpowerOnValue.
If L1sTpowerOnValue is zero, all L1sCommonModeRestoreTime, L1sTpowerOnScale, and L1sTpowerOnValue are ignored,
and only L1SubstatesCapOffset is override.
**/
UINT8 L1sTpowerOnValue;
/**
SnoopLatency bit definition
Note: All Reserved bits must be set to 0
BIT[15] - When set to 1b, indicates that the values in bits 9:0 are valid
When clear values in bits 9:0 will be ignored
BITS[14:13] - Reserved
BITS[12:10] - Value in bits 9:0 will be multiplied with the scale in these bits
000b - 1 ns
001b - 32 ns
010b - 1024 ns
011b - 32,768 ns
100b - 1,048,576 ns
101b - 33,554,432 ns
110b - Reserved
111b - Reserved
BITS[9:0] - Snoop Latency Value. The value in these bits will be multiplied with
the scale in bits 12:10
This field takes effect only if bit 3 is set in OverrideConfig.
**/
UINT16 SnoopLatency;
/**
NonSnoopLatency bit definition
Note: All Reserved bits must be set to 0
BIT[15] - When set to 1b, indicates that the values in bits 9:0 are valid
When clear values in bits 9:0 will be ignored
BITS[14:13] - Reserved
BITS[12:10] - Value in bits 9:0 will be multiplied with the scale in these bits
000b - 1 ns
001b - 32 ns
010b - 1024 ns
011b - 32,768 ns
100b - 1,048,576 ns
101b - 33,554,432 ns
110b - Reserved
111b - Reserved
BITS[9:0] - Non Snoop Latency Value. The value in these bits will be multiplied with
the scale in bits 12:10
This field takes effect only if bit 3 is set in OverrideConfig.
**/
UINT16 NonSnoopLatency;
UINT32 Reserved;
} PCH_PCIE_DEVICE_OVERRIDE;
#endif // PCH_PCIE_DEVICE_TABLE_H_
|