diff options
Diffstat (limited to 'src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspmUpd.h')
-rw-r--r-- | src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspmUpd.h | 1587 |
1 files changed, 1587 insertions, 0 deletions
diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspmUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspmUpd.h new file mode 100644 index 0000000000..525f85364c --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspmUpd.h @@ -0,0 +1,1587 @@ +/** @file + +Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +* Neither the name of Intel Corporation nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + + This file is automatically generated. Please do NOT modify !!! + +**/ + +#ifndef __FSPMUPD_H__ +#define __FSPMUPD_H__ + +#include "FspUpd.h" +#include <fsp/upd.h> + + +/// +/// The ChipsetInit Info structure provides the information of ME ChipsetInit CRC and BIOS ChipsetInit CRC. +/// +struct CHIPSET_INIT_INFO { + uint8_t Revision; + uint8_t Rsvd[3]; + uint16_t MeChipInitCrc; + uint16_t BiosChipInitCrc; +} __attribute__((packed)); + + +/** Fsp M Configuration +**/ +struct FSP_M_CONFIG { + +/** Offset 0x0040 - Platform Reserved Memory Size + The minimum platform memory size required to pass control into DXE + 0x400000 : 0x400000 +**/ + uint64_t PlatformMemorySize; + +/** Offset 0x0048 - Memory SPD Pointer Channel 0 Dimm 0 + Pointer to SPD data in Memory +**/ + uint32_t MemorySpdPtr00; + +/** Offset 0x004C - Memory SPD Pointer Channel 0 Dimm 1 + Pointer to SPD data in Memory +**/ + uint32_t MemorySpdPtr01; + +/** Offset 0x0050 - Memory SPD Pointer Channel 1 Dimm 0 + Pointer to SPD data in Memory +**/ + uint32_t MemorySpdPtr10; + +/** Offset 0x0054 - Memory SPD Pointer Channel 1 Dimm 1 + Pointer to SPD data in Memory +**/ + uint32_t MemorySpdPtr11; + +/** Offset 0x0058 - SPD Data Length + Length of SPD Data + 0x100:256 Bytes, 0x200:512 Bytes +**/ + uint16_t MemorySpdDataLen; + +/** Offset 0x005A - Dq Byte Map CH0 + Dq byte mapping between CPU and DRAM, Channel 0: board-dependent +**/ + uint8_t DqByteMapCh0[12]; + +/** Offset 0x0066 - Dq Byte Map CH1 + Dq byte mapping between CPU and DRAM, Channel 1: board-dependent +**/ + uint8_t DqByteMapCh1[12]; + +/** Offset 0x0072 - Dqs Map CPU to DRAM CH 0 + Set Dqs mapping relationship between CPU and DRAM, Channel 0: board-dependent +**/ + uint8_t DqsMapCpu2DramCh0[8]; + +/** Offset 0x007A - Dqs Map CPU to DRAM CH 1 + Set Dqs mapping relationship between CPU and DRAM, Channel 1: board-dependent +**/ + uint8_t DqsMapCpu2DramCh1[8]; + +/** Offset 0x0082 - RcompResister settings + Indicates RcompReister settings: Board-dependent +**/ + uint16_t RcompResistor[3]; + +/** Offset 0x0088 - RcompTarget settings + RcompTarget settings: board-dependent +**/ + uint16_t RcompTarget[5]; + +/** Offset 0x0092 - Dqs Pins Interleaved Setting + Indicates DqPinsInterleaved setting: board-dependent + $EN_DIS +**/ + uint8_t DqPinsInterleaved; + +/** Offset 0x0093 - VREF_CA + CA Vref routing: board-dependent + 0:VREF_CA goes to both CH_A and CH_B, 1: VREF_CA to CH_A and VREF_DQ_A to CH_B, + 2:VREF_CA to CH_A and VREF_DQ_B to CH_B +**/ + uint8_t CaVrefConfig; + +/** Offset 0x0094 - Smram Mask + The SMM Regions AB-SEG and/or H-SEG reserved + 0: Neither, 1:AB-SEG, 2:H-SEG, 3: Both +**/ + uint8_t SmramMask; + +/** Offset 0x0095 - MRC Fast Boot + Enables/Disable the MRC fast path thru the MRC + $EN_DIS +**/ + uint8_t MrcFastBoot; + +/** Offset 0x0096 +**/ + uint16_t UnusedUpdSpace0; + +/** Offset 0x0098 - Intel Enhanced Debug + Intel Enhanced Debug (IED): 0=Disabled, 0x400000=Enabled and 4MB SMRAM occupied + 0 : Disable, 0x400000 : Enable +**/ + uint32_t IedSize; + +/** Offset 0x009C - Tseg Size + Size of SMRAM memory reserved. 0x400000 for Release build and 0x1000000 for Debug build + 0x0400000:4MB, 0x01000000:16MB +**/ + uint32_t TsegSize; + +/** Offset 0x00A0 - MMIO Size + Size of MMIO space reserved for devices. 0(Default)=Auto, non-Zero=size in MB +**/ + uint16_t MmioSize; + +/** Offset 0x00A2 - Probeless Trace + Probeless Trace: 0=Disabled, 1=Enable. Enabling Probeless Trace will reserve 128MB. + This also requires IED to be enabled. + $EN_DIS +**/ + uint8_t ProbelessTrace; + +/** Offset 0x00A3 +**/ + uint16_t UnusedUpdSpace1; + +/** Offset 0x00A5 - Enable SMBus + Enable/disable SMBus controller. + $EN_DIS +**/ + uint8_t SmbusEnable; + +/** Offset 0x00A6 - Enable Trace Hub + Enable/disable Trace Hub function. + $EN_DIS +**/ + uint8_t EnableTraceHub; + +/** Offset 0x00A7 +**/ + uint8_t UnusedUpdSpace2[60]; + +/** Offset 0x00E3 - Internal Graphics Pre-allocated Memory + Size of memory preallocated for internal graphics. + 0x00:0 MB, 0x01:32 MB, 0x02:64 MB +**/ + uint8_t IgdDvmt50PreAlloc; + +/** Offset 0x00E4 - Internal Graphics + Enable/disable internal graphics. + $EN_DIS +**/ + uint8_t InternalGfx; + +/** Offset 0x00E5 - Aperture Size + Select the Aperture Size. + 0:128 MB, 1:256 MB, 2:512 MB +**/ + uint8_t ApertureSize; + +/** Offset 0x00E6 - SA GV + System Agent dynamic frequency support and when enabled memory will be training + at two different frequencies. Only effects ULX/ULT CPUs. 0=Disabled, 1=FixedLow, + 2=FixedHigh, and 3=Enabled. + 0:Disabled, 1:FixedLow, 2:FixedHigh, 3:Enabled +**/ + uint8_t SaGv; + +/** Offset 0x00E7 - Rank Margin Tool + Enable/disable Rank Margin Tool. + $EN_DIS +**/ + uint8_t RMT; + +/** Offset 0x00E8 - DDR Frequency Limit + Maximum Memory Frequency Selections in Mhz. Options are 1067, 1333, 1600, 1867, + 2133, 2400 and 0 for Auto. + 1067:1067, 1333:1333, 1600:1600, 1867:1867, 2133:2133, 2400:2400, 0:Auto +**/ + uint16_t DdrFreqLimit; + +/** Offset 0x00EA - Board Type + MrcBoardType, Options are 0=Mobile/Mobile Halo, 1=Desktop/DT Halo, 5=ULT/ULX/Mobile + Halo, 7=UP Server + 0:Mobile/Mobile Halo, 1:Desktop/DT Halo, 5:ULT/ULX/Mobile Halo, 7:UP Server +**/ + uint8_t UserBd; + +/** Offset 0x00EB +**/ + uint8_t UnusedUpdSpace3[105]; + +/** Offset 0x0154 - MMA Test Content Pointer + Pointer to MMA Test Content in Memory +**/ + uint32_t MmaTestContentPtr; + +/** Offset 0x0158 - MMA Test Content Size + Size of MMA Test Content in Memory +**/ + uint32_t MmaTestContentSize; + +/** Offset 0x015C - MMA Test Config Pointer + Pointer to MMA Test Config in Memory +**/ + uint32_t MmaTestConfigPtr; + +/** Offset 0x0160 - MMA Test Config Size + Size of MMA Test Config in Memory +**/ + uint32_t MmaTestConfigSize; + +/** Offset 0x0164 +**/ + uint8_t UnusedUpdSpace4[19]; + +/** Offset 0x0177 - SPD Profile Selected + Select DIMM timing profile. Options are 0=Default profile, 1=Custom profile, 2=XMP + Profile 1, 3=XMP Profile 2 + 0:Default profile, 1:Custom profile, 2:XMP profile 1, 3:XMP profile 2 +**/ + uint8_t SpdProfileSelected; + +/** Offset 0x0178 - Memory Voltage + Memory Voltage Override (Vddq). Default = no override + 0:Default, 1200:1.20 Volts, 1250:1.25 Volts, 1300:1.30 Volts, 1350:1.35 Volts, 1400:1.40 + Volts, 1450:1.45 Volts, 1500:1.50 Volts, 1550:1.55 Volts, 1600:1.60 Volts, 1650:1.65 Volts +**/ + uint16_t VddVoltage; + +/** Offset 0x017A - Memory Reference Clock + Automatic, 100MHz, 133MHz. + 0:Auto, 1:133MHz, 2:100MHz +**/ + uint8_t RefClk; + +/** Offset 0x017B - Memory Ratio + Automatic or the frequency will equal ratio times reference clock. Set to Auto to + recalculate memory timings listed below. + 0:Auto, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:10, 11:11, 12:12, 13:13, 14:14, 15:15 +**/ + uint8_t Ratio; + +/** Offset 0x017C - QCLK Odd Ratio + Adds 133 or 100 MHz to QCLK frequency, depending on RefClk + $EN_DIS +**/ + uint8_t OddRatioMode; + +/** Offset 0x017D - tCL + CAS Latency, 0: AUTO, max: 31 +**/ + uint8_t tCL; + +/** Offset 0x017E - tCWL + Min CAS Write Latency Delay Time, 0: AUTO, max: 20 +**/ + uint8_t tCWL; + +/** Offset 0x017F - tFAW + Min Four Activate Window Delay Time, 0: AUTO, max: 63 +**/ + uint16_t tFAW; + +/** Offset 0x0181 - tRAS + RAS Active Time, 0: AUTO, max: 64 +**/ + uint16_t tRAS; + +/** Offset 0x0183 - tRCD/tRP + RAS to CAS delay time and Row Precharge delay time, 0: AUTO, max: 63 +**/ + uint8_t tRCDtRP; + +/** Offset 0x0184 - tREFI + Refresh Interval, 0: AUTO, max: 65535 +**/ + uint16_t tREFI; + +/** Offset 0x0186 - tRFC + Min Refresh Recovery Delay Time, 0: AUTO, max: 1023 +**/ + uint16_t tRFC; + +/** Offset 0x0188 - tRRD + Min Row Active to Row Active Delay Time, 0: AUTO, max: 15 +**/ + uint8_t tRRD; + +/** Offset 0x0189 - tRTP + Min Internal Read to Precharge Command Delay Time, 0: AUTO, max: 15. DDR4 legal + values: 5, 6, 7, 8, 9, 10, 12 +**/ + uint8_t tRTP; + +/** Offset 0x018A - tWR + Min Write Recovery Time, 0: AUTO, legal values: 5, 6, 7, 8, 10, 12, 14, 16, 18, 20, 24 + 0:Auto, 5:5, 6:6, 7:7, 8:8, 10:10, 12:12, 14:14, 16:16, 18:18, 20:20, 24:24 +**/ + uint8_t tWR; + +/** Offset 0x018B - tWTR + Min Internal Write to Read Command Delay Time, 0: AUTO, max: 28 +**/ + uint8_t tWTR; + +/** Offset 0x018C - NMode + System command rate, range 0-2, 0 means auto, 1 = 1N, 2 = 2N +**/ + uint8_t NModeSupport; + +/** Offset 0x018D - DllBwEn[0] + DllBwEn[0], for 1067 (0..7) +**/ + uint8_t DllBwEn0; + +/** Offset 0x018E - DllBwEn[1] + DllBwEn[1], for 1333 (0..7) +**/ + uint8_t DllBwEn1; + +/** Offset 0x018F - DllBwEn[2] + DllBwEn[2], for 1600 (0..7) +**/ + uint8_t DllBwEn2; + +/** Offset 0x0190 - DllBwEn[3] + DllBwEn[3], for 1867 and up (0..7) +**/ + uint8_t DllBwEn3; + +/** Offset 0x0191 +**/ + uint8_t UnusedUpdSpace5[15]; + +/** Offset 0x01A0 - HECI Timeouts + Enable/Disable. 0: Disable, disable timeout check for HECI, 1: enable + $EN_DIS +**/ + uint8_t HeciTimeouts; + +/** Offset 0x01A1 - HECI1 BAR address + BAR address of HECI1 +**/ + uint32_t Heci1BarAddress; + +/** Offset 0x01A5 - HECI2 BAR address + BAR address of HECI2 +**/ + uint32_t Heci2BarAddress; + +/** Offset 0x01A9 - HECI3 BAR address + BAR address of HECI3 +**/ + uint32_t Heci3BarAddress; + +/** Offset 0x01AD +**/ + uint8_t UnusedUpdSpace6[115]; + +/** Offset 0x0220 - SG dGPU Power Delay + SG dGPU delay interval after power enabling: 0=Minimal, 1000=Maximum, default is + 300=300 microseconds +**/ + uint16_t SgDelayAfterPwrEn; + +/** Offset 0x0222 - SG dGPU Reset Delay + SG dGPU delay interval for Reset complete: 0=Minimal, 1000=Maximum, default is 100=100 + microseconds +**/ + uint16_t SgDelayAfterHoldReset; + +/** Offset 0x0224 - MMIO size adjustment for AUTO mode + Positive number means increasing MMIO size, Negative value means decreasing MMIO + size: 0 (Default)=no change to AUTO mode MMIO size +**/ + uint16_t MmioSizeAdjustment; + +/** Offset 0x0226 - Enable/Disable DMI GEN3 Static EQ Phase1 programming + Program DMI Gen3 EQ Phase1 Static Presets. Disabled(0x0): Disable EQ Phase1 Static + Presets Programming, Enabled(0x1)(Default): Enable EQ Phase1 Static Presets Programming + $EN_DIS +**/ + uint8_t DmiGen3ProgramStaticEq; + +/** Offset 0x0227 - Enable/Disable PEG 0 + Disabled(0x0): Disable PEG Port, Enabled(0x1): Enable PEG Port (If Silicon SKU permits + it), Auto(0x2)(Default): If an endpoint is present, enable the PEG Port, Disable otherwise + 0:Disable, 1:Enable, 2:AUTO +**/ + uint8_t Peg0Enable; + +/** Offset 0x0228 - Enable/Disable PEG 1 + Disabled(0x0): Disable PEG Port, Enabled(0x1): Enable PEG Port (If Silicon SKU permits + it), Auto(0x2)(Default): If an endpoint is present, enable the PEG Port, Disable otherwise + 0:Disable, 1:Enable, 2:AUTO +**/ + uint8_t Peg1Enable; + +/** Offset 0x0229 - Enable/Disable PEG 2 + Disabled(0x0): Disable PEG Port, Enabled(0x1): Enable PEG Port (If Silicon SKU permits + it), Auto(0x2)(Default): If an endpoint is present, enable the PEG Port, Disable otherwise + 0:Disable, 1:Enable, 2:AUTO +**/ + uint8_t Peg2Enable; + +/** Offset 0x022A - PEG 0 Max Link Speed + Auto (Default)(0x0): Maximum possible link speed, Gen1(0x1): Limit Link to Gen1 + Speed, Gen2(0x2): Limit Link to Gen2 Speed, Gen3(0x3):Limit Link to Gen3 Speed + 0:Auto, 1:Gen1, 2:Gen2, 3:Gen3 +**/ + uint8_t Peg0MaxLinkSpeed; + +/** Offset 0x022B - PEG 1 Max Link Speed + Auto (Default)(0x0): Maximum possible link speed, Gen1(0x1): Limit Link to Gen1 + Speed, Gen2(0x2): Limit Link to Gen2 Speed, Gen3(0x3):Limit Link to Gen3 Speed + 0:Auto, 1:Gen1, 2:Gen2, 3:Gen3 +**/ + uint8_t Peg1MaxLinkSpeed; + +/** Offset 0x022C - PEG 2 Max Link Speed + Auto (Default)(0x0): Maximum possible link speed, Gen1(0x1): Limit Link to Gen1 + Speed, Gen2(0x2): Limit Link to Gen2 Speed, Gen3(0x3):Limit Link to Gen3 Speed + 0:Auto, 1:Gen1, 2:Gen2, 3:Gen3 +**/ + uint8_t Peg2MaxLinkSpeed; + +/** Offset 0x022D - PEG 0 Max Link Width + Auto (Default)(0x0): Maximum possible link width, (0x1): Limit Link to x1, (0x2): + Limit Link to x2, (0x3):Limit Link to x4, (0x4): Limit Link to x8 + 0:Auto, 1:x1, 2:x2, 3:x4, 4:x8 +**/ + uint8_t Peg0MaxLinkWidth; + +/** Offset 0x022E - PEG 1 Max Link Width + Auto (Default)(0x0): Maximum possible link width, (0x1): Limit Link to x1, (0x2): + Limit Link to x2, (0x3):Limit Link to x4 + 0:Auto, 1:x1, 2:x2, 3:x4 +**/ + uint8_t Peg1MaxLinkWidth; + +/** Offset 0x022F - PEG 2 Max Link Width + Auto (Default)(0x0): Maximum possible link width, (0x1): Limit Link to x1, (0x2): + Limit Link to x2 + 0:Auto, 1:x1, 2:x2 +**/ + uint8_t Peg2MaxLinkWidth; + +/** Offset 0x0230 - Power down unused lanes on PEG 0 + (0x0): Do not power down any lane, (0x1): Bios will power down unused lanes based + on the max possible link width + 0:No power saving, 1:Auto +**/ + uint8_t Peg0PowerDownUnusedLanes; + +/** Offset 0x0231 - Power down unused lanes on PEG 1 + (0x0): Do not power down any lane, (0x1): Bios will power down unused lanes based + on the max possible link width + 0:No power saving, 1:Auto +**/ + uint8_t Peg1PowerDownUnusedLanes; + +/** Offset 0x0232 - Power down unused lanes on PEG 2 + (0x0): Do not power down any lane, (0x1): Bios will power down unused lanes based + on the max possible link width + 0:No power saving, 1:Auto +**/ + uint8_t Peg2PowerDownUnusedLanes; + +/** Offset 0x0233 - PCIe ASPM programming will happen in relation to the Oprom + Select when PCIe ASPM programming will happen in relation to the Oprom. Before(0x0)(Default): + Do PCIe ASPM programming before Oprom, After(0x1): Do PCIe ASPM programming after + Oprom, requires an SMI handler to save/restore ASPM settings during S3 resume + 0:Before, 1:After +**/ + uint8_t InitPcieAspmAfterOprom; + +/** Offset 0x0234 - PCIe Disable Spread Spectrum Clocking + PCIe Disable Spread Spectrum Clocking. Normal Operation(0x0)(Default) - SSC enabled, + Disable SSC(0X1) - Disable SSC per platform design or for compliance testing + 0:Normal Operation, 1:Disable SSC +**/ + uint8_t PegDisableSpreadSpectrumClocking; + +/** Offset 0x0235 - DMI Gen3 Root port preset values per lane + Used for programming DMI Gen3 preset values per lane. Range: 0-9, 8 is default for each lane +**/ + uint8_t DmiGen3RootPortPreset[4]; + +/** Offset 0x0239 - DMI Gen3 End port preset values per lane + Used for programming DMI Gen3 preset values per lane. Range: 0-9, 7 is default for each lane +**/ + uint8_t DmiGen3EndPointPreset[4]; + +/** Offset 0x023D - DMI Gen3 End port Hint values per lane + Used for programming DMI Gen3 Hint values per lane. Range: 0-6, 2 is default for each lane +**/ + uint8_t DmiGen3EndPointHint[4]; + +/** Offset 0x0241 - DMI Gen3 RxCTLEp per-Bundle control + Range: 0-15, 12 is default for each bundle, must be specified based upon platform design +**/ + uint8_t DmiGen3RxCtlePeaking[2]; + +/** Offset 0x0243 - PEG Gen3 RxCTLEp per-Bundle control + Range: 0-15, 12 is default for each bundle, must be specified based upon platform design +**/ + uint8_t PegGen3RxCtlePeaking[8]; + +/** Offset 0x024B - Memory data pointer for saved preset search results + The reference code will store the Gen3 Preset Search results in the SaDataHob's + PegData structure (SA_PEG_DATA) and platform code can save/restore this data to + skip preset search in the following boots. Range: 0-0xFFFFFFFF, default is 0 +**/ + uint32_t PegDataPtr; + +/** Offset 0x024F - PEG PERST# GPIO information + The reference code will use the information in this structure in order to reset + PCIe Gen3 devices during equalization, if necessary +**/ + uint8_t PegGpioData[16]; + +/** Offset 0x025F +**/ + uint8_t UnusedUpdSpace7; + +/** Offset 0x0260 - DeEmphasis control for DMI + DeEmphasis control for DMI. 0=-6dB, 1(Default)=-3.5 dB + 0: -6dB, 1: -3.5dB +**/ + uint8_t DmiDeEmphasis; + +/** Offset 0x0261 - PCIe Hot Plug Enable/Disable per port + 0(Default): Disable, 1: Enable +**/ + uint8_t PegRootPortHPE[3]; + +/** Offset 0x0264 - Selection of the primary display device + 0=iGFX, 1=PEG, 2=PCIe Graphics on PCH, 3(Default)=AUTO, 4=Switchable Graphics + 0:iGFX, 1:PEG, 2:PCIe Graphics on PCH, 3:AUTO, 4:Switchable Graphics +**/ + uint8_t PrimaryDisplay; + +/** Offset 0x0265 - Temporary MMIO address for GTTMMADR + The reference code will use the information in this structure in order to reset + PCIe Gen3 devices during equalization, if necessary +**/ + uint32_t GttMmAdr; + +/** Offset 0x0269 - Selection of iGFX GTT Memory size + 1=2MB, 2=4MB, 3=8MB, Default is 3 + 1:2MB, 2:4MB, 3:8MB +**/ + uint16_t GttSize; + +/** Offset 0x026B - Switchable Graphics GPIO information for PEG 0 + Switchable Graphics GPIO information for PEG 0, for Reset, power and wake GPIOs +**/ + uint8_t SaRtd3Pcie0Gpio[24]; + +/** Offset 0x0283 - Switchable Graphics GPIO information for PEG 1 + Switchable Graphics GPIO information for PEG 1, for Reset, power and wake GPIOs +**/ + uint8_t SaRtd3Pcie1Gpio[24]; + +/** Offset 0x029B - Switchable Graphics GPIO information for PEG 2 + Switchable Graphics GPIO information for PEG 2, for Reset, power and wake GPIOs +**/ + uint8_t SaRtd3Pcie2Gpio[24]; + +/** Offset 0x02B3 - PEG root port Device number for Switchable Graphics dGPU + Device number to indicate which PEG root port has dGPU +**/ + uint8_t RootPortDev; + +/** Offset 0x02B4 - PEG root port Function number for Switchable Graphics dGPU + Function number to indicate which PEG root port has dGPU +**/ + uint8_t RootPortFun; + +/** Offset 0x02B5 - Enable/Disable MRC TXT dependency + When enabled MRC execution will wait for TXT initialization to be done first. Disabled(0x0)(Default): + MRC will not wait for TXT initialization, Enabled(0x1): MRC will wait for TXT initialization + $EN_DIS +**/ + uint8_t TxtImplemented; + +/** Offset 0x02B6 - Enable/Disable SA OcSupport + Enable: Enable SA OcSupport, Disable(Default): Disable SA OcSupport + $EN_DIS +**/ + uint8_t SaOcSupport; + +/** Offset 0x02B7 - GT slice Voltage Mode + 0(Default): Adaptive, 1: Override + 0: Adaptive, 1: Override +**/ + uint8_t GtsVoltageMode; + +/** Offset 0x02B8 - GT unslice Voltage Mode + 0(Default): Adaptive, 1: Override + 0: Adaptive, 1: Override +**/ + uint8_t GtusVoltageMode; + +/** Offset 0x02B9 - Maximum GTs turbo ratio override + 0(Default)=Minimal/Auto, 60=Maximum +**/ + uint8_t GtsMaxOcRatio; + +/** Offset 0x02BA - The voltage offset applied to GT slice + 0(Default)=Minimal, 1000=Maximum +**/ + uint16_t GtsVoltageOffset; + +/** Offset 0x02BC - The GT slice voltage override which is applied to the entire range of GT frequencies + 0(Default)=Minimal, 2000=Maximum +**/ + uint16_t GtsVoltageOverride; + +/** Offset 0x02BE - adaptive voltage applied during turbo frequencies + 0(Default)=Minimal, 2000=Maximum +**/ + uint16_t GtsExtraTurboVoltage; + +/** Offset 0x02C0 - voltage offset applied to GT unslice + 0(Default)=Minimal, 2000=Maximum +**/ + uint16_t GtusVoltageOffset; + +/** Offset 0x02C2 - GT unslice voltage override which is applied to the entire range of GT frequencies + 0(Default)=Minimal, 2000=Maximum +**/ + uint16_t GtusVoltageOverride; + +/** Offset 0x02C4 - adaptive voltage applied during turbo frequencies + 0(Default)=Minimal, 2000=Maximum +**/ + uint16_t GtusExtraTurboVoltage; + +/** Offset 0x02C6 - voltage offset applied to the SA + 0(Default)=Minimal, 1000=Maximum +**/ + uint16_t SaVoltageOffset; + +/** Offset 0x02C8 - EDRAM ratio override + EdramRatio is deprecated on Kabylake +**/ + uint8_t EdramRatio; + +/** Offset 0x02C9 - Maximum GTus turbo ratio override + 0(Default)=Minimal, 60=Maximum +**/ + uint8_t GtusMaxOcRatio; + +/** Offset 0x02CA - BIST on Reset + Enable or Disable BIST on Reset; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t BistOnReset; + +/** Offset 0x02CB - Skip Stop PBET Timer Enable/Disable + Skip Stop PBET Timer; <b>0: Disable</b>; 1: Enable + $EN_DIS +**/ + uint8_t SkipStopPbet; + +/** Offset 0x02CC - C6DRAM power gating feature + This policy indicates whether or not BIOS should allocate PRMRR memory for C6DRAM + power gating feature.- 0: Don't allocate any PRMRR memory for C6DRAM power gating + feature.- <b>1: Allocate PRMRR memory for C6DRAM power gating feature</b>. + $EN_DIS +**/ + uint8_t EnableC6Dram; + +/** Offset 0x02CD - Over clocking support + Over clocking support; <b>0: Disable</b>; 1: Enable + $EN_DIS +**/ + uint8_t OcSupport; + +/** Offset 0x02CE - Over clocking Lock + Over clocking Lock Enable/Disable; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t OcLock; + +/** Offset 0x02CF - Maximum Core Turbo Ratio Override + Maximum core turbo ratio override allows to increase CPU core frequency beyond the + fused max turbo ratio limit. <b>0: Hardware defaults.</b> Range: 0-83 + 0 : 83 +**/ + uint8_t CoreMaxOcRatio; + +/** Offset 0x02D0 - Core voltage mode + Core voltage mode; <b>0: Adaptive</b>; 1: Override. + $EN_DIS +**/ + uint8_t CoreVoltageMode; + +/** Offset 0x02D1 - Minimum clr turbo ratio override + Minimum clr turbo ratio override. <b>0: Hardware defaults.</b> Range: 0-83 + 0x0:0xFF +**/ + uint8_t RingMinOcRatio; + +/** Offset 0x02D2 - Maximum clr turbo ratio override + Maximum clr turbo ratio override allows to increase CPU clr frequency beyond the + fused max turbo ratio limit. <b>0: Hardware defaults.</b> Range: 0-83 + 0x0:0xFF +**/ + uint8_t RingMaxOcRatio; + +/** Offset 0x02D3 - Hyper Threading Enable/Disable + Enable or Disable Hyper Threading; 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t HyperThreading; + +/** Offset 0x02D4 - Enable or Disable CPU Ratio Override + Enable or Disable CPU Ratio Override; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t CpuRatioOverride; + +/** Offset 0x02D5 - CPU ratio value + CPU ratio value. Valid Range 0 to 63 + 0x0:0xFF +**/ + uint8_t CpuRatio; + +/** Offset 0x02D6 - Boot frequency + Sets the boot frequency starting from reset vector.- 0: Maximum battery performance.- + <b>1: Maximum non-turbo performance</b>.- 2: Turbo performance. @note If Turbo + is selected BIOS will start in max non-turbo mode and switch to Turbo mode. + 0x0:0xFF +**/ + uint8_t BootFrequency; + +/** Offset 0x02D7 - Number of active cores + Number of active cores(Depends on Number of cores). <b>0: All</b>;<b>1: 1 </b>;<b>2: + 2 </b>;<b>3: 3 </b> + 0x0:0xFF +**/ + uint8_t ActiveCoreCount; + +/** Offset 0x02D8 - Processor Early Power On Configuration FCLK setting + <b>0: 800 MHz (ULT/ULX)</b>. <b>1: 1 GHz (DT/Halo)</b>. Not supported on ULT/ULX.- + 2: 400 MHz. - 3: Reserved + 0x0:0xFF +**/ + uint8_t FClkFrequency; + +/** Offset 0x02D9 - Power JTAG in C10 and deeper power states + Power JTAG in C10 and deeper power states; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t JtagC10PowerGateDisable; + +/** Offset 0x02DA - Enable or Disable VMX + Enable or Disable VMX; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t VmxEnable; + +/** Offset 0x02DB - AVX2 Ratio Offset + 0(Default)= No Offset. Range 0 - 31. Specifies number of bins to decrease AVX ratio + vs. Core Ratio. Uses Mailbox MSR 0x150, cmd 0x1B. +**/ + uint8_t Avx2RatioOffset; + +/** Offset 0x02DC - BCLK Adaptive Voltage Enable + When enabled, the CPU V/F curves are aware of BCLK frequency when calculated. </b>0: + Disable;<b> 1: Enable + $EN_DIS +**/ + uint8_t BclkAdaptiveVoltage; + +/** Offset 0x02DD - core voltage override + The core voltage override which is applied to the entire range of cpu core frequencies. + Valid Range 0 to 2000 + 0x0:0xFFFF +**/ + uint16_t CoreVoltageOverride; + +/** Offset 0x02DF - Core Turbo voltage Adaptive + Extra Turbo voltage applied to the cpu core when the cpu is operating in turbo mode. + Valid Range 0 to 2000 + 0x0:0xFFFF +**/ + uint16_t CoreVoltageAdaptive; + +/** Offset 0x02E1 - Core Turbo voltage Offset + The voltage offset applied to the core while operating in turbo mode.Valid Range 0 to 1000 + 0x0:0xFFFF +**/ + uint16_t CoreVoltageOffset; + +/** Offset 0x02E3 - Core PLL voltage offset + Core PLL voltage offset. <b>0: No offset</b>. Range 0-63 + 0x0:0xFFFF +**/ + uint16_t CorePllVoltageOffset; + +/** Offset 0x02E5 - BiosGuard + Enable/Disable. 0: Disable, Enable/Disable BIOS Guard feature, 1: enable + $EN_DIS +**/ + uint8_t BiosGuard; + +/** Offset 0x02E6 - EnableSgx + Enable/Disable. 0: Disable, Enable/Disable SGX feature, 1: enable + $EN_DIS +**/ + uint8_t EnableSgx; + +/** Offset 0x02E7 - Txt + Enable/Disable. 0: Disable, Enable/Disable Txt feature, 1: enable + $EN_DIS +**/ + uint8_t Txt; + +/** Offset 0x02E8 - FlashWearOutProtection + Enable/Disable. 0: Disable, Enable/Disable FlashWearOutProtection feature, 1: enable + $EN_DIS +**/ + uint8_t FlashWearOutProtection; + +/** Offset 0x02E9 - PrmrrSize + Enable/Disable. 0: Disable, define default value of PrmrrSize , 1: enable +**/ + uint32_t PrmrrSize; + +/** Offset 0x02ED - SinitMemorySize + Enable/Disable. 0: Disable, define default value of SinitMemorySize , 1: enable +**/ + uint32_t SinitMemorySize; + +/** Offset 0x02F1 - TxtHeapMemorySize + Enable/Disable. 0: Disable, define default value of TxtHeapMemorySize , 1: enable +**/ + uint32_t TxtHeapMemorySize; + +/** Offset 0x02F5 - TxtDprMemoryBase + Enable/Disable. 0: Disable, define default value of TxtDprMemoryBase , 1: enable +**/ + uint64_t TxtDprMemoryBase; + +/** Offset 0x02FD - TxtDprMemorySize + Enable/Disable. 0: Disable, define default value of TxtDprMemorySize , 1: enable +**/ + uint32_t TxtDprMemorySize; + +/** Offset 0x0301 - ReservedSecurityPreMem + Reserved for Security Pre-Mem + $EN_DIS +**/ + uint8_t ReservedSecurityPreMem[9]; + +/** Offset 0x030A - PCH HPET Enabled + Enable/disable PCH HPET. + $EN_DIS +**/ + uint8_t PchHpetEnable; + +/** Offset 0x030B - PCH HPET BDF valid + Whether the BDF value is valid. 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchHpetBdfValid; + +/** Offset 0x030C - PCH HPET Bus Number + Bus Number HPETn used as Requestor / Completer ID. Default is 0xF0. +**/ + uint8_t PchHpetBusNumber; + +/** Offset 0x030D - PCH HPET Device Number + Device Number HPETn used as Requestor / Completer ID. Default is 0x1F. +**/ + uint8_t PchHpetDeviceNumber; + +/** Offset 0x030E - PCH HPET Function Number + Function Number HPETn used as Requestor / Completer ID. Default is 0x00. +**/ + uint8_t PchHpetFunctionNumber; + +/** Offset 0x030F - The HPET Base Address + The HPET base address. Default is 0xFED00000. +**/ + uint32_t PchHpetBase; + +/** Offset 0x0313 - Enable PCH HSIO PCIE Rx Set Ctle + Enable PCH PCIe Gen 3 Set CTLE Value. +**/ + uint8_t PchPcieHsioRxSetCtleEnable[24]; + +/** Offset 0x032B - PCH HSIO PCIE Rx Set Ctle Value + PCH PCIe Gen 3 Set CTLE Value. +**/ + uint8_t PchPcieHsioRxSetCtle[24]; + +/** Offset 0x0343 - Enble PCH HSIO PCIE TX Gen 1 Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen1DownscaleAmpEnable[24]; + +/** Offset 0x035B - PCH HSIO PCIE Gen 2 TX Output Downscale Amplitude Adjustment value + PCH PCIe Gen 2 TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchPcieHsioTxGen1DownscaleAmp[24]; + +/** Offset 0x0373 - Enable PCH HSIO PCIE TX Gen 2 Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen2DownscaleAmpEnable[24]; + +/** Offset 0x038B - PCH HSIO PCIE Gen 2 TX Output Downscale Amplitude Adjustment value + PCH PCIe Gen 2 TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchPcieHsioTxGen2DownscaleAmp[24]; + +/** Offset 0x03A3 - Enable PCH HSIO PCIE TX Gen 3 Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen3DownscaleAmpEnable[24]; + +/** Offset 0x03BB - PCH HSIO PCIE Gen 3 TX Output Downscale Amplitude Adjustment value + PCH PCIe Gen 3 TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchPcieHsioTxGen3DownscaleAmp[24]; + +/** Offset 0x03D3 - Enable PCH HSIO PCIE Gen 1 TX Output De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen1DeEmphEnable[24]; + +/** Offset 0x03EB - PCH HSIO PCIE Gen 1 TX Output De-Emphasis Adjustment value + PCH PCIe Gen 1 TX Output De-Emphasis Adjustment Setting. +**/ + uint8_t PchPcieHsioTxGen1DeEmph[24]; + +/** Offset 0x0403 - Enable PCH HSIO PCIE Gen 2 TX Output -3.5dB De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen2DeEmph3p5Enable[24]; + +/** Offset 0x041B - PCH HSIO PCIE Gen 2 TX Output -3.5dB De-Emphasis Adjustment value + PCH PCIe Gen 2 TX Output -3.5dB De-Emphasis Adjustment Setting. +**/ + uint8_t PchPcieHsioTxGen2DeEmph3p5[24]; + +/** Offset 0x0433 - Enable PCH HSIO PCIE Gen 2 TX Output -6.0dB De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchPcieHsioTxGen2DeEmph6p0Enable[24]; + +/** Offset 0x044B - PCH HSIO PCIE Gen 2 TX Output -6.0dB De-Emphasis Adjustment value + PCH PCIe Gen 2 TX Output -6.0dB De-Emphasis Adjustment Setting. +**/ + uint8_t PchPcieHsioTxGen2DeEmph6p0[24]; + +/** Offset 0x0463 - Enable PCH HSIO SATA Receiver Equalization Boost Magnitude Adjustment Value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioRxGen1EqBoostMagEnable[8]; + +/** Offset 0x046B - PCH HSIO SATA 1.5 Gb/s Receiver Equalization Boost Magnitude Adjustment value + PCH HSIO SATA 1.5 Gb/s Receiver Equalization Boost Magnitude Adjustment value. +**/ + uint8_t PchSataHsioRxGen1EqBoostMag[8]; + +/** Offset 0x0473 - Enable PCH HSIO SATA Receiver Equalization Boost Magnitude Adjustment Value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioRxGen2EqBoostMagEnable[8]; + +/** Offset 0x047B - PCH HSIO SATA 3.0 Gb/s Receiver Equalization Boost Magnitude Adjustment value + PCH HSIO SATA 3.0 Gb/s Receiver Equalization Boost Magnitude Adjustment value. +**/ + uint8_t PchSataHsioRxGen2EqBoostMag[8]; + +/** Offset 0x0483 - Enable PCH HSIO SATA Receiver Equalization Boost Magnitude Adjustment Value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioRxGen3EqBoostMagEnable[8]; + +/** Offset 0x048B - PCH HSIO SATA 6.0 Gb/s Receiver Equalization Boost Magnitude Adjustment value + PCH HSIO SATA 6.0 Gb/s Receiver Equalization Boost Magnitude Adjustment value. +**/ + uint8_t PchSataHsioRxGen3EqBoostMag[8]; + +/** Offset 0x0493 - Enable PCH HSIO SATA 1.5 Gb/s TX Output Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen1DownscaleAmpEnable[8]; + +/** Offset 0x049B - PCH HSIO SATA 1.5 Gb/s TX Output Downscale Amplitude Adjustment value + PCH HSIO SATA 1.5 Gb/s TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchSataHsioTxGen1DownscaleAmp[8]; + +/** Offset 0x04A3 - Enable PCH HSIO SATA 3.0 Gb/s TX Output Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen2DownscaleAmpEnable[8]; + +/** Offset 0x04AB - PCH HSIO SATA 3.0 Gb/s TX Output Downscale Amplitude Adjustment value + PCH HSIO SATA 3.0 Gb/s TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchSataHsioTxGen2DownscaleAmp[8]; + +/** Offset 0x04B3 - Enable PCH HSIO SATA 6.0 Gb/s TX Output Downscale Amplitude Adjustment value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen3DownscaleAmpEnable[8]; + +/** Offset 0x04BB - PCH HSIO SATA 6.0 Gb/s TX Output Downscale Amplitude Adjustment value + PCH HSIO SATA 6.0 Gb/s TX Output Downscale Amplitude Adjustment value. +**/ + uint8_t PchSataHsioTxGen3DownscaleAmp[8]; + +/** Offset 0x04C3 - Enable PCH HSIO SATA 1.5 Gb/s TX Output De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen1DeEmphEnable[8]; + +/** Offset 0x04CB - PCH HSIO SATA 1.5 Gb/s TX Output De-Emphasis Adjustment Setting + PCH HSIO SATA 1.5 Gb/s TX Output De-Emphasis Adjustment Setting. +**/ + uint8_t PchSataHsioTxGen1DeEmph[8]; + +/** Offset 0x04D3 - Enable PCH HSIO SATA 3.0 Gb/s TX Output De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen2DeEmphEnable[8]; + +/** Offset 0x04DB - PCH HSIO SATA 3.0 Gb/s TX Output De-Emphasis Adjustment Setting + PCH HSIO SATA 3.0 Gb/s TX Output De-Emphasis Adjustment Setting. +**/ + uint8_t PchSataHsioTxGen2DeEmph[8]; + +/** Offset 0x04E3 - Enable PCH HSIO SATA 6.0 Gb/s TX Output De-Emphasis Adjustment Setting value override + 0: Disable; 1: Enable. +**/ + uint8_t PchSataHsioTxGen3DeEmphEnable[8]; + +/** Offset 0x04EB - PCH HSIO SATA 6.0 Gb/s TX Output De-Emphasis Adjustment Setting + PCH HSIO SATA 6.0 Gb/s TX Output De-Emphasis Adjustment Setting. +**/ + uint8_t PchSataHsioTxGen3DeEmph[8]; + +/** Offset 0x04F3 - PCH LPC Enhance the port 8xh decoding + Original LPC only decodes one byte of port 80h. + $EN_DIS +**/ + uint8_t PchLpcEnhancePort8xhDecoding; + +/** Offset 0x04F4 - PCH Acpi Base + Power management I/O base address. Default is 0x1800. +**/ + uint16_t PchAcpiBase; + +/** Offset 0x04F6 - PCH Port80 Route + Control where the Port 80h cycles are sent, 0: LPC; 1: PCI. + $EN_DIS +**/ + uint8_t PchPort80Route; + +/** Offset 0x04F7 - Enable SMBus ARP support + Enable SMBus ARP support. + $EN_DIS +**/ + uint8_t SmbusArpEnable; + +/** Offset 0x04F8 - SMBUS Base Address + SMBUS Base Address (IO space). +**/ + uint16_t PchSmbusIoBase; + +/** Offset 0x04FA - Number of RsvdSmbusAddressTable. + The number of elements in the RsvdSmbusAddressTable. +**/ + uint8_t PchNumRsvdSmbusAddresses; + +/** Offset 0x04FB - Point of RsvdSmbusAddressTable + Array of addresses reserved for non-ARP-capable SMBus devices. +**/ + uint32_t RsvdSmbusAddressTablePtr; + +/** Offset 0x04FF - Trace Hub Memory Region 0 + Trace Hub Memory Region 0. +**/ + uint32_t TraceHubMemReg0Size; + +/** Offset 0x0503 - Trace Hub Memory Region 1 + Trace Hub Memory Region 1. +**/ + uint32_t TraceHubMemReg1Size; + +/** Offset 0x0507 - Enable PCIE RP Mask + Enable/disable PCIE Root Ports. 0: disable, 1: enable. One bit for each port, bit0 + for port1, bit1 for port2, and so on. +**/ + uint32_t PcieRpEnableMask; + +/** Offset 0x050B - SerialIo Uart Debug + Enable SerialIo Uart debug. + 0:Disable, 1:Enable +**/ + uint8_t PcdSerialDebugEnable; + +/** Offset 0x050C - SerialIo Uart Number Selection + Select SerialIo Uart Controller for debug. + 0:SerialIoUart0, 1:SerialIoUart1, 2:SerialIoUart2 +**/ + uint8_t PcdSerialIoUartNumber; + +/** Offset 0x050D +**/ + uint8_t ReservedFspmUpd[34]; +} __attribute__((packed)); + +/** Fsp M Test Configuration +**/ +struct FSP_M_TEST_CONFIG { + +/** Offset 0x052F +**/ + uint32_t Signature; + +/** Offset 0x0533 - Skip external display device scanning + Enable: Do not scan for external display device, Disable (Default): Scan external + display devices + $EN_DIS +**/ + uint8_t SkipExtGfxScan; + +/** Offset 0x0534 - Generate BIOS Data ACPI Table + Enable: Generate BDAT for MRC RMT or SA PCIe data. Disable (Default): Do not generate it + $EN_DIS +**/ + uint8_t BdatEnable; + +/** Offset 0x0535 - Detect External Graphics device for LegacyOpROM + Detect and report if external graphics device only support LegacyOpROM or not (to + support CSM auto-enable). Enable(Default)=1, Disable=0 + $EN_DIS +**/ + uint8_t ScanExtGfxForLegacyOpRom; + +/** Offset 0x0536 - Lock PCU Thermal Management registers + Lock PCU Thermal Management registers. Enable(Default)=1, Disable=0 + $EN_DIS +**/ + uint8_t LockPTMregs; + +/** Offset 0x0537 - Enable/Disable DmiVc1 + Enable/Disable DmiVc1. Enable = 1, Disable (Default) = 0 + $EN_DIS +**/ + uint8_t DmiVc1; + +/** Offset 0x0538 - Enable/Disable DmiVcm + Enable/Disable DmiVcm. Enable (Default) = 1, Disable = 0 + $EN_DIS +**/ + uint8_t DmiVcm; + +/** Offset 0x0539 - DMI Max Link Speed + Auto (Default)(0x0): Maximum possible link speed, Gen1(0x1): Limit Link to Gen1 + Speed, Gen2(0x2): Limit Link to Gen2 Speed, Gen3(0x3):Limit Link to Gen3 Speed + 0:Auto, 1:Gen1, 2:Gen2, 3:Gen3 +**/ + uint8_t DmiMaxLinkSpeed; + +/** Offset 0x053A - DMI Equalization Phase 2 + DMI Equalization Phase 2. (0x0): Disable phase 2, (0x1): Enable phase 2, (0x2)(Default): + AUTO - Use the current default method + 0:Disable phase2, 1:Enable phase2, 2:Auto +**/ + uint8_t DmiGen3EqPh2Enable; + +/** Offset 0x053B - DMI Gen3 Equalization Phase3 + DMI Gen3 Equalization Phase3. Auto(0x0)(Default): Use the current default method, + HwEq(0x1): Use Adaptive Hardware Equalization, SwEq(0x2): Use Adaptive Software + Equalization (Implemented in BIOS Reference Code), Static(0x3): Use the Static + EQs provided in DmiGen3EndPointPreset array for Phase1 AND Phase3 (Instead of just + Phase1), Disabled(0x4): Bypass Equalization Phase 3 + 0:Auto, 1:HwEq, 2:SwEq, 3:StaticEq, 4:BypassPhase3 +**/ + uint8_t DmiGen3EqPh3Method; + +/** Offset 0x053C - Phase2 EQ enable on the PEG 0:1:0. + Phase2 EQ enable on the PEG 0:1:0. Disabled(0x0): Disable phase 2, Enabled(0x1): + Enable phase 2, Auto(0x2)(Default): Use the current default method + 0:Disable, 1:Enable, 2:Auto +**/ + uint8_t Peg0Gen3EqPh2Enable; + +/** Offset 0x053D - Phase2 EQ enable on the PEG 0:1:1. + Phase2 EQ enable on the PEG 0:1:0. Disabled(0x0): Disable phase 2, Enabled(0x1): + Enable phase 2, Auto(0x2)(Default): Use the current default method + 0:Disable, 1:Enable, 2:Auto +**/ + uint8_t Peg1Gen3EqPh2Enable; + +/** Offset 0x053E - Phase2 EQ enable on the PEG 0:1:2. + Phase2 EQ enable on the PEG 0:1:0. Disabled(0x0): Disable phase 2, Enabled(0x1): + Enable phase 2, Auto(0x2)(Default): Use the current default method + 0:Disable, 1:Enable, 2:Auto +**/ + uint8_t Peg2Gen3EqPh2Enable; + +/** Offset 0x053F - Phase3 EQ method on the PEG 0:1:0. + PEG Gen3 Equalization Phase3. Auto(0x0)(Default): Use the current default method, + HwEq(0x1): Use Adaptive Hardware Equalization, SwEq(0x2): Use Adaptive Software + Equalization (Implemented in BIOS Reference Code), Static(0x3): Use the Static + EQs provided in DmiGen3EndPointPreset array for Phase1 AND Phase3 (Instead of just + Phase1), Disabled(0x4): Bypass Equalization Phase 3 + 0:Auto, 1:HwEq, 2:SwEq, 3:StaticEq, 4:BypassPhase3 +**/ + uint8_t Peg0Gen3EqPh3Method; + +/** Offset 0x0540 - Phase3 EQ method on the PEG 0:1:1. + PEG Gen3 Equalization Phase3. Auto(0x0)(Default): Use the current default method, + HwEq(0x1): Use Adaptive Hardware Equalization, SwEq(0x2): Use Adaptive Software + Equalization (Implemented in BIOS Reference Code), Static(0x3): Use the Static + EQs provided in DmiGen3EndPointPreset array for Phase1 AND Phase3 (Instead of just + Phase1), Disabled(0x4): Bypass Equalization Phase 3 + 0:Auto, 1:HwEq, 2:SwEq, 3:StaticEq, 4:BypassPhase3 +**/ + uint8_t Peg1Gen3EqPh3Method; + +/** Offset 0x0541 - Phase3 EQ method on the PEG 0:1:2. + PEG Gen3 Equalization Phase3. Auto(0x0)(Default): Use the current default method, + HwEq(0x1): Use Adaptive Hardware Equalization, SwEq(0x2): Use Adaptive Software + Equalization (Implemented in BIOS Reference Code), Static(0x3): Use the Static + EQs provided in DmiGen3EndPointPreset array for Phase1 AND Phase3 (Instead of just + Phase1), Disabled(0x4): Bypass Equalization Phase 3 + 0:Auto, 1:HwEq, 2:SwEq, 3:StaticEq, 4:BypassPhase3 +**/ + uint8_t Peg2Gen3EqPh3Method; + +/** Offset 0x0542 - Enable/Disable PEG GEN3 Static EQ Phase1 programming + Program PEG Gen3 EQ Phase1 Static Presets. Disabled(0x0): Disable EQ Phase1 Static + Presets Programming, Enabled(0x1)(Default): Enable EQ Phase1 Static Presets Programming + $EN_DIS +**/ + uint8_t PegGen3ProgramStaticEq; + +/** Offset 0x0543 - PEG Gen3 SwEq Always Attempt + Gen3 Software Equalization will be executed every boot. Disabled(0x0)(Default): + Reuse EQ settings saved/restored from NVRAM whenever possible, Enabled(0x1): Re-test + and generate new EQ values every boot, not recommended + 0:Disable, 1:Enable +**/ + uint8_t Gen3SwEqAlwaysAttempt; + +/** Offset 0x0544 - Select number of TxEq presets to test in the PCIe/DMI SwEq + Select number of TxEq presets to test in the PCIe/DMI SwEq. P7,P3,P5(0x0): Test + Presets 7, 3, and 5, P0-P9(0x1): Test Presets 0-9, Auto(0x2)(Default): Use the + current default method (Default)Auto will test Presets 7, 3, and 5. It is possible + for this default to change over time;using Auto will ensure Reference Code always + uses the latest default settings + 0:P7 P3 P5, 1:P0 to P9, 2:Auto +**/ + uint8_t Gen3SwEqNumberOfPresets; + +/** Offset 0x0545 - Enable use of the Voltage Offset and Centering Test in the PCIe SwEq + Enable use of the Voltage Offset and Centering Test in the PCIe Software Equalization + Algorithm. Disabled(0x0): Disable VOC Test, Enabled(0x1): Enable VOC Test, Auto(0x2)(Default): + Use the current default + 0:Disable, 1:Enable, 2:Auto +**/ + uint8_t Gen3SwEqEnableVocTest; + +/** Offset 0x0546 - PPCIe Rx Compliance Testing Mode + Disabled(0x0)(Default): Normal Operation - Disable PCIe Rx Compliance testing, Enabled(0x1): + PCIe Rx Compliance Test Mode - PEG controller is in Rx Compliance Testing Mode; + it should only be set when doing PCIe compliance testing + $EN_DIS +**/ + uint8_t PegRxCemTestingMode; + +/** Offset 0x0547 - PCIe Rx Compliance Loopback Lane When PegRxCemTestingMode is Enabled + the specificied Lane (0 - 15) will be used for RxCEMLoopback. Default is Lane 0 +**/ + uint8_t PegRxCemLoopbackLane; + +/** Offset 0x0548 - Generate PCIe BDAT Margin Table + Set this policy to enable the generation and addition of PCIe margin data to the + BDAT table. Disabled(0x0)(Default): Normal Operation - Disable PCIe BDAT margin + data generation, Enable(0x1): Generate PCIe BDAT margin data + $EN_DIS +**/ + uint8_t PegGenerateBdatMarginTable; + +/** Offset 0x0549 - PCIe Non-Protocol Awareness for Rx Compliance Testing + Set this policy to enable the generation and addition of PCIe margin data to the + BDAT table. Disabled(0x0)(Default): Normal Operation - Disable non-protocol awareness, + Enable(0x1): Non-Protocol Awareness Enabled - Enable non-protocol awareness for + compliance testing + $EN_DIS +**/ + uint8_t PegRxCemNonProtocolAwareness; + +/** Offset 0x054A - PCIe Override RxCTLE + Disable(0x0)(Default): Normal Operation - RxCTLE adaptive behavior enabled, Enable(0x1): + Override RxCTLE - Disable RxCTLE adaptive behavior to keep the configured RxCTLE + peak values unmodified + $EN_DIS +**/ + uint8_t PegGen3RxCtleOverride; + +/** Offset 0x054B - Rsvd + Disable(0x0)(Default): Normal Operation - RxCTLE adaptive behavior enabled, Enable(0x1): + Override RxCTLE - Disable RxCTLE adaptive behavior to keep the configured RxCTLE + peak values unmodified + $EN_DIS +**/ + uint8_t PegGen3Rsvd; + +/** Offset 0x054C - PEG Gen3 Root port preset values per lane + Used for programming PEG Gen3 preset values per lane. Range: 0-9, 8 is default for each lane +**/ + uint8_t PegGen3RootPortPreset[16]; + +/** Offset 0x055C - PEG Gen3 End port preset values per lane + Used for programming PEG Gen3 preset values per lane. Range: 0-9, 7 is default for each lane +**/ + uint8_t PegGen3EndPointPreset[16]; + +/** Offset 0x056C - PEG Gen3 End port Hint values per lane + Used for programming PEG Gen3 Hint values per lane. Range: 0-6, 2 is default for each lane +**/ + uint8_t PegGen3EndPointHint[16]; + +/** Offset 0x057C - Jitter Dwell Time for PCIe Gen3 Software Equalization + Range: 0-65535, default is 1000. @warning Do not change from the default +**/ + uint16_t Gen3SwEqJitterDwellTime; + +/** Offset 0x057E - Jitter Error Target for PCIe Gen3 Software Equalization + Range: 0-65535, default is 1. @warning Do not change from the default +**/ + uint16_t Gen3SwEqJitterErrorTarget; + +/** Offset 0x0580 - VOC Dwell Time for PCIe Gen3 Software Equalization + Range: 0-65535, default is 10000. @warning Do not change from the default +**/ + uint16_t Gen3SwEqVocDwellTime; + +/** Offset 0x0582 - VOC Error Target for PCIe Gen3 Software Equalization + Range: 0-65535, default is 2. @warning Do not change from the default +**/ + uint16_t Gen3SwEqVocErrorTarget; + +/** Offset 0x0584 - Panel Power Enable + Control for enabling/disabling VDD force bit (Required only for early enabling of + eDP panel). 0=Disable, 1(Default)=Enable + $EN_DIS +**/ + uint8_t PanelPowerEnable; + +/** Offset 0x0585 - SaPreMemTestRsvd + Reserved for SA Pre-Mem Test + $EN_DIS +**/ + uint8_t SaPreMemTestRsvd[16]; + +/** Offset 0x0595 - TotalFlashSize + Enable/Disable. 0: Disable, define default value of TotalFlashSize , 1: enable +**/ + uint16_t TotalFlashSize; + +/** Offset 0x0597 - BiosSize + Enable/Disable. 0: Disable, define default value of BiosSize , 1: enable +**/ + uint16_t BiosSize; + +/** Offset 0x0599 - BiosAcmBase + Enable/Disable. 0: Disable, define default value of BiosAcmBase , 1: enable +**/ + uint64_t BiosAcmBase; + +/** Offset 0x05A1 - BiosAcmSize + Enable/Disable. 0: Disable, define default value of BiosAcmSize , 1: enable +**/ + uint32_t BiosAcmSize; + +/** Offset 0x05A5 - TgaSize + Enable/Disable. 0: Disable, define default value of TgaSize , 1: enable +**/ + uint32_t TgaSize; + +/** Offset 0x05A9 - TxtLcpPdBase + Enable/Disable. 0: Disable, define default value of TxtLcpPdBase , 1: enable +**/ + uint64_t TxtLcpPdBase; + +/** Offset 0x05B1 - TxtLcpPdSize + Enable/Disable. 0: Disable, define default value of TxtLcpPdSize , 1: enable +**/ + uint64_t TxtLcpPdSize; + +/** Offset 0x05B9 - PCH Dci Enable + Enable/disable PCH Dci. + $EN_DIS +**/ + uint8_t PchDciEn; + +/** Offset 0x05BA - PCH Dci Auto Detect + Enable/disable PCH Dci AUTO mode. + $EN_DIS +**/ + uint8_t PchDciAutoDetect; + +/** Offset 0x05BB - Smbus dynamic power gating + Disable or Enable Smbus dynamic power gating. + $EN_DIS +**/ + uint8_t SmbusDynamicPowerGating; + +/** Offset 0x05BC - Disable and Lock Watch Dog Register + Set 1 to clear WDT status, then disable and lock WDT registers. + $EN_DIS +**/ + uint8_t WdtDisableAndLock; + +/** Offset 0x05BD - SMBUS SPD Write Disable + Set/Clear Smbus SPD Write Disable. 0: leave SPD Write Disable bit; 1: set SPD Write + Disable bit. For security recommendations, SPD write disable bit must be set. + $EN_DIS +**/ + uint8_t SmbusSpdWriteDisable; + +/** Offset 0x05BE - ChipsetInit HECI message + Enable/Disable. 0: Disable, 1: enable, Enable or disable ChipsetInit HECI message. + If disabled, it prevents from sending ChipsetInit HECI message. + $EN_DIS +**/ + uint8_t ChipsetInitMessage; + +/** Offset 0x05BF - Bypass ChipsetInit sync reset. + 0: disable, 1: enable, Set Enable to bypass the reset after ChipsetInit HECI message. + $EN_DIS +**/ + uint8_t BypassPhySyncReset; + +/** Offset 0x05C0 - Force ME DID Init Status + Test, 0: disable, 1: Success, 2: No Memory in Channels, 3: Memory Init Error, 4: + Memory not preserved across reset, Set ME DID init stat value + $EN_DIS +**/ + uint8_t DidInitStat; + +/** Offset 0x05C1 - CPU Replaced Polling Disable + Test, 0: disable, 1: enable, Setting this option disables CPU replacement polling loop + $EN_DIS +**/ + uint8_t DisableCpuReplacedPolling; + +/** Offset 0x05C2 - ME DID Message + Test, 0: disable, 1: enable, Enable/Disable ME DID Message (disable will prevent + the DID message from being sent) + $EN_DIS +**/ + uint8_t SendDidMsg; + +/** Offset 0x05C3 - Retry mechanism for HECI APIs + Test, 0: disable, 1: enable, Enable/Disable HECI retry. + $EN_DIS +**/ + uint8_t DisableHeciRetry; + +/** Offset 0x05C4 - Check HECI message before send + Test, 0: disable, 1: enable, Enable/Disable message check. + $EN_DIS +**/ + uint8_t DisableMessageCheck; + +/** Offset 0x05C5 - Skip MBP HOB + Test, 0: disable, 1: enable, Enable/Disable MOB HOB. + $EN_DIS +**/ + uint8_t SkipMbpHob; + +/** Offset 0x05C6 - HECI2 Interface Communication + Test, 0: disable, 1: enable, Adds or Removes HECI2 Device from PCI space. + $EN_DIS +**/ + uint8_t HeciCommunication2; + +/** Offset 0x05C7 - Enable KT device + Test, 0: disable, 1: enable, Enable or Disable KT device. + $EN_DIS +**/ + uint8_t KtDeviceEnable; + +/** Offset 0x05C8 - Enable IDEr + Test, 0: disable, 1: enable, Enable or Disable IDEr. + $EN_DIS +**/ + uint8_t IderDeviceEnable; + +/** Offset 0x05C9 +**/ + uint8_t ReservedFspmTestUpd[17]; +} __attribute__((packed)); + +/** Fsp M UPD Configuration +**/ +struct FSPM_UPD { + +/** Offset 0x0000 +**/ + struct FSP_UPD_HEADER FspUpdHeader; + +/** Offset 0x0020 +**/ + struct FSPM_ARCH_UPD FspmArchUpd; + +/** Offset 0x0040 +**/ + struct FSP_M_CONFIG FspmConfig; + +/** Offset 0x052F +**/ + struct FSP_M_TEST_CONFIG FspmTestConfig; + +/** Offset 0x05DA +**/ + uint8_t UnusedUpdSpace8[156]; + +/** Offset 0x0676 +**/ + uint16_t UpdTerminator; +} __attribute__((packed)); + +#endif |