diff options
4 files changed, 4621 insertions, 0 deletions
diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/CpuConfigFspData.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/CpuConfigFspData.h new file mode 100644 index 0000000000..f55d332b4b --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/CpuConfigFspData.h @@ -0,0 +1,68 @@ +/** @file + FSP CPU Data Config Block. + +@copyright + Copyright (c) 2016 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by the + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + This file contains an 'Intel Peripheral Driver' and is uniquely + identified as "Intel Reference Module" and is licensed for Intel + CPUs and chipsets under the terms of your license agreement with + Intel or your vendor. This file may be modified by the user, subject + to additional terms of the license agreement. + +@par Specification Reference: +**/ +#ifndef _CPU_CONFIG_FSP_DATA_H_ +#define _CPU_CONFIG_FSP_DATA_H_ +union CPU_CONFIG_FSP_DATA { + struct { + /** + Enable or Disable Advanced Encryption Standard (AES) feature. + For some countries, this should be disabled for legal reasons. + - 0: Disable + - <b>1: Enable</b> + **/ + uint32_t AesEnable : 1; + /** + 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. + **/ + uint32_t FClkFrequency : 2; + uint32_t EnableRsr : 1; ///< Enable or Disable RSR feature; 0: Disable; <b>1: Enable </b> + /** + Policies to obtain CPU temperature. + - <b>0: ACPI thermal management uses EC reported temperature values</b>. + - 1: ACPI thermal management uses DTS SMM mechanism to obtain CPU temperature values. + - 2: ACPI Thermal Management uses EC reported temperature values and DTS SMM is used to handle Out of Spec condition. + **/ + uint32_t EnableDts : 2; + uint32_t SmmbaseSwSmiNumber : 8; ///< Software SMI number for handler to save CPU information in SMRAM. + /** + Enable or Disable Virtual Machine Extensions (VMX) feature. + - 0: Disable + - <b>1: Enable</b> + **/ + uint32_t VmxEnable : 1; + /** + Enable or Disable Trusted Execution Technology (TXT) feature. + - 0: Disable + - <b>1: Enable</b> + **/ + uint32_t TxtEnable : 1; + uint32_t SkipMpInit : 1; ///< For Fsp only, Silicon Initialization will skip MP Initialization (including BSP) if enabled. For non-FSP, this should always be 0. + uint32_t RsvdBits : 15; ///< Reserved for future use + uint64_t MicrocodePatchAddress; ///< Pointer to microcode patch that is suitable for this processor. + } Bits; + uint32_t Uint32[3]; +}; + +#endif // _CPU_CONFIG_FSP_DATA_H_ diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspUpd.h new file mode 100644 index 0000000000..9cb77d0efa --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspUpd.h @@ -0,0 +1,42 @@ +/** @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 __FSPUPD_H__ +#define __FSPUPD_H__ + +#define FSPT_UPD_SIGNATURE 0x545F4450554C424B /* 'KBLUPD_T' */ + +#define FSPM_UPD_SIGNATURE 0x4D5F4450554C424B /* 'KBLUPD_M' */ + +#define FSPS_UPD_SIGNATURE 0x535F4450554C424B /* 'KBLUPD_S' */ + +#endif 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 diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspsUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspsUpd.h new file mode 100644 index 0000000000..aae3cf5423 --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/soc/fsp/FspsUpd.h @@ -0,0 +1,2924 @@ +/** @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 __FSPSUPD_H__ +#define __FSPSUPD_H__ + +#include "FspUpd.h" +#include <fsp/upd.h> + + +#include "CpuConfigFspData.h" +/// +/// Azalia Header structure +/// +struct AZALIA_HEADER { + uint16_t VendorId; ///< Codec Vendor ID + uint16_t DeviceId; ///< Codec Device ID + uint8_t RevisionId; ///< Revision ID of the codec. 0xFF matches any revision. + uint8_t SdiNum; ///< SDI number, 0xFF matches any SDI. + uint16_t DataDwords; ///< Number of data DWORDs pointed by the codec data buffer. + uint32_t Reserved; ///< Reserved for future use. Must be set to 0. +} __attribute__((packed)); + +/// +/// Audio Azalia Verb Table structure +/// +struct AUDIO_AZALIA_VERB_TABLE { + struct AZALIA_HEADER Header; ///< AZALIA PCH header + uint32_t *Data; ///< Pointer to the data buffer. Its length is specified in the header +} __attribute__((packed)); + +/// +/// Refer to the definition of PCH_INT_PIN +/// +enum SI_PCH_INT_PIN{ + SiPchNoInt, ///< No Interrupt Pin + SiPchIntA, + SiPchIntB, + SiPchIntC, + SiPchIntD +}; + +/// +/// The PCH_DEVICE_INTERRUPT_CONFIG block describes interrupt pin, IRQ and interrupt mode for PCH device. +/// +struct SI_PCH_DEVICE_INTERRUPT_CONFIG{ + uint8_t Device; ///< Device number + uint8_t Function; ///< Device function + uint8_t IntX; ///< Interrupt pin: INTA-INTD (see SI_PCH_INT_PIN) + uint8_t Irq; ///< IRQ to be set for device. +} __attribute__((packed));; + +#define SI_PCH_MAX_DEVICE_INTERRUPT_CONFIG 64 ///< Number of all PCH devices + +/** Fsp S Configuration +**/ +struct FSP_S_CONFIG { + +/** Offset 0x0020 - Logo Pointer + Points to PEI Display Logo Image + 0 : 0 +**/ + uint32_t LogoPtr; + +/** Offset 0x0024 - Logo Size + Size of PEI Display Logo Image + 0 : 0 +**/ + uint32_t LogoSize; + +/** Offset 0x0028 - Graphics Configuration Ptr + Points to VBT + 0 : 0 +**/ + uint32_t GraphicsConfigPtr; + +/** Offset 0x002C - Enable Device 4 + Enable/disable Device 4 + $EN_DIS +**/ + uint8_t Device4Enable; + +/** Offset 0x002D - Enable Intel HD Audio (Azalia) + Enable/disable Azalia controller. + $EN_DIS +**/ + uint8_t PchHdaEnable; + +/** Offset 0x002E - Enable HD Audio DSP + Enable/disable HD Audio DSP feature. + $EN_DIS +**/ + uint8_t PchHdaDspEnable; + +/** Offset 0x002F - Select HDAudio IoBuffer Ownership + Indicates the ownership of the I/O buffer between Intel HD Audio link vs I2S0 / + I2S port. 0: Intel HD-Audio link owns all the I/O buffers. 1: Intel HD-Audio link + owns 4 of the I/O buffers for 1 HD-Audio codec connection, and I2S1 port owns 4 + of the I/O buffers for 1 I2S codec connection. 2: Reserved. 3: I2S0 and I2S1 ports + own all the I/O buffers. + 0:HD-A Link, 1:Shared HD-A Link and I2S Port, 3:I2S Ports +**/ + uint8_t PchHdaIoBufferOwnership; + +/** Offset 0x0030 - Enable CIO2 Controller + Enable/disable SKYCAM CIO2 Controller. + $EN_DIS +**/ + uint8_t PchCio2Enable; + +/** Offset 0x0031 - Enable eMMC Controller + Enable/disable eMMC Controller. + $EN_DIS +**/ + uint8_t ScsEmmcEnabled; + +/** Offset 0x0032 - Enable eMMC HS400 Mode + Enable eMMC HS400 Mode. + $EN_DIS +**/ + uint8_t ScsEmmcHs400Enabled; + +/** Offset 0x0033 - Enable SdCard Controller + Enable/disable SD Card Controller. + $EN_DIS +**/ + uint8_t ScsSdCardEnabled; + +/** Offset 0x0034 - Enable PCH ISH Controller + Enable/disable ISH Controller. + $EN_DIS +**/ + uint8_t PchIshEnable; + +/** Offset 0x0035 - Show SPI controller + Enable/disable to show SPI controller. + $EN_DIS +**/ + uint8_t ShowSpiController; + +/** Offset 0x0036 +**/ + uint16_t UnusedUpdSpace0; + +/** Offset 0x0038 - MicrocodeRegionBase + Memory Base of Microcode Updates +**/ + uint32_t MicrocodeRegionBase; + +/** Offset 0x003C - MicrocodeRegionSize + Size of Microcode Updates +**/ + uint32_t MicrocodeRegionSize; + +/** Offset 0x0040 - Turbo Mode + Enable/Disable Turbo mode. 0: disable, 1: enable + $EN_DIS +**/ + uint8_t TurboMode; + +/** Offset 0x0041 - Enable SATA SALP Support + Enable/disable SATA Aggressive Link Power Management. + $EN_DIS +**/ + uint8_t SataSalpSupport; + +/** Offset 0x0042 - Enable SATA ports + Enable/disable SATA ports. One byte for each port, byte0 for port0, byte1 for port1, + and so on. +**/ + uint8_t SataPortsEnable[8]; + +/** Offset 0x004A - Enable SATA DEVSLP Feature + Enable/disable SATA DEVSLP per port. 0 is disable, 1 is enable. One byte for each + port, byte0 for port0, byte1 for port1, and so on. +**/ + uint8_t SataPortsDevSlp[8]; + +/** Offset 0x0052 - Enable USB2 ports + Enable/disable per USB2 ports. One byte for each port, byte0 for port0, byte1 for + port1, and so on. +**/ + uint8_t PortUsb20Enable[16]; + +/** Offset 0x0062 - Enable USB3 ports + Enable/disable per USB3 ports. One byte for each port, byte0 for port0, byte1 for + port1, and so on. +**/ + uint8_t PortUsb30Enable[10]; + +/** Offset 0x006C - Enable xDCI controller + Enable/disable to xDCI controller. + $EN_DIS +**/ + uint8_t XdciEnable; + +/** Offset 0x006D - Enable XHCI SSIC Eanble + Enable/disable XHCI SSIC port. + $EN_DIS +**/ + uint8_t SsicPortEnable; + +/** Offset 0x006E +**/ + uint8_t UnusedUpdSpace1[1]; + +/** Offset 0x006F - Enable SerialIo Device Mode + 0:Disabled, 1:ACPI Mode, 2:PCI Mode, 3:Hidden mode, 4:Legacy UART mode - Enable/disable + SerialIo I2C0,I2C1,I2C2,I2C3,I2C4,I2C5,SPI0,SPI1,UART0,UART1,UART2 device mode + respectively. One byte for each controller, byte0 for I2C0, byte1 for I2C1, and so on. +**/ + uint8_t SerialIoDevMode[11]; + +/** Offset 0x007A - Address of PCH_DEVICE_INTERRUPT_CONFIG table. + The address of the table of PCH_DEVICE_INTERRUPT_CONFIG. +**/ + uint32_t DevIntConfigPtr; + +/** Offset 0x007E - Number of DevIntConfig Entry + Number of Device Interrupt Configuration Entry. If this is not zero, the DevIntConfigPtr + must not be NULL. +**/ + uint8_t NumOfDevIntConfig; + +/** Offset 0x007F - PIRQx to IRQx Map Config + PIRQx to IRQx mapping. The valid value is 0x00 to 0x0F for each. First byte is for + PIRQA, second byte is for PIRQB, and so on. The setting is only available in Legacy + 8259 PCI mode. +**/ + uint8_t PxRcConfig[8]; + +/** Offset 0x0087 - Select GPIO IRQ Route + GPIO IRQ Select. The valid value is 14 or 15. + 0 : 0xFF +**/ + uint8_t GpioIrqRoute; + +/** Offset 0x0088 - Select SciIrqSelect + SCI IRQ Select. The valid value is 9, 10, 11, and 20, 21, 22, 23 for APIC only. + 0 : 0xFF +**/ + uint8_t SciIrqSelect; + +/** Offset 0x0089 - Select TcoIrqSelect + TCO IRQ Select. The valid value is 9, 10, 11, 20, 21, 22, 23. + 0 : 0xFF +**/ + uint8_t TcoIrqSelect; + +/** Offset 0x008A - Enable/Disable Tco IRQ + Enable/disable TCO IRQ + $EN_DIS +**/ + uint8_t TcoIrqEnable; + +/** Offset 0x008B - PCH HDA Verb Table Entry Number + Number of Entries in Verb Table. +**/ + uint8_t PchHdaVerbTableEntryNum; + +/** Offset 0x008C - PCH HDA Verb Table Pointer + Pointer to Array of pointers to Verb Table. +**/ + uint32_t PchHdaVerbTablePtr; + +/** Offset 0x0090 +**/ + uint8_t UnusedUpdSpace2; + +/** Offset 0x0091 - Enable SATA + Enable/disable SATA controller. + $EN_DIS +**/ + uint8_t SataEnable; + +/** Offset 0x0092 - SATA Mode + Select SATA controller working mode. + 0:AHCI, 1:RAID +**/ + uint8_t SataMode; + +/** Offset 0x0093 - USB Per Port HS Preemphasis Bias + USB Per Port HS Preemphasis Bias. 000b-0mV, 001b-11.25mV, 010b-16.9mV, 011b-28.15mV, + 100b-28.15mV, 101b-39.35mV, 110b-45mV, 111b-56.3mV. One byte for each port. +**/ + uint8_t Usb2AfePetxiset[16]; + +/** Offset 0x00A3 - USB Per Port HS Transmitter Bias + USB Per Port HS Transmitter Bias. 000b-0mV, 001b-11.25mV, 010b-16.9mV, 011b-28.15mV, + 100b-28.15mV, 101b-39.35mV, 110b-45mV, 111b-56.3mV, One byte for each port. +**/ + uint8_t Usb2AfeTxiset[16]; + +/** Offset 0x00B3 - USB Per Port HS Transmitter Emphasis + USB Per Port HS Transmitter Emphasis. 00b - Emphasis OFF, 01b - De-emphasis ON, + 10b - Pre-emphasis ON, 11b - Pre-emphasis & De-emphasis ON. One byte for each port. +**/ + uint8_t Usb2AfePredeemp[16]; + +/** Offset 0x00C3 - USB Per Port Half Bit Pre-emphasis + USB Per Port Half Bit Pre-emphasis. 1b - half-bit pre-emphasis, 0b - full-bit pre-emphasis. + One byte for each port. +**/ + uint8_t Usb2AfePehalfbit[16]; + +/** Offset 0x00D3 - Enable the write to USB 3.0 TX Output -3.5dB De-Emphasis Adjustment + Enable the write to USB 3.0 TX Output -3.5dB De-Emphasis Adjustment. Each value + in arrary can be between 0-1. One byte for each port. +**/ + uint8_t Usb3HsioTxDeEmphEnable[10]; + +/** Offset 0x00DD - USB 3.0 TX Output -3.5dB De-Emphasis Adjustment Setting + USB 3.0 TX Output -3.5dB De-Emphasis Adjustment Setting, HSIO_TX_DWORD5[21:16], + <b>Default = 29h</b> (approximately -3.5dB De-Emphasis). One byte for each port. +**/ + uint8_t Usb3HsioTxDeEmph[10]; + +/** Offset 0x00E7 - Enable the write to USB 3.0 TX Output Downscale Amplitude Adjustment + Enable the write to USB 3.0 TX Output Downscale Amplitude Adjustment, Each value + in arrary can be between 0-1. One byte for each port. +**/ + uint8_t Usb3HsioTxDownscaleAmpEnable[10]; + +/** Offset 0x00F1 - USB 3.0 TX Output Downscale Amplitude Adjustment + USB 3.0 TX Output Downscale Amplitude Adjustment, HSIO_TX_DWORD8[21:16], <b>Default + = 00h</b>. One byte for each port. +**/ + uint8_t Usb3HsioTxDownscaleAmp[10]; + +/** Offset 0x00FB - Enable LAN + Enable/disable LAN controller. + $EN_DIS +**/ + uint8_t PchLanEnable; + +/** Offset 0x00FC +**/ + uint8_t UnusedUpdSpace3[24]; + +/** Offset 0x0114 - Enable PCIE RP CLKREQ Support + Enable/disable PCIE Root Port CLKREQ support. 0: disable, 1: enable. One byte for + each port, byte0 for port1, byte1 for port2, and so on. +**/ + uint8_t PcieRpClkReqSupport[24]; + +/** Offset 0x012C - Configure CLKREQ Number + Configure Root Port CLKREQ Number if CLKREQ is supported. Each value in arrary can + be between 0-6. One byte for each port, byte0 for port1, byte1 for port2, and so on. +**/ + uint8_t PcieRpClkReqNumber[24]; + +/** Offset 0x0144 +**/ + uint8_t UnusedUpdSpace4[5]; + +/** Offset 0x0149 - HECI3 state + The HECI3 state from Mbp for reference in S3 path or when MbpHob is not installed. + 0: disable, 1: enable + $EN_DIS +**/ + uint8_t Heci3Enabled; + +/** Offset 0x014A +**/ + uint8_t UnusedUpdSpace5[9]; + +/** Offset 0x0153 - AMT Switch + Enable/Disable. 0: Disable, 1: enable, Enable or disable AMT functionality. + $EN_DIS +**/ + uint8_t AmtEnabled; + +/** Offset 0x0154 - WatchDog Timer Switch + Enable/Disable. 0: Disable, 1: enable, Enable or disable WatchDog timer. + $EN_DIS +**/ + uint8_t WatchDog; + +/** Offset 0x0155 - ASF Switch + Enable/Disable. 0: Disable, 1: enable, Enable or disable ASF functionality. + $EN_DIS +**/ + uint8_t AsfEnabled; + +/** Offset 0x0156 - Manageability Mode set by Mebx + Enable/Disable. 0: Disable, 1: enable, Enable or disable Manageability Mode. + $EN_DIS +**/ + uint8_t ManageabilityMode; + +/** Offset 0x0157 - PET Progress + Enable/Disable. 0: Disable, 1: enable, Enable/Disable PET Events Progress to receive + PET Events. + $EN_DIS +**/ + uint8_t FwProgress; + +/** Offset 0x0158 - SOL Switch + Enable/Disable. 0: Disable, 1: enable, Serial Over Lan enable/disable state by Mebx + $EN_DIS +**/ + uint8_t AmtSolEnabled; + +/** Offset 0x0159 - OS Timer + 16 bits Value, Set OS watchdog timer. + $EN_DIS +**/ + uint16_t WatchDogTimerOs; + +/** Offset 0x015B - BIOS Timer + 16 bits Value, Set BIOS watchdog timer. + $EN_DIS +**/ + uint16_t WatchDogTimerBios; + +/** Offset 0x015D +**/ + uint8_t UnusedUpdSpace6[163]; + +/** Offset 0x0200 - Enable/Disable SA CRID + Enable: SA CRID, Disable (Default): SA CRID + $EN_DIS +**/ + uint8_t CridEnable; + +/** Offset 0x0201 - Subsystem Vendor ID for SA devices + Subsystem ID that will be programmed to SA devices: Default SubSystemVendorId=0x8086 +**/ + uint16_t DefaultSvid; + +/** Offset 0x0203 - Subsystem Device ID for SA devices + Subsystem ID that will be programmed to SA devices: Default SubSystemId=0x2015 +**/ + uint16_t DefaultSid; + +/** Offset 0x0205 - DMI ASPM + 0=Disable, 2(Default)=L1 + 0:Disable, 2:L1 +**/ + uint8_t DmiAspm; + +/** Offset 0x0206 - PCIe DeEmphasis control per root port + 0: -6dB, 1(Default): -3.5dB + 0:Disable, 2:L1 +**/ + uint8_t PegDeEmphasis[3]; + +/** Offset 0x0209 - PCIe Slot Power Limit value per root port + Slot power limit value per root port +**/ + uint8_t PegSlotPowerLimitValue[3]; + +/** Offset 0x020C - PCIe Slot Power Limit scale per root port + Slot power limit scale per root port + 0:1.0x, 1:0.1x, 2:0.01x, 3:0x001x +**/ + uint8_t PegSlotPowerLimitScale[3]; + +/** Offset 0x020F - PCIe Physical Slot Number per root port + Physical Slot Number per root port +**/ + uint16_t PegPhysicalSlotNumber[3]; + +/** Offset 0x0215 - Enable/Disable PavpEnable + Enable(Default): Enable PavpEnable, Disable: Disable PavpEnable + $EN_DIS +**/ + uint8_t PavpEnable; + +/** Offset 0x0216 - CdClock Frequency selection + 0=308.57 Mhz, 1=337.5 Mhz, 2=432 Mhz, 3=450 Mhz, 4=540 Mhz, 5=617.14 Mhz, 6(Default)= 675 Mhz + 0: 308.57 Mhz, 1: 337.5 Mhz, 2: 432 Mhz, 3: 450 Mhz, 4: 540 Mhz, 5: 617.14 Mhz, + 6: 675 Mhz +**/ + uint8_t CdClock; + +/** Offset 0x0217 - Enable/Disable PeiGraphicsPeimInit + Enable: Enable PeiGraphicsPeimInit, Disable(Default): Disable PeiGraphicsPeimInit + $EN_DIS +**/ + uint8_t PeiGraphicsPeimInit; + +/** Offset 0x0218 - Enable/Disable SA IMGU(SKYCAM) + Enable(Default): Enable SA IMGU(SKYCAM), Disable: Disable SA IMGU(SKYCAM) + $EN_DIS +**/ + uint8_t SaImguEnable; + +/** Offset 0x0219 - Enable or disable GMM device + 0=Disable, 1(Default)=Enable + $EN_DIS +**/ + uint8_t GmmEnable; + +/** Offset 0x021A - State of X2APIC_OPT_OUT bit in the DMAR table + 0=Disable/Clear, 1(Default)=Enable/Set + $EN_DIS +**/ + uint8_t X2ApicOptOut; + +/** Offset 0x021B - Base addresses for VT-d function MMIO access + Base addresses for VT-d MMIO access per VT-d engine +**/ + uint32_t VtdBaseAddress[2]; + +/** Offset 0x0223 +**/ + uint8_t UnusedUpdSpace7[20]; + +/** Offset 0x0237 - SaPostMemProductionRsvd + Reserved for SA Post-Mem Production + $EN_DIS +**/ + uint8_t SaPostMemProductionRsvd[16]; + +/** Offset 0x0247 +**/ + uint8_t UnusedUpdSpace8[7]; + +/** Offset 0x024E - Power State 3 enable/disable + PCODE MMIO Mailbox: Power State 3 enable/disable; 0: Disable; <b>1: Enable</b>. + For all VR Indexes +**/ + uint8_t Psi3Enable[5]; + +/** Offset 0x0253 - Power State 4 enable/disable + PCODE MMIO Mailbox: Power State 4 enable/disable; 0: Disable; <b>1: Enable</b>.For + all VR Indexes +**/ + uint8_t Psi4Enable[5]; + +/** Offset 0x0258 - Imon slope correction + PCODE MMIO Mailbox: Imon slope correction. Specified in 1/100 increment values. + Range is 0-200. 125 = 1.25. <b>0: Auto</b>.For all VR Indexes +**/ + uint8_t ImonSlope[5]; + +/** Offset 0x025D - Imon offset correction + PCODE MMIO Mailbox: Imon offset correction. Value is a 2's complement signed integer. + Units 1/1000, Range 0-63999. For an offset = 12.580, use 12580. <b>0: Auto</b> +**/ + uint8_t ImonOffset[5]; + +/** Offset 0x0262 - Enable/Disable BIOS configuration of VR + Enable/Disable BIOS configuration of VR; <b>0: Disable</b>; 1: Enable.For all VR Indexes +**/ + uint8_t VrConfigEnable[5]; + +/** Offset 0x0267 - Thermal Design Current enable/disable + PCODE MMIO Mailbox: Thermal Design Current enable/disable; <b>0: Disable</b>; 1: + Enable.For all VR Indexes +**/ + uint8_t TdcEnable[5]; + +/** Offset 0x026C - HECI3 state + PCODE MMIO Mailbox: Thermal Design Current time window. Defined in milli seconds. + Valid Values 1 - 1ms , 2 - 2ms , 3 - 3ms , 4 - 4ms , 5 - 5ms , 6 - 6ms , 7 - 7ms + , 8 - 8ms , 10 - 10ms.For all VR Indexe +**/ + uint8_t TdcTimeWindow[5]; + +/** Offset 0x0271 - Thermal Design Current Lock + PCODE MMIO Mailbox: Thermal Design Current Lock; <b>0: Disable</b>; 1: Enable.For + all VR Indexes +**/ + uint8_t TdcLock[5]; + +/** Offset 0x0276 - Platform Psys slope correction + PCODE MMIO Mailbox: Platform Psys slope correction. <b>0 - Auto</b> Specified in + 1/100 increment values. Range is 0-200. 125 = 1.25 + 0x0:0xFF +**/ + uint8_t PsysSlope; + +/** Offset 0x0277 - Platform Psys offset correction + PCODE MMIO Mailbox: Platform Psys offset correction. <b>0 - Auto</b> Units 1/4, + Range 0-255. Value of 100 = 100/4 = 25 offset + 0x0:0xFF +**/ + uint8_t PsysOffset; + +/** Offset 0x0278 - Acoustic Noise Mitigation feature + Enable or Disable Acoustic Noise Mitigation feature. <b>0: Disabled</b>; 1: Enabled + 0x0:0xFF +**/ + uint8_t AcousticNoiseMitigation; + +/** Offset 0x0279 - Disable Fast Slew Rate for Deep Package C States for VR IA domain + Disable Fast Slew Rate for Deep Package C States based on Acoustic Noise Mitigation + feature enabled. <b>0: False</b>; 1: True + 0x0:0xFF +**/ + uint8_t FastPkgCRampDisableIa; + +/** Offset 0x027A - Slew Rate configuration for Deep Package C States for VR IA domain + Slew Rate configuration for Deep Package C States for VR IA domain based on Acoustic + Noise Mitigation feature enabled. <b>0: Fast/2</b>; 1: Fast/4; 2: Fast/8; 3: Fast/16 + 0x0:0xFF +**/ + uint8_t SlowSlewRateForIa; + +/** Offset 0x027B - Slew Rate configuration for Deep Package C States for VR GT domain + Slew Rate configuration for Deep Package C States for VR GT domain based on Acoustic + Noise Mitigation feature enabled. <b>0: Fast/2</b>; 1: Fast/4; 2: Fast/8; 3: Fast/16 + 0x0:0xFF +**/ + uint8_t SlowSlewRateForGt; + +/** Offset 0x027C - Slew Rate configuration for Deep Package C States for VR SA domain + Slew Rate configuration for Deep Package C States for VR SA domain based on Acoustic + Noise Mitigation feature enabled. <b>0: Fast/2</b>; 1: Fast/4; 2: Fast/8; 3: Fast/16 + 0x0:0xFF +**/ + uint8_t SlowSlewRateForSa; + +/** Offset 0x027D +**/ + uint8_t UnusedUpdSpace9[8]; + +/** Offset 0x0285 - Thermal Design Current current limit + PCODE MMIO Mailbox: Thermal Design Current current limit. Specified in 1/8A units. + Range is 0-4095. 1000 = 125A. <b>0: Auto</b>. For all VR Indexes +**/ + uint16_t TdcPowerLimit[5]; + +/** Offset 0x028F +**/ + uint8_t UnusedUpdSpace10[10]; + +/** Offset 0x0299 - AcLoadline + PCODE MMIO Mailbox: AcLoadline in 1/100 mOhms (ie. 1250 = 12.50 mOhm); Range is + 0-6249. <b>Intel Recommended Defaults vary by domain and SKU. +**/ + uint16_t AcLoadline[5]; + +/** Offset 0x02A3 - DcLoadline + PCODE MMIO Mailbox: DcLoadline in 1/100 mOhms (ie. 1250 = 12.50 mOhm); Range is + 0-6249.<b>Intel Recommended Defaults vary by domain and SKU.</b> +**/ + uint16_t DcLoadline[5]; + +/** Offset 0x02AD - Power State 1 Threshold current + PCODE MMIO Mailbox: Power State 1 current cuttof in 1/4 Amp increments. Range is + 0-128A. Default Value = 20A. +**/ + uint16_t Psi1Threshold[5]; + +/** Offset 0x02B7 - Power State 2 Threshold current + PCODE MMIO Mailbox: Power State 2 current cuttof in 1/4 Amp increments. Range is + 0-128A. Default Value = 5A. +**/ + uint16_t Psi2Threshold[5]; + +/** Offset 0x02C1 - Power State 3 Threshold current + PCODE MMIO Mailbox: Power State 3 current cuttof in 1/4 Amp increments. Range is + 0-128A. Default Value = 1A. +**/ + uint16_t Psi3Threshold[5]; + +/** Offset 0x02CB - Icc Max limit + PCODE MMIO Mailbox: VR Icc Max limit. 0-255A in 1/4 A units. 400 = 100A +**/ + uint16_t IccMax[5]; + +/** Offset 0x02D5 - VR Voltage Limit + PCODE MMIO Mailbox: VR Voltage Limit. Range is 0-7999mV. +**/ + uint16_t VrVoltageLimit[5]; + +/** Offset 0x02DF - Disable Fast Slew Rate for Deep Package C States for VR GT domain + Disable Fast Slew Rate for Deep Package C States based on Acoustic Noise Mitigation + feature enabled. <b>0: False</b>; 1: True + 0x0:0xFF +**/ + uint8_t FastPkgCRampDisableGt; + +/** Offset 0x02E0 - Disable Fast Slew Rate for Deep Package C States for VR SA domain + Disable Fast Slew Rate for Deep Package C States based on Acoustic Noise Mitigation + feature enabled. <b>0: False</b>; 1: True + 0x0:0xFF +**/ + uint8_t FastPkgCRampDisableSa; + +/** Offset 0x02E1 +**/ + uint8_t UnusedUpdSpace11; + +/** Offset 0x02E2 - Enable VR specific mailbox command + VR specific mailbox commands. <b>00b - no VR specific command sent.</b> 01b - A + VR mailbox command specifically for the MPS IMPV8 VR will be sent. 10b - VR specific + command sent for PS4 exit issue. 11b - Reserved. + $EN_DIS +**/ + uint8_t SendVrMbxCmd; + +/** Offset 0x02E3 - Select VR specific mailbox command to send + VR specific mailbox commands. <b>000b - no VR specific command sent.</b> 001b - + VR mailbox command specifically for the MPS IMPV8 VR will be sent. 010b - VR specific + command sent for PS4 exit issue. 100b - VR specific command sent for MPS VR decay issue. +**/ + uint8_t SendVrMbxCmd1; + +/** Offset 0x02E4 +**/ + uint8_t UnusedUpdSpace12; + +/** Offset 0x02E5 - CpuS3ResumeMtrrData + Pointer CPU S3 Resume MTRR Data +**/ + uint32_t CpuS3ResumeMtrrData; + +/** Offset 0x02E9 - CpuS3ResumeMtrrDataSize + Size of S3 resume MTRR data. +**/ + uint16_t CpuS3ResumeMtrrDataSize; + +/** Offset 0x02EB +**/ + uint8_t UnusedUpdSpace13[2]; + +/** Offset 0x02ED - Cpu Configuration + Size of S3 resume MTRR data. +**/ + union CPU_CONFIG_FSP_DATA CpuConfig; + +/** Offset 0x02F9 +**/ + uint16_t UnusedUpdSpace14; + +/** Offset 0x02FB - Enable SkyCam PortA Termination override + Enable/disable PortA Termination override. + $EN_DIS +**/ + uint8_t PchSkyCamPortATermOvrEnable; + +/** Offset 0x02FC - Enable SkyCam PortB Termination override + Enable/disable PortB Termination override. + $EN_DIS +**/ + uint8_t PchSkyCamPortBTermOvrEnable; + +/** Offset 0x02FD - Enable SkyCam PortC Termination override + Enable/disable PortC Termination override. + $EN_DIS +**/ + uint8_t PchSkyCamPortCTermOvrEnable; + +/** Offset 0x02FE - Enable SkyCam PortD Termination override + Enable/disable PortD Termination override. + $EN_DIS +**/ + uint8_t PchSkyCamPortDTermOvrEnable; + +/** Offset 0x02FF - Enable SkyCam PortA Clk Trim + Enable/disable PortA Clk Trim. + $EN_DIS +**/ + uint8_t PchSkyCamPortATrimEnable; + +/** Offset 0x0300 - Enable SkyCam PortB Clk Trim + Enable/disable PortB Clk Trim. + $EN_DIS +**/ + uint8_t PchSkyCamPortBTrimEnable; + +/** Offset 0x0301 - Enable SkyCam PortC Clk Trim + Enable/disable PortC Clk Trim. + $EN_DIS +**/ + uint8_t PchSkyCamPortCTrimEnable; + +/** Offset 0x0302 - Enable SkyCam PortD Clk Trim + Enable/disable PortD Clk Trim. + $EN_DIS +**/ + uint8_t PchSkyCamPortDTrimEnable; + +/** Offset 0x0303 - Enable SkyCam PortA Ctle + Enable/disable PortA Ctle. + $EN_DIS +**/ + uint8_t PchSkyCamPortACtleEnable; + +/** Offset 0x0304 - Enable SkyCam PortB Ctle + Enable/disable PortB Ctle. + $EN_DIS +**/ + uint8_t PchSkyCamPortBCtleEnable; + +/** Offset 0x0305 - Enable SkyCam PortCD Ctle + Enable/disable PortCD Ctle. + $EN_DIS +**/ + uint8_t PchSkyCamPortCDCtleEnable; + +/** Offset 0x0306 - Enable SkyCam PortA Ctle Cap Value + Enable/disable PortA Ctle Cap Value. +**/ + uint8_t PchSkyCamPortACtleCapValue; + +/** Offset 0x0307 - Enable SkyCam PortB Ctle Cap Value + Enable/disable PortB Ctle Cap Value. +**/ + uint8_t PchSkyCamPortBCtleCapValue; + +/** Offset 0x0308 - Enable SkyCam PortCD Ctle Cap Value + Enable/disable PortCD Ctle Cap Value. +**/ + uint8_t PchSkyCamPortCDCtleCapValue; + +/** Offset 0x0309 - Enable SkyCam PortA Ctle Res Value + Enable/disable PortA Ctle Res Value. +**/ + uint8_t PchSkyCamPortACtleResValue; + +/** Offset 0x030A - Enable SkyCam PortB Ctle Res Value + Enable/disable PortB Ctle Res Value. +**/ + uint8_t PchSkyCamPortBCtleResValue; + +/** Offset 0x030B - Enable SkyCam PortCD Ctle Res Value + Enable/disable PortCD Ctle Res Value. +**/ + uint8_t PchSkyCamPortCDCtleResValue; + +/** Offset 0x030C - Enable SkyCam PortA Clk Trim Value + Enable/disable PortA Clk Trim Value. +**/ + uint8_t PchSkyCamPortAClkTrimValue; + +/** Offset 0x030D - Enable SkyCam PortB Clk Trim Value + Enable/disable PortB Clk Trim Value. +**/ + uint8_t PchSkyCamPortBClkTrimValue; + +/** Offset 0x030E - Enable SkyCam PortC Clk Trim Value + Enable/disable PortC Clk Trim Value. +**/ + uint8_t PchSkyCamPortCClkTrimValue; + +/** Offset 0x030F - Enable SkyCam PortD Clk Trim Value + Enable/disable PortD Clk Trim Value. +**/ + uint8_t PchSkyCamPortDClkTrimValue; + +/** Offset 0x0310 - Enable SkyCam Port A Data Trim Value + Enable/disable Port A Data Trim Value. +**/ + uint16_t PchSkyCamPortADataTrimValue; + +/** Offset 0x0312 - Enable SkyCam Port B Data Trim Value + Enable/disable Port B Data Trim Value. +**/ + uint16_t PchSkyCamPortBDataTrimValue; + +/** Offset 0x0314 - Enable SkyCam C/D Data Trim Value + Enable/disable C/D Data Trim Value. +**/ + uint16_t PchSkyCamPortCDDataTrimValue; + +/** Offset 0x0316 - Enable DMI ASPM + ASPM on PCH side of the DMI Link. + $EN_DIS +**/ + uint8_t PchDmiAspm; + +/** Offset 0x0317 - Enable Power Optimizer + Enable DMI Power Optimizer on PCH side. + $EN_DIS +**/ + uint8_t PchPwrOptEnable; + +/** Offset 0x0318 - PCH Flash Protection Ranges Write Enble + Write or erase is blocked by hardware. +**/ + uint8_t PchWriteProtectionEnable[5]; + +/** Offset 0x031D - PCH Flash Protection Ranges Read Enble + Read is blocked by hardware. +**/ + uint8_t PchReadProtectionEnable[5]; + +/** Offset 0x0322 - PCH Protect Range Limit + Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for + limit comparison. +**/ + uint16_t PchProtectedRangeLimit[5]; + +/** Offset 0x032C - PCH Protect Range Base + Left shifted address by 12 bits with address bits 11:0 are assumed to be 0. +**/ + uint16_t PchProtectedRangeBase[5]; + +/** Offset 0x0336 - Enable Pme + Enable Azalia wake-on-ring. + $EN_DIS +**/ + uint8_t PchHdaPme; + +/** Offset 0x0337 - IO Buffer Voltage + I/O Buffer Voltage Mode Select: 0: 3.3V, 1: 1.8V. +**/ + uint8_t PchHdaIoBufferVoltage; + +/** Offset 0x0338 - VC Type + Virtual Channel Type Select: 0: VC0, 1: VC1. +**/ + uint8_t PchHdaVcType; + +/** Offset 0x0339 - HD Audio Link Frequency + HDA Link Freq (PCH_HDAUDIO_LINK_FREQUENCY enum): 0: 6MHz, , 1: 12MHz, 2: 24MHz. +**/ + uint8_t PchHdaLinkFrequency; + +/** Offset 0x033A - iDisp-Link Frequency + iDisp-Link Freq (PCH_HDAUDIO_LINK_FREQUENCY enum): 4: 96MHz, 3: 48MHz. +**/ + uint8_t PchHdaIDispLinkFrequency; + +/** Offset 0x033B - iDisp-Link T-mode + iDisp-Link T-Mode (PCH_HDAUDIO_IDISP_TMODE enum): 0: 2T, 1: 1T. +**/ + uint8_t PchHdaIDispLinkTmode; + +/** Offset 0x033C - Universal Audio Architecture compliance for DSP enabled system + 0: Not-UAA Compliant (Intel SST driver supported only), 1: UAA Compliant (HDA Inbox + driver or SST driver supported). + $EN_DIS +**/ + uint8_t PchHdaDspUaaCompliance; + +/** Offset 0x033D - iDisplay Audio Codec disconnection + 0: Not disconnected, enumerable, 1: Disconnected SDI, not enumerable. + $EN_DIS +**/ + uint8_t PchHdaIDispCodecDisconnect; + +/** Offset 0x033E - DSP DMIC Select (PCH_HDAUDIO_DMIC_TYPE enum) + 0: Disable; 1: 2ch array; 2: 4ch array; 3: 1ch array. +**/ + uint8_t PchHdaDspEndpointDmic; + +/** Offset 0x033F - DSP Bluetooth enablement + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchHdaDspEndpointBluetooth; + +/** Offset 0x0340 - DSP I2S enablement + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchHdaDspEndpointI2s; + +/** Offset 0x0341 - Bitmask of supported DSP features + [BIT0] - WoV; [BIT1] - BT Sideband; [BIT2] - Codec VAD; [BIT5] - BT Intel HFP; [BIT6] + - BT Intel A2DP; [BIT7] - DSP based speech pre-processing disabled; [BIT8] - 0: + Intel WoV, 1: Windows Voice Activation. +**/ + uint32_t PchHdaDspFeatureMask; + +/** Offset 0x0345 - Bitmask of supported DSP Pre/Post-Processing Modules + Deprecated: Specific pre/post-processing module bit position must be coherent with + the ACPI implementation: \_SB.PCI0.HDAS._DSM Function 3: Query Pre/Post Processing + Module Support. +**/ + uint32_t PchHdaDspPpModuleMask; + +/** Offset 0x0349 - Enable PCH Io Apic + Set to 1 if BDF value is valid. + $EN_DIS +**/ + uint8_t PchIoApicBdfValid; + +/** Offset 0x034A - PCH Io Apic Bus Number + Bus/Device/Function used as Requestor / Completer ID. Default is 0xF0. +**/ + uint8_t PchIoApicBusNumber; + +/** Offset 0x034B - PCH Io Apic Device Number + Bus/Device/Function used as Requestor / Completer ID. Default is 0x1F. +**/ + uint8_t PchIoApicDeviceNumber; + +/** Offset 0x034C - PCH Io Apic Function Number + Bus/Device/Function used as Requestor / Completer ID. Default is 0x00. +**/ + uint8_t PchIoApicFunctionNumber; + +/** Offset 0x034D - Enable PCH Io Apic Entry 24-119 + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIoApicEntry24_119; + +/** Offset 0x034E - PCH Io Apic ID + This member determines IOAPIC ID. Default is 0x02. +**/ + uint8_t PchIoApicId; + +/** Offset 0x034F - PCH Io Apic Range Select + Define address bits 19:12 for the IOxAPIC range. Default is 0. +**/ + uint8_t PchIoApicRangeSelect; + +/** Offset 0x0350 - Enable PCH ISH SPI GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshSpiGpioAssign; + +/** Offset 0x0351 - Enable PCH ISH UART0 GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshUart0GpioAssign; + +/** Offset 0x0352 - Enable PCH ISH UART1 GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshUart1GpioAssign; + +/** Offset 0x0353 - Enable PCH ISH I2C0 GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshI2c0GpioAssign; + +/** Offset 0x0354 - Enable PCH ISH I2C1 GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshI2c1GpioAssign; + +/** Offset 0x0355 - Enable PCH ISH I2C2 GPIO pins assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshI2c2GpioAssign; + +/** Offset 0x0356 - Enable PCH ISH GP_0 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp0GpioAssign; + +/** Offset 0x0357 - Enable PCH ISH GP_1 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp1GpioAssign; + +/** Offset 0x0358 - Enable PCH ISH GP_2 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp2GpioAssign; + +/** Offset 0x0359 - Enable PCH ISH GP_3 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp3GpioAssign; + +/** Offset 0x035A - Enable PCH ISH GP_4 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp4GpioAssign; + +/** Offset 0x035B - Enable PCH ISH GP_5 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp5GpioAssign; + +/** Offset 0x035C - Enable PCH ISH GP_6 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp6GpioAssign; + +/** Offset 0x035D - Enable PCH ISH GP_7 GPIO pin assigned + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchIshGp7GpioAssign; + +/** Offset 0x035E - PCH ISH PDT Unlock Msg + 0: False; 1: True. + $EN_DIS +**/ + uint8_t PchIshPdtUnlock; + +/** Offset 0x035F - Enable PCH Lan LTR capabilty of PCH internal LAN + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchLanLtrEnable; + +/** Offset 0x0360 - Enable PCH Lan use CLKREQ for GbE power management + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchLanK1OffEnable; + +/** Offset 0x0361 - Indicate whether dedicated CLKREQ# is supported + 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchLanClkReqSupported; + +/** Offset 0x0362 - CLKREQ# used by GbE + Valid if ClkReqSupported is TRUE. +**/ + uint8_t PchLanClkReqNumber; + +/** Offset 0x0363 - Enable LOCKDOWN BIOS LOCK + Enable the BIOS Lock feature and set EISS bit (D31:F5:RegDCh[5]) for the BIOS region + protection. + $EN_DIS +**/ + uint8_t PchLockDownBiosLock; + +/** Offset 0x0364 - Enable LOCKDOWN SPI Eiss + Enable InSMM.STS (EISS) in SPI. + $EN_DIS +**/ + uint8_t PchLockDownSpiEiss; + +/** Offset 0x0365 - PCH Sub system vendor ID + Default Subsystem Vendor ID of the PCH devices. Default is 0x8086. +**/ + uint16_t PchSubSystemVendorId; + +/** Offset 0x0367 - PCH Sub system ID + Default Subsystem ID of the PCH devices. Default is 0x7270. +**/ + uint16_t PchSubSystemId; + +/** Offset 0x0369 - PCH Compatibility Revision ID + This member describes whether or not the CRID feature of PCH should be enabled. + $EN_DIS +**/ + uint8_t PchCrid; + +/** Offset 0x036A +**/ + uint8_t UnusedUpdSpace15[6]; + +/** Offset 0x0370 - Enable PCIE RP HotPlug + Indicate whether the root port is hot plug available. +**/ + uint8_t PcieRpHotPlug[24]; + +/** Offset 0x0388 - Enable PCIE RP Pm Sci + Indicate whether the root port power manager SCI is enabled. +**/ + uint8_t PcieRpPmSci[24]; + +/** Offset 0x03A0 - Enable PCIE RP Ext Sync + Indicate whether the extended synch is enabled. +**/ + uint8_t PcieRpExtSync[24]; + +/** Offset 0x03B8 - Enable PCIE RP Transmitter Half Swing + Indicate whether the Transmitter Half Swing is enabled. +**/ + uint8_t PcieRpTransmitterHalfSwing[24]; + +/** Offset 0x03D0 - Enable PCIE RP Clk Req Detect + Probe CLKREQ# signal before enabling CLKREQ# based power management. +**/ + uint8_t PcieRpClkReqDetect[24]; + +/** Offset 0x03E8 - PCIE RP Advanced Error Report + Indicate whether the Advanced Error Reporting is enabled. +**/ + uint8_t PcieRpAdvancedErrorReporting[24]; + +/** Offset 0x0400 - PCIE RP Unsupported Request Report + Indicate whether the Unsupported Request Report is enabled. +**/ + uint8_t PcieRpUnsupportedRequestReport[24]; + +/** Offset 0x0418 - PCIE RP Fatal Error Report + Indicate whether the Fatal Error Report is enabled. +**/ + uint8_t PcieRpFatalErrorReport[24]; + +/** Offset 0x0430 - PCIE RP No Fatal Error Report + Indicate whether the No Fatal Error Report is enabled. +**/ + uint8_t PcieRpNoFatalErrorReport[24]; + +/** Offset 0x0448 - PCIE RP Correctable Error Report + Indicate whether the Correctable Error Report is enabled. +**/ + uint8_t PcieRpCorrectableErrorReport[24]; + +/** Offset 0x0460 - PCIE RP System Error On Fatal Error + Indicate whether the System Error on Fatal Error is enabled. +**/ + uint8_t PcieRpSystemErrorOnFatalError[24]; + +/** Offset 0x0478 - PCIE RP System Error On Non Fatal Error + Indicate whether the System Error on Non Fatal Error is enabled. +**/ + uint8_t PcieRpSystemErrorOnNonFatalError[24]; + +/** Offset 0x0490 - PCIE RP System Error On Correctable Error + Indicate whether the System Error on Correctable Error is enabled. +**/ + uint8_t PcieRpSystemErrorOnCorrectableError[24]; + +/** Offset 0x04A8 - PCIE RP Max Payload + Max Payload Size supported, Default 128B, see enum PCH_PCIE_MAX_PAYLOAD. +**/ + uint8_t PcieRpMaxPayload[24]; + +/** Offset 0x04C0 - PCIE RP Device Reset Pad Active High + Indicated whether PERST# is active 0: Low; 1: High, See: DeviceResetPad. +**/ + uint8_t PcieRpDeviceResetPadActiveHigh[24]; + +/** Offset 0x04D8 - PCIE RP Pcie Speed + Determines each PCIE Port speed capability. 0: Auto; 1: Gen1; 2: Gen2; 3: Gen3 (see: + PCH_PCIE_SPEED). +**/ + uint8_t PcieRpPcieSpeed[24]; + +/** Offset 0x04F0 - PCIE RP Gen3 Equalization Phase Method + PCIe Gen3 Eq Ph3 Method (see PCH_PCIE_EQ_METHOD). 0: Default; 2: Software Search; + 4: Fixed Coeficients. +**/ + uint8_t PcieRpGen3EqPh3Method[24]; + +/** Offset 0x0508 - PCIE RP Physical Slot Number + Indicates the slot number for the root port. Default is the value as root port index. +**/ + uint8_t PcieRpPhysicalSlotNumber[24]; + +/** Offset 0x0520 - PCIE RP Completion Timeout + The root port completion timeout(see: PCH_PCIE_COMPLETION_TIMEOUT). Default is PchPcieCompletionTO_Default. +**/ + uint8_t PcieRpCompletionTimeout[24]; + +/** Offset 0x0538 - PCIE RP Device Reset Pad + The PCH pin assigned to device PERST# signal if available, zero otherwise. See + also DeviceResetPadActiveHigh. +**/ + uint32_t PcieRpDeviceResetPad[24]; + +/** Offset 0x0598 - PCIE RP Aspm + The ASPM configuration of the root port (see: PCH_PCIE_ASPM_CONTROL). Default is + PchPcieAspmAutoConfig. +**/ + uint8_t PcieRpAspm[24]; + +/** Offset 0x05B0 - PCIE RP L1 Substates + The L1 Substates configuration of the root port (see: PCH_PCIE_L1SUBSTATES_CONTROL). + Default is PchPcieL1SubstatesL1_1_2. +**/ + uint8_t PcieRpL1Substates[24]; + +/** Offset 0x05C8 - PCIE RP Ltr Enable + Latency Tolerance Reporting Mechanism. +**/ + uint8_t PcieRpLtrEnable[24]; + +/** Offset 0x05E0 - PCIE RP Ltr Config Lock + 0: Disable; 1: Enable. +**/ + uint8_t PcieRpLtrConfigLock[24]; + +/** Offset 0x05F8 - PCIE Eq Ph3 Lane Param Cm + PCH_PCIE_EQ_LANE_PARAM. Coefficient C-1. +**/ + uint8_t PcieEqPh3LaneParamCm[24]; + +/** Offset 0x0610 - PCIE Eq Ph3 Lane Param Cp + PCH_PCIE_EQ_LANE_PARAM. Coefficient C+1. +**/ + uint8_t PcieEqPh3LaneParamCp[24]; + +/** Offset 0x0628 - PCIE Sw Eq CoeffList Cm + PCH_PCIE_EQ_PARAM. Coefficient C-1. +**/ + uint8_t PcieSwEqCoeffListCm[5]; + +/** Offset 0x062D - PCIE Sw Eq CoeffList Cp + PCH_PCIE_EQ_PARAM. Coefficient C+1. +**/ + uint8_t PcieSwEqCoeffListCp[5]; + +/** Offset 0x0632 - PCIE Disable RootPort Clock Gating + Describes whether the PCI Express Clock Gating for each root port is enabled by + platform modules. 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PcieDisableRootPortClockGating; + +/** Offset 0x0633 - PCIE Enable Peer Memory Write + This member describes whether Peer Memory Writes are enabled on the platform. + $EN_DIS +**/ + uint8_t PcieEnablePeerMemoryWrite; + +/** Offset 0x0634 - PCIE Allow No Ltr Icc PLL Shutdown + Allows BIOS to control ICC PLL Shutdown by determining PCIe devices are LTR capable + or leaving untouched. + $EN_DIS +**/ + uint8_t PcieAllowNoLtrIccPllShutdown; + +/** Offset 0x0635 - PCIE Compliance Test Mode + Compliance Test Mode shall be enabled when using Compliance Load Board. + $EN_DIS +**/ + uint8_t PcieComplianceTestMode; + +/** Offset 0x0636 - PCIE Rp Function Swap + Allows BIOS to use root port function number swapping when root port of function + 0 is disabled. + $EN_DIS +**/ + uint8_t PcieRpFunctionSwap; + +/** Offset 0x0637 - PCIE Rp Detect Timeout Ms + Will wait for link to exit Detect state for enabled ports before assuming there + is no device and potentially disabling the port. +**/ + uint16_t PcieDetectTimeoutMs; + +/** Offset 0x0639 - PCH Pm PME_B0_S5_DIS + When cleared (default), wake events from PME_B0_STS are allowed in S5 if PME_B0_EN = 1. + $EN_DIS +**/ + uint8_t PchPmPmeB0S5Dis; + +/** Offset 0x063A +**/ + uint8_t UnusedUpdSpace16[6]; + +/** Offset 0x0640 - PCH Pm Wol Enable Override + Corresponds to the WOL Enable Override bit in the General PM Configuration B (GEN_PMCON_B) register. + $EN_DIS +**/ + uint8_t PchPmWolEnableOverride; + +/** Offset 0x0641 - PCH Pm Pcie Wake From DeepSx + Determine if enable PCIe to wake from deep Sx. + $EN_DIS +**/ + uint8_t PchPmPcieWakeFromDeepSx; + +/** Offset 0x0642 - PCH Pm WoW lan Enable + Determine if WLAN wake from Sx, corresponds to the HOST_WLAN_PP_EN bit in the PWRM_CFG3 register. + $EN_DIS +**/ + uint8_t PchPmWoWlanEnable; + +/** Offset 0x0643 - PCH Pm WoW lan DeepSx Enable + Determine if WLAN wake from DeepSx, corresponds to the DSX_WLAN_PP_EN bit in the + PWRM_CFG3 register. + $EN_DIS +**/ + uint8_t PchPmWoWlanDeepSxEnable; + +/** Offset 0x0644 - PCH Pm Lan Wake From DeepSx + Determine if enable LAN to wake from deep Sx. + $EN_DIS +**/ + uint8_t PchPmLanWakeFromDeepSx; + +/** Offset 0x0645 - PCH Pm Deep Sx Pol + Deep Sx Policy. + $EN_DIS +**/ + uint8_t PchPmDeepSxPol; + +/** Offset 0x0646 - PCH Pm Slp S3 Min Assert + SLP_S3 Minimum Assertion Width Policy. Default is PchSlpS350ms. +**/ + uint8_t PchPmSlpS3MinAssert; + +/** Offset 0x0647 - PCH Pm Slp S4 Min Assert + SLP_S4 Minimum Assertion Width Policy. Default is PchSlpS44s. +**/ + uint8_t PchPmSlpS4MinAssert; + +/** Offset 0x0648 - PCH Pm Slp Sus Min Assert + SLP_SUS Minimum Assertion Width Policy. Default is PchSlpSus4s. +**/ + uint8_t PchPmSlpSusMinAssert; + +/** Offset 0x0649 - PCH Pm Slp A Min Assert + SLP_A Minimum Assertion Width Policy. Default is PchSlpA2s. +**/ + uint8_t PchPmSlpAMinAssert; + +/** Offset 0x064A +**/ + uint8_t UnusedUpdSpace17[6]; + +/** Offset 0x0650 - PCH Pm Lpc Clock Run + This member describes whether or not the LPC ClockRun feature of PCH should be enabled. + $EN_DIS +**/ + uint8_t PchPmLpcClockRun; + +/** Offset 0x0651 - PCH Pm Slp Strch Sus Up + Enable SLP_X Stretching After SUS Well Power Up. + $EN_DIS +**/ + uint8_t PchPmSlpStrchSusUp; + +/** Offset 0x0652 - PCH Pm Slp Lan Low Dc + Enable/Disable SLP_LAN# Low on DC Power. + $EN_DIS +**/ + uint8_t PchPmSlpLanLowDc; + +/** Offset 0x0653 - PCH Pm Pwr Btn Override Period + PCH power button override period. 000b-4s, 001b-6s, 010b-8s, 011b-10s, 100b-12s, 101b-14s. +**/ + uint8_t PchPmPwrBtnOverridePeriod; + +/** Offset 0x0654 - PCH Pm Disable Dsx Ac Present Pulldown + When Disable, PCH will internal pull down AC_PRESENT in deep SX and during G3 exit. + $EN_DIS +**/ + uint8_t PchPmDisableDsxAcPresentPulldown; + +/** Offset 0x0655 - PCH Pm Capsule Reset Type + Deprecated: Determines type of reset issued during UpdateCapsule(). Always Warm reset. + $EN_DIS +**/ + uint8_t PchPmCapsuleResetType; + +/** Offset 0x0656 - PCH Pm Disable Native Power Button + Power button native mode disable. + $EN_DIS +**/ + uint8_t PchPmDisableNativePowerButton; + +/** Offset 0x0657 - PCH Pm Slp S0 Enable + Indicates whether SLP_S0# is to be asserted when PCH reaches idle state. + $EN_DIS +**/ + uint8_t PchPmSlpS0Enable; + +/** Offset 0x0658 - PCH Pm ME_WAKE_STS + Clear the ME_WAKE_STS bit in the Power and Reset Status (PRSTS) register. + $EN_DIS +**/ + uint8_t PchPmMeWakeSts; + +/** Offset 0x0659 - PCH Pm WOL_OVR_WK_STS + Clear the WOL_OVR_WK_STS bit in the Power and Reset Status (PRSTS) register. + $EN_DIS +**/ + uint8_t PchPmWolOvrWkSts; + +/** Offset 0x065A - PCH Pm Reset Power Cycle Duration + Could be customized in the unit of second. Please refer to EDS for all support settings. + 0 is default, 1 is 1 second, 2 is 2 seconds, ... +**/ + uint8_t PchPmPwrCycDur; + +/** Offset 0x065B - PCH Pm Pcie Pll Ssc + Specifies the Pcie Pll Spread Spectrum Percentage. The default is 0xFF: AUTO - No + BIOS override. +**/ + uint8_t PchPmPciePllSsc; + +/** Offset 0x065C - PCH Pm WOL_OVR_WK_STS + Clear the WOL_OVR_WK_STS bit in the Power and Reset Status (PRSTS) register. + $EN_DIS +**/ + uint8_t PchPort61hEnable; + +/** Offset 0x065D - PCH Sata Pwr Opt Enable + SATA Power Optimizer on PCH side. + $EN_DIS +**/ + uint8_t SataPwrOptEnable; + +/** Offset 0x065E - PCH Sata eSATA Speed Limit + When enabled, BIOS will configure the PxSCTL.SPD to 2 to limit the eSATA port speed. + $EN_DIS +**/ + uint8_t EsataSpeedLimit; + +/** Offset 0x065F - PCH Sata Speed Limit + Indicates the maximum speed the SATA controller can support 0h: PchSataSpeedDefault. +**/ + uint8_t SataSpeedLimit; + +/** Offset 0x0660 - Enable SATA Port HotPlug + Enable SATA Port HotPlug. +**/ + uint8_t SataPortsHotPlug[8]; + +/** Offset 0x0668 - Enable SATA Port Interlock Sw + Enable SATA Port Interlock Sw. +**/ + uint8_t SataPortsInterlockSw[8]; + +/** Offset 0x0670 - Enable SATA Port External + Enable SATA Port External. +**/ + uint8_t SataPortsExternal[8]; + +/** Offset 0x0678 - Enable SATA Port SpinUp + Enable the COMRESET initialization Sequence to the device. +**/ + uint8_t SataPortsSpinUp[8]; + +/** Offset 0x0680 - Enable SATA Port Solid State Drive + 0: HDD; 1: SSD. +**/ + uint8_t SataPortsSolidStateDrive[8]; + +/** Offset 0x0688 - Enable SATA Port Enable Dito Config + Enable DEVSLP Idle Timeout settings (DmVal, DitoVal). +**/ + uint8_t SataPortsEnableDitoConfig[8]; + +/** Offset 0x0690 - Enable SATA Port DmVal + DITO multiplier. Default is 15. +**/ + uint8_t SataPortsDmVal[8]; + +/** Offset 0x0698 - Enable SATA Port DmVal + DEVSLP Idle Timeout (DITO), Default is 625. +**/ + uint16_t SataPortsDitoVal[8]; + +/** Offset 0x06A8 - Enable SATA Port ZpOdd + Support zero power ODD. +**/ + uint8_t SataPortsZpOdd[8]; + +/** Offset 0x06B0 - PCH Sata Rst Raid Alternate Id + Enable RAID Alternate ID. + $EN_DIS +**/ + uint8_t SataRstRaidAlternateId; + +/** Offset 0x06B1 - PCH Sata Rst Raid0 + RAID0. + $EN_DIS +**/ + uint8_t SataRstRaid0; + +/** Offset 0x06B2 - PCH Sata Rst Raid1 + RAID1. + $EN_DIS +**/ + uint8_t SataRstRaid1; + +/** Offset 0x06B3 - PCH Sata Rst Raid10 + RAID10. + $EN_DIS +**/ + uint8_t SataRstRaid10; + +/** Offset 0x06B4 - PCH Sata Rst Raid5 + RAID5. + $EN_DIS +**/ + uint8_t SataRstRaid5; + +/** Offset 0x06B5 - PCH Sata Rst Irrt + Intel Rapid Recovery Technology. + $EN_DIS +**/ + uint8_t SataRstIrrt; + +/** Offset 0x06B6 - PCH Sata Rst Orom Ui Banner + OROM UI and BANNER. + $EN_DIS +**/ + uint8_t SataRstOromUiBanner; + +/** Offset 0x06B7 - PCH Sata Rst Orom Ui Delay + 00b: 2 secs; 01b: 4 secs; 10b: 6 secs; 11: 8 secs (see: PCH_SATA_OROM_DELAY). +**/ + uint8_t SataRstOromUiDelay; + +/** Offset 0x06B8 - PCH Sata Rst Hdd Unlock + Indicates that the HDD password unlock in the OS is enabled. + $EN_DIS +**/ + uint8_t SataRstHddUnlock; + +/** Offset 0x06B9 - PCH Sata Rst Led Locate + Indicates that the LED/SGPIO hardware is attached and ping to locate feature is + enabled on the OS. + $EN_DIS +**/ + uint8_t SataRstLedLocate; + +/** Offset 0x06BA - PCH Sata Rst Irrt Only + Allow only IRRT drives to span internal and external ports. + $EN_DIS +**/ + uint8_t SataRstIrrtOnly; + +/** Offset 0x06BB - PCH Sata Rst Smart Storage + RST Smart Storage caching Bit. + $EN_DIS +**/ + uint8_t SataRstSmartStorage; + +/** Offset 0x06BC - PCH Sata Rst Pcie Storage Remap enable + Enable Intel RST for PCIe Storage remapping. +**/ + uint8_t SataRstPcieEnable[3]; + +/** Offset 0x06BF - PCH Sata Rst Pcie Storage Port + Intel RST for PCIe Storage remapping - PCIe Port Selection (1-based, 0 = autodetect). +**/ + uint8_t SataRstPcieStoragePort[3]; + +/** Offset 0x06C2 - PCH Sata Rst Pcie Device Reset Delay + PCIe Storage Device Reset Delay in milliseconds. Default value is 100ms +**/ + uint8_t SataRstPcieDeviceResetDelay[3]; + +/** Offset 0x06C5 - Enable eMMC HS400 Training + Determine if HS400 Training is required. + $EN_DIS +**/ + uint8_t PchScsEmmcHs400TuningRequired; + +/** Offset 0x06C6 - Set HS400 Tuning Data Valid + Set if HS400 Tuning Data Valid. + $EN_DIS +**/ + uint8_t PchScsEmmcHs400DllDataValid; + +/** Offset 0x06C7 - Rx Strobe Delay Control + Rx Strobe Delay Control - Rx Strobe Delay DLL 1 (HS400 Mode). +**/ + uint8_t PchScsEmmcHs400RxStrobeDll1; + +/** Offset 0x06C8 - Tx Data Delay Control + Tx Data Delay Control 1 - Tx Data Delay (HS400 Mode). +**/ + uint8_t PchScsEmmcHs400TxDataDll; + +/** Offset 0x06C9 - I/O Driver Strength + I/O driver strength: 0 - 33 Ohm, 1 - 40 Ohm, 2 - 50 Ohm. +**/ + uint8_t PchScsEmmcHs400DriverStrength; + +/** Offset 0x06CA - Enable Pch Serial IO GPIO + Determines if enable Serial IO GPIO. + $EN_DIS +**/ + uint8_t SerialIoGpio; + +/** Offset 0x06CB - IO voltage for I2C controllers + Selects the IO voltage for I2C controllers, 0: PchSerialIoIs33V, 1: PchSerialIoIs18V. +**/ + uint8_t SerialIoI2cVoltage[6]; + +/** Offset 0x06D1 - SPI ChipSelect signal polarity + Selects SPI ChipSelect signal polarity. +**/ + uint8_t SerialIoSpiCsPolarity[2]; + +/** Offset 0x06D3 - Enables UART hardware flow control, CTS and RTS lines + Enables UART hardware flow control, CTS and RTS linesh. +**/ + uint8_t SerialIoUartHwFlowCtrl[3]; + +/** Offset 0x06D6 - UART Number For Debug Purpose + UART number for debug purpose. 0:UART0, 1: UART1, 2:UART2. +**/ + uint8_t SerialIoDebugUartNumber; + +/** Offset 0x06D7 - Enable Debug UART Controller + Enable debug UART controller after post. +**/ + uint8_t SerialIoEnableDebugUartAfterPost; + +/** Offset 0x06D8 - Enable Serial IRQ + Determines if enable Serial IRQ. + $EN_DIS +**/ + uint8_t PchSirqEnable; + +/** Offset 0x06D9 - Serial IRQ Mode Select + Serial IRQ Mode Select, 0: quiet mode, 1: continuous mode. + $EN_DIS +**/ + uint8_t PchSirqMode; + +/** Offset 0x06DA - Start Frame Pulse Width + Start Frame Pulse Width, 0: PchSfpw4Clk, 1: PchSfpw6Clk, 2: PchSfpw8Clk. +**/ + uint8_t PchStartFramePulse; + +/** Offset 0x06DB - Enable Thermal Device + Enable Thermal Device. + $EN_DIS +**/ + uint8_t PchThermalDeviceEnable; + +/** Offset 0x06DC - Thermal Device SMI Enable + This locks down SMI Enable on Alert Thermal Sensor Trip. + $EN_DIS +**/ + uint8_t PchTsmicLock; + +/** Offset 0x06DD - Thermal Throttling Custimized T0Level Value + Custimized T0Level value. +**/ + uint16_t PchT0Level; + +/** Offset 0x06DF - Thermal Throttling Custimized T1Level Value + Custimized T1Level value. +**/ + uint16_t PchT1Level; + +/** Offset 0x06E1 - Thermal Throttling Custimized T2Level Value + Custimized T2Level value. +**/ + uint16_t PchT2Level; + +/** Offset 0x06E3 - Enable The Thermal Throttle + Enable the thermal throttle function. + $EN_DIS +**/ + uint8_t PchTTEnable; + +/** Offset 0x06E4 - PMSync State 13 + When set to 1 and the programmed GPIO pin is a 1, then PMSync state 13 will force + at least T2 state. + $EN_DIS +**/ + uint8_t PchTTState13Enable; + +/** Offset 0x06E5 - Thermal Throttle Lock + Thermal Throttle Lock. + $EN_DIS +**/ + uint8_t PchTTLock; + +/** Offset 0x06E6 - Thermal Throttling Suggested Setting + Thermal Throttling Suggested Setting. + $EN_DIS +**/ + uint8_t TTSuggestedSetting; + +/** Offset 0x06E7 - Enable PCH Cross Throttling + Enable/Disable PCH Cross Throttling + $EN_DIS +**/ + uint8_t TTCrossThrottling; + +/** Offset 0x06E8 - DMI Thermal Sensor Autonomous Width Enable + DMI Thermal Sensor Autonomous Width Enable. + $EN_DIS +**/ + uint8_t PchDmiTsawEn; + +/** Offset 0x06E9 - DMI Thermal Sensor Suggested Setting + DMT thermal sensor suggested representative values. + $EN_DIS +**/ + uint8_t DmiSuggestedSetting; + +/** Offset 0x06EA - Thermal Sensor 0 Target Width + Thermal Sensor 0 Target Width. +**/ + uint8_t DmiTS0TW; + +/** Offset 0x06EB - Thermal Sensor 1 Target Width + Thermal Sensor 1 Target Width. +**/ + uint8_t DmiTS1TW; + +/** Offset 0x06EC - Thermal Sensor 2 Target Width + Thermal Sensor 2 Target Width. +**/ + uint8_t DmiTS2TW; + +/** Offset 0x06ED - Thermal Sensor 3 Target Width + Thermal Sensor 3 Target Width. +**/ + uint8_t DmiTS3TW; + +/** Offset 0x06EE - Port 0 T1 Multipler + Port 0 T1 Multipler. +**/ + uint8_t SataP0T1M; + +/** Offset 0x06EF - Port 0 T2 Multipler + Port 0 T2 Multipler. +**/ + uint8_t SataP0T2M; + +/** Offset 0x06F0 - Port 0 T3 Multipler + Port 0 T3 Multipler. +**/ + uint8_t SataP0T3M; + +/** Offset 0x06F1 - Port 0 Tdispatch + Port 0 Tdispatch. +**/ + uint8_t SataP0TDisp; + +/** Offset 0x06F2 - Port 1 T1 Multipler + Port 1 T1 Multipler. +**/ + uint8_t SataP1T1M; + +/** Offset 0x06F3 - Port 1 T2 Multipler + Port 1 T2 Multipler. +**/ + uint8_t SataP1T2M; + +/** Offset 0x06F4 - Port 1 T3 Multipler + Port 1 T3 Multipler. +**/ + uint8_t SataP1T3M; + +/** Offset 0x06F5 - Port 1 Tdispatch + Port 1 Tdispatch. +**/ + uint8_t SataP1TDisp; + +/** Offset 0x06F6 - Port 0 Tinactive + Port 0 Tinactive. +**/ + uint8_t SataP0Tinact; + +/** Offset 0x06F7 - Port 0 Alternate Fast Init Tdispatch + Port 0 Alternate Fast Init Tdispatch. + $EN_DIS +**/ + uint8_t SataP0TDispFinit; + +/** Offset 0x06F8 - Port 1 Tinactive + Port 1 Tinactive. +**/ + uint8_t SataP1Tinact; + +/** Offset 0x06F9 - Port 1 Alternate Fast Init Tdispatch + Port 1 Alternate Fast Init Tdispatch. + $EN_DIS +**/ + uint8_t SataP1TDispFinit; + +/** Offset 0x06FA - Sata Thermal Throttling Suggested Setting + Sata Thermal Throttling Suggested Setting. + $EN_DIS +**/ + uint8_t SataThermalSuggestedSetting; + +/** Offset 0x06FB - Enable Memory Thermal Throttling + Enable Memory Thermal Throttling. + $EN_DIS +**/ + uint8_t PchMemoryThrottlingEnable; + +/** Offset 0x06FC - Memory Thermal Throttling + Enable Memory Thermal Throttling. +**/ + uint8_t PchMemoryPmsyncEnable[2]; + +/** Offset 0x06FE - Enable Memory Thermal Throttling + Enable Memory Thermal Throttling. +**/ + uint8_t PchMemoryC0TransmitEnable[2]; + +/** Offset 0x0700 - Enable Memory Thermal Throttling + Enable Memory Thermal Throttling. +**/ + uint8_t PchMemoryPinSelection[2]; + +/** Offset 0x0702 - Thermal Device Temperature + Decides the temperature. +**/ + uint16_t PchTemperatureHotLevel; + +/** Offset 0x0704 - Disable XHCI Compliance Mode + This policy will disable XHCI compliance mode on all ports. Complicance Mode should + be default enabled. + $EN_DIS +**/ + uint8_t PchDisableComplianceMode; + +/** Offset 0x0705 - USB2 Port Over Current Pin + Describe the specific over current pin number of USB 2.0 Port N. +**/ + uint8_t Usb2OverCurrentPin[16]; + +/** Offset 0x0715 - USB3 Port Over Current Pin + Describe the specific over current pin number of USB 3.0 Port N. +**/ + uint8_t Usb3OverCurrentPin[10]; + +/** Offset 0x071F - Enable 8254 Static Clock Gating in early POST time + Set 8254CGE=1 is required for C11 support. However, set 8254CGE=1 in POST time might + fail to boot legacy OS which using 8254 timer. Make sure it won't break legacy + OS boot before enabling this. + $EN_DIS +**/ + uint8_t Early8254ClockGatingEnable; + +/** Offset 0x0720 +**/ + uint32_t UnusedUpdSpace18; + +/** Offset 0x0724 - Pch PCIE device override table pointer + The PCIe device table is being used to override PCIe device ASPM settings. This + is a pointer points to a 32bit address. And it's only used in PostMem phase. Please + refer to PCH_PCIE_DEVICE_OVERRIDE structure for the table. Last entry VendorId + must be 0. +**/ + uint32_t PchPcieDeviceOverrideTablePtr; + +/** Offset 0x0728 - Enable TCO timer. + When FALSE, it disables PCH ACPI timer, and stops TCO timer. NOTE: This will have + huge power impact when it's enabled. If TCO timer is disabled, uCode ACPI timer + emulation must be enabled, and WDAT table must not be exposed to the OS. + $EN_DIS +**/ + uint8_t EnableTcoTimer; + +/** Offset 0x0729 - BgpdtHash[4] + BgpdtHash values +**/ + uint64_t BgpdtHash[4]; + +/** Offset 0x0749 - BiosGuardAttr + BiosGuardAttr default values +**/ + uint32_t BiosGuardAttr; + +/** Offset 0x074D - BiosGuardModulePtr + BiosGuardModulePtr default values +**/ + uint64_t BiosGuardModulePtr; + +/** Offset 0x0755 - SendEcCmd + SendEcCmd function pointer. \n + @code typedef EFI_STATUS (EFIAPI *PLATFORM_SEND_EC_COMMAND) (IN EC_COMMAND_TYPE + EcCmdType, IN UINT8 EcCmd, IN UINT8 SendData, IN OUT UINT8 *ReceiveData); @endcode +**/ + uint64_t SendEcCmd; + +/** Offset 0x075D - EcCmdProvisionEav + Ephemeral Authorization Value default values. Provisions an ephemeral shared secret to the EC +**/ + uint8_t EcCmdProvisionEav; + +/** Offset 0x075E - EcCmdLock + EcCmdLock default values. Locks Ephemeral Authorization Value sent previously +**/ + uint8_t EcCmdLock; + +/** Offset 0x075F - SgxEpoch0 + SgxEpoch0 default values +**/ + uint64_t SgxEpoch0; + +/** Offset 0x0767 - SgxEpoch1 + SgxEpoch1 default values +**/ + uint64_t SgxEpoch1; + +/** Offset 0x076F - SgxSinitNvsData + SgxSinitNvsData default values +**/ + uint8_t SgxSinitNvsData; + +/** Offset 0x0770 +**/ + uint8_t ReservedFspsUpd[13]; +} __attribute__((packed)); + +/** Fsp S Test Configuration +**/ +struct FSP_S_TEST_CONFIG { + +/** Offset 0x077D +**/ + uint32_t Signature; + +/** Offset 0x0781 - Enable/Disable Device 7 + Enable: Device 7 enabled, Disable (Default): Device 7 disabled + $EN_DIS +**/ + uint8_t ChapDeviceEnable; + +/** Offset 0x0782 - Skip PAM regsiter lock + Enable: PAM register will not be locked by RC, platform code should lock it, Disable(Default): + PAM registers will be locked by RC + $EN_DIS +**/ + uint8_t SkipPamLock; + +/** Offset 0x0783 - EDRAM Test Mode + Enable: PAM register will not be locked by RC, platform code should lock it, Disable(Default): + PAM registers will be locked by RC + 0: EDRAM SW disable, 1: EDRAM SW Enable, 2: EDRAM HW mode +**/ + uint8_t EdramTestMode; + +/** Offset 0x0784 - DMI Extended Sync Control + Enable: Enable DMI Extended Sync Control, Disable(Default): Disable DMI Extended + Sync Control + $EN_DIS +**/ + uint8_t DmiExtSync; + +/** Offset 0x0785 - DMI IOT Control + Enable: Enable DMI IOT Control, Disable(Default): Disable DMI IOT Control + $EN_DIS +**/ + uint8_t DmiIot; + +/** Offset 0x0786 - PEG Max Payload size per root port + 0xFF(Default):Auto, 0x1: Force 128B, 0X2: Force 256B + 0xFF: Auto, 0x1: Force 128B, 0x2: Force 256B +**/ + uint8_t PegMaxPayload[3]; + +/** Offset 0x0789 - Enable/Disable IGFX RenderStandby + Enable(Default): Enable IGFX RenderStandby, Disable: Disable IGFX RenderStandby + $EN_DIS +**/ + uint8_t RenderStandby; + +/** Offset 0x078A - Enable/Disable IGFX PmSupport + Enable(Default): Enable IGFX PmSupport, Disable: Disable IGFX PmSupport + $EN_DIS +**/ + uint8_t PmSupport; + +/** Offset 0x078B - Enable/Disable CdynmaxClamp + Enable(Default): Enable CdynmaxClamp, Disable: Disable CdynmaxClamp + $EN_DIS +**/ + uint8_t CdynmaxClampEnable; + +/** Offset 0x078C - Disable VT-d + 0=Enable/FALSE(VT-d disabled), 1=Disable/TRUE (VT-d enabled) + $EN_DIS +**/ + uint8_t VtdDisable; + +/** Offset 0x078D - GT Frequency Limit + 0xFF: Auto(Default), 6: 300 Mhz, 7: 350 Mhz, 8: 400 Mhz, 9: 450 Mhz, 0xA: 500 Mhz, + 0xB: 550 Mhz, 0xC: 600 Mhz, 0xD: 650 Mhz, 0xE: 700 Mhz, 0xF: 750 Mhz, 0x10: 800 + Mhz, 0x11: 850 Mhz, 0x12:900 Mhz, 0x13: 950 Mhz, 0x14: 1000 Mhz, 0x15: 1050 Mhz, + 0x16: 1100 Mhz, 0x17: 1150 Mhz, 0x18: 1200 Mhz + 0xFF: Auto(Default), 6: 300 Mhz, 7: 350 Mhz, 8: 400 Mhz, 9: 450 Mhz, 0xA: 500 Mhz, + 0xB: 550 Mhz, 0xC: 600 Mhz, 0xD: 650 Mhz, 0xE: 700 Mhz, 0xF: 750 Mhz, 0x10: 800 + Mhz, 0x11: 850 Mhz, 0x12:900 Mhz, 0x13: 950 Mhz, 0x14: 1000 Mhz, 0x15: 1050 Mhz, + 0x16: 1100 Mhz, 0x17: 1150 Mhz, 0x18: 1200 Mhz +**/ + uint8_t GtFreqMax; + +/** Offset 0x078E - SaPostMemTestRsvd + Reserved for SA Post-Mem Test + $EN_DIS +**/ + uint8_t SaPostMemTestRsvd[12]; + +/** Offset 0x079A +**/ + uint16_t UnusedUpdSpace19; + +/** Offset 0x079C - 1-Core Ratio Limit + 1-Core Ratio Limit: For XE part: LFM to 255, For overclocking part: LFM to Fused + 1-Core Ratio Limit + OC Bins.This 1-Core Ratio Limit Must be greater than or equal + to 2-Core Ratio Limit, 3-Core Ratio Limit, 4-Core Ratio Limit. Range is 0 to 83 + 0x0:0xFF +**/ + uint8_t OneCoreRatioLimit; + +/** Offset 0x079D - 2-Core Ratio Limit + 2-Core Ratio Limit: For XE part: LFM to 255, For overclocking part: LFM to Fused + 2-Core Ratio Limit + OC Bins.This 2-Core Ratio Limit Must be Less than or equal + to 1-Core Ratio Limit.Range is 0 to 83 + 0x0:0xFF +**/ + uint8_t TwoCoreRatioLimit; + +/** Offset 0x079E - 3-Core Ratio Limit + 3-Core Ratio Limit: For XE part: LFM to 255, For overclocking part: LFM to Fused + 3-Core Ratio Limit + OC Bins.This 3-Core Ratio Limit Must be Less than or equal + to 1-Core Ratio Limit.Range is 0 to 83 + 0x0:0xFF +**/ + uint8_t ThreeCoreRatioLimit; + +/** Offset 0x079F - 4-Core Ratio Limit + 4-Core Ratio Limit: For XE part: LFM to 255, For overclocking part: LFM to Fused + 4-Core Ratio Limit + OC Bins.This 4-Core Ratio Limit Must be Less than or equal + to 1-Core Ratio Limit.Range is 0 to 83 + 0x0:0xFF +**/ + uint8_t FourCoreRatioLimit; + +/** Offset 0x07A0 +**/ + uint8_t UnusedUpdSpace20; + +/** Offset 0x07A1 - Enable or Disable HWP + Enable or Disable HWP(Hardware P states) Support. 0: Disable; <b>1: Enable;</b> + 2-3:Reserved + $EN_DIS +**/ + uint8_t Hwp; + +/** Offset 0x07A2 - Hardware Duty Cycle Control + Hardware Duty Cycle Control configuration. 0: Disabled; <b>1: Enabled</b> 2-3:Reserved + $EN_DIS +**/ + uint8_t HdcControl; + +/** Offset 0x07A3 - Package Long duration turbo mode time + Package Long duration turbo mode time window in seconds. Valid values(Unit in seconds) + 0 to 8 , 10 , 12 ,14 , 16 , 20 , 24 , 28 , 32 , 40 , 48 , 56 , 64 , 80 , 96 , 112 , 128 + 0x0:0xFF +**/ + uint8_t PowerLimit1Time; + +/** Offset 0x07A4 - Short Duration Turbo Mode + Enable or Disable short duration Turbo Mode. </b>0 : Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t PowerLimit2; + +/** Offset 0x07A5 - Turbo settings Lock + Lock all Turbo settings Enable/Disable; <b>0: Disable , </b> 1: Enable + $EN_DIS +**/ + uint8_t TurboPowerLimitLock; + +/** Offset 0x07A6 - Package PL3 time window + Package PL3 time window range for this policy in milliseconds. Valid values are + 0, 3 to 8, 10, 12, 14, 16, 20 , 24, 28, 32, 40, 48, 55, 56, 64 + 0x0:0xFF +**/ + uint8_t PowerLimit3Time; + +/** Offset 0x07A7 - Package PL3 Duty Cycle + Package PL3 Duty Cycle; Valid Range is 0 to 100 + 0x0:0xFF +**/ + uint8_t PowerLimit3DutyCycle; + +/** Offset 0x07A8 - Package PL3 Lock + Package PL3 Lock Enable/Disable; <b>0: Disable ; <b> 1: Enable + $EN_DIS +**/ + uint8_t PowerLimit3Lock; + +/** Offset 0x07A9 - Package PL4 Lock + Package PL4 Lock Enable/Disable; <b>0: Disable ; <b>1: Enable + $EN_DIS +**/ + uint8_t PowerLimit4Lock; + +/** Offset 0x07AA - TCC Activation Offset + TCC Activation Offset. Offset from factory set TCC activation temperature at which + the Thermal Control Circuit must be activated. TCC will be activated at TCC Activation + Temperature, in volts.For SKL Y SKU, the recommended default for this policy is + <b>10</b>, For all other SKUs the recommended default are <b>0</b> + 0x0:0xFF +**/ + uint8_t TccActivationOffset; + +/** Offset 0x07AB - Tcc Offset Clamp Enable/Disable + Tcc Offset Clamp for Runtime Average Temperature Limit (RATL) allows CPU to throttle + below P1.For SKL Y SKU, the recommended default for this policy is <b>1: Enabled</b>, + For all other SKUs the recommended default are <b>0: Disabled</b>. + $EN_DIS +**/ + uint8_t TccOffsetClamp; + +/** Offset 0x07AC - Tcc Offset Lock + Tcc Offset Lock for Runtime Average Temperature Limit (RATL) to lock temperature + target; <b>0: Disabled</b>; 1: Enabled. + $EN_DIS +**/ + uint8_t TccOffsetLock; + +/** Offset 0x07AD - Custom Ratio State Entries + The number of custom ratio state entries, ranges from 0 to 40 for a valid custom + ratio table.Sets the number of custom P-states. At least 2 states must be present + 0x0:0xFF +**/ + uint8_t NumberOfEntries; + +/** Offset 0x07AE - Custom Short term Power Limit time window + Short term Power Limit time window value for custom CTDP level 1. Valid Range 0 to 128 + 0x0:0xFF +**/ + uint8_t Custom1PowerLimit1Time; + +/** Offset 0x07AF - Custom Turbo Activation Ratio + Turbo Activation Ratio for custom cTDP level 1. Valid Range 0 to 255 + 0x0:0xFF +**/ + uint8_t Custom1TurboActivationRatio; + +/** Offset 0x07B0 - Custom Config Tdp Control + Config Tdp Control (0/1/2) value for custom cTDP level 1. Valid Range is 0 to 2 + 0x0:0xFF +**/ + uint8_t Custom1ConfigTdpControl; + +/** Offset 0x07B1 - Custom Short term Power Limit time window + Short term Power Limit time window value for custom CTDP level 2. Valid Range 0 to 128 + 0x0:0xFF +**/ + uint8_t Custom2PowerLimit1Time; + +/** Offset 0x07B2 - Custom Turbo Activation Ratio + Turbo Activation Ratio for custom cTDP level 2. Valid Range 0 to 255 + 0x0:0xFF +**/ + uint8_t Custom2TurboActivationRatio; + +/** Offset 0x07B3 - Custom Config Tdp Control + Config Tdp Control (0/1/2) value for custom cTDP level 1. Valid Range is 0 to 2 + 0x0:0xFF +**/ + uint8_t Custom2ConfigTdpControl; + +/** Offset 0x07B4 - Custom Short term Power Limit time window + Short term Power Limit time window value for custom CTDP level 3. Valid Range 0 to 128 + 0x0:0xFF +**/ + uint8_t Custom3PowerLimit1Time; + +/** Offset 0x07B5 - Custom Turbo Activation Ratio + Turbo Activation Ratio for custom cTDP level 3. Valid Range 0 to 255 + 0x0:0xFF +**/ + uint8_t Custom3TurboActivationRatio; + +/** Offset 0x07B6 - Custom Config Tdp Control + Config Tdp Control (0/1/2) value for custom cTDP level 1. Valid Range is 0 to 2 + 0x0:0xFF +**/ + uint8_t Custom3ConfigTdpControl; + +/** Offset 0x07B7 - ConfigTdp mode settings Lock + Lock the ConfigTdp mode settings from runtime changes; <b>0: Disable</b>; 1: Enable + $EN_DIS +**/ + uint8_t ConfigTdpLock; + +/** Offset 0x07B8 - Load Configurable TDP SSDT + Configure whether to load Configurable TDP SSDT; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t ConfigTdpBios; + +/** Offset 0x07B9 - PL1 Enable value + PL1 Enable value to limit average platform power. <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t PsysPowerLimit1; + +/** Offset 0x07BA - PL1 timewindow + PL1 timewindow in seconds.Valid values(Unit in seconds) 0 to 8 , 10 , 12 ,14 , 16 + , 20 , 24 , 28 , 32 , 40 , 48 , 56 , 64 , 80 , 96 , 112 , 128 + 0x0:0xFF +**/ + uint8_t PsysPowerLimit1Time; + +/** Offset 0x07BB - PL2 Enable Value + PL2 Enable activates the PL2 value to limit average platform power.<b>0: Disable</b>; + 1: Enable. + $EN_DIS +**/ + uint8_t PsysPowerLimit2; + +/** Offset 0x07BC +**/ + uint16_t UnusedUpdSpace21; + +/** Offset 0x07BE - Enable or Disable MLC Streamer Prefetcher + Enable or Disable MLC Streamer Prefetcher; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t MlcStreamerPrefetcher; + +/** Offset 0x07BF - Enable or Disable MLC Spatial Prefetcher + Enable or Disable MLC Spatial Prefetcher; 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t MlcSpatialPrefetcher; + +/** Offset 0x07C0 - Enable or Disable Monitor /MWAIT instructions + Enable or Disable Monitor /MWAIT instructions; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t MonitorMwaitEnable; + +/** Offset 0x07C1 - Enable or Disable initialization of machine check registers + Enable or Disable initialization of machine check registers; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t MachineCheckEnable; + +/** Offset 0x07C2 - Enable or Disable processor debug features + Enable or Disable processor debug features; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t DebugInterfaceEnable; + +/** Offset 0x07C3 - Lock or Unlock debug interface features + Lock or Unlock debug interface features; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t DebugInterfaceLockEnable; + +/** Offset 0x07C4 - AP Idle Manner of waiting for SIPI + AP Idle Manner of waiting for SIPI; 1: HALT loop; <b>2: MWAIT loop</b>; 3: RUN loop. + 0x0:0xFF +**/ + uint8_t ApIdleManner; + +/** Offset 0x07C5 - Settings for AP Handoff to OS + Settings for AP Handoff to OS; 1: HALT loop; <b>2: MWAIT loop</b>. + 0x0:0xFF +**/ + uint8_t ApHandoffManner; + +/** Offset 0x07C6 +**/ + uint16_t UnusedUpdSpace22; + +/** Offset 0x07C8 - Control on Processor Trace output scheme + Control on Processor Trace output scheme; <b>0: Single Range Output</b>; 1: ToPA Output. + 0x0:0xFF +**/ + uint8_t ProcTraceOutputScheme; + +/** Offset 0x07C9 - Enable or Disable Processor Trace feature + Enable or Disable Processor Trace feature; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t ProcTraceEnable; + +/** Offset 0x07CA - Memory region allocation for Processor Trace + Memory region allocation for Processor Trace, Valid Values are 0 - 4KB , 0x1 - 8KB + , 0x2 - 16KB , 0x3 - 32KB , 0x4 - 64KB , 0x5 - 128KB , 0x6 - 256KB , 0x7 - 512KB + , 0x8 - 1MB , 0x9 - 2MB , 0xA - 4MB , 0xB - 8MB , 0xC - 16MB , 0xD - 32MB , 0xE + - 64MB , 0xF - 128MB , 0xFF: Disable + 0x0:0xFF +**/ + uint8_t ProcTraceMemSize; + +/** Offset 0x07CB +**/ + uint8_t UnusedUpdSpace23; + +/** Offset 0x07CC - Enable or Disable Voltage Optimization feature + Enable or Disable Voltage Optimization feature 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t VoltageOptimization; + +/** Offset 0x07CD - Enable or Disable Intel SpeedStep Technology + Enable or Disable Intel SpeedStep Technology. 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t Eist; + +/** Offset 0x07CE - Enable or Disable Energy Efficient P-state + Enable or Disable Energy Efficient P-state will be applied in Turbo mode. Disable; + <b>1: Enable</b> + $EN_DIS +**/ + uint8_t EnergyEfficientPState; + +/** Offset 0x07CF - Enable or Disable Energy Efficient Turbo + Enable or Disable Energy Efficient Turbo, will be applied in Turbo mode. Disable; + <b>1: Enable</b> + $EN_DIS +**/ + uint8_t EnergyEfficientTurbo; + +/** Offset 0x07D0 - Enable or Disable T states + Enable or Disable T states; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t TStates; + +/** Offset 0x07D1 - Enable or Disable Bi-Directional PROCHOT# + Enable or Disable Bi-Directional PROCHOT#; 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t BiProcHot; + +/** Offset 0x07D2 - Enable or Disable PROCHOT# signal being driven externally + Enable or Disable PROCHOT# signal being driven externally; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t DisableProcHotOut; + +/** Offset 0x07D3 - Enable or Disable PROCHOT# Response + Enable or Disable PROCHOT# Response; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t ProcHotResponse; + +/** Offset 0x07D4 - Enable or Disable VR Thermal Alert + Enable or Disable VR Thermal Alert; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t DisableVrThermalAlert; + +/** Offset 0x07D5 - Enable or Disable Thermal Reporting + Enable or Disable Thermal Reporting through ACPI tables; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t AutoThermalReporting; + +/** Offset 0x07D6 - Enable or Disable Thermal Monitor + Enable or Disable Thermal Monitor; 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t ThermalMonitor; + +/** Offset 0x07D7 - Enable or Disable CPU power states (C-states) + Enable or Disable CPU power states (C-states). 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t Cx; + +/** Offset 0x07D8 - Configure C-State Configuration Lock + Configure C-State Configuration Lock; 0: Disable; <b>1: Enable</b>. + $EN_DIS +**/ + uint8_t PmgCstCfgCtrlLock; + +/** Offset 0x07D9 - Enable or Disable Enhanced C-states + Enable or Disable Enhanced C-states. 0: Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t C1e; + +/** Offset 0x07DA - Enable or Disable Package Cstate Demotion + Enable or Disable Package Cstate Demotion. Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t PkgCStateDemotion; + +/** Offset 0x07DB - Enable or Disable Package Cstate UnDemotion + Enable or Disable Package Cstate UnDemotion. Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t PkgCStateUnDemotion; + +/** Offset 0x07DC - Enable or Disable CState-Pre wake + Enable or Disable CState-Pre wake. Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t CStatePreWake; + +/** Offset 0x07DD - Enable or Disable TimedMwait Support. + Enable or Disable TimedMwait Support. <b>Disable</b>; 1: Enable + $EN_DIS +**/ + uint8_t TimedMwait; + +/** Offset 0x07DE - Enable or Disable IO to MWAIT redirection + Enable or Disable IO to MWAIT redirection; <b>0: Disable</b>; 1: Enable. + $EN_DIS +**/ + uint8_t CstCfgCtrIoMwaitRedirection; + +/** Offset 0x07DF - Set the Max Pkg Cstate + Set the Max Pkg Cstate. Default set to Auto which limits the Max Pkg Cstate to deep + C-state. Valid values 0 - C0/C1 , 1 - C2 , 2 - C3 , 3 - C6 , 4 - C7 , 5 - C7S , + 6 - C8 , 7 - C9 , 8 - C10 , 254 - CPU Default , 255 - Auto + 0x0:0xFF +**/ + uint8_t PkgCStateLimit; + +/** Offset 0x07E0 - TimeUnit for C-State Latency Control0 + TimeUnit for C-State Latency Control0; Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl0TimeUnit; + +/** Offset 0x07E1 - TimeUnit for C-State Latency Control1 + TimeUnit for C-State Latency Control1;Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl1TimeUnit; + +/** Offset 0x07E2 - TimeUnit for C-State Latency Control2 + TimeUnit for C-State Latency Control2;Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl2TimeUnit; + +/** Offset 0x07E3 - TimeUnit for C-State Latency Control3 + TimeUnit for C-State Latency Control3;Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl3TimeUnit; + +/** Offset 0x07E4 - TimeUnit for C-State Latency Control4 + TimeUnit for C-State Latency Control4;Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl4TimeUnit; + +/** Offset 0x07E5 - TimeUnit for C-State Latency Control5 + TimeUnit for C-State Latency Control5;Valid values 0 - 1ns , 1 - 32ns , 2 - 1024ns + , 3 - 32768ns , 4 - 1048576ns , 5 - 33554432ns + 0x0:0xFF +**/ + uint8_t CstateLatencyControl5TimeUnit; + +/** Offset 0x07E6 - Interrupt Redirection Mode Select + Interrupt Redirection Mode Select.0: Fixed priority; 1: Round robin;2: Hash vector;4: + PAIR with fixed priority;5: PAIR with round robin;6: PAIR with hash vector;7: No change. + 0x0:0xFF +**/ + uint8_t PpmIrmSetting; + +/** Offset 0x07E7 - Lock prochot configuration + Lock prochot configuration Enable/Disable; <b>0: Disable</b>; 1: Enable + $EN_DIS +**/ + uint8_t ProcHotLock; + +/** Offset 0x07E8 - Configuration for boot TDP selection + Configuration for boot TDP selection; <b>0: TDP Nominal</b>; 1: TDP Down; 2: TDP + Up;0xFF : Deactivate + 0x0:0xFF +**/ + uint8_t ConfigTdpLevel; + +/** Offset 0x07E9 - Max P-State Ratio + Max P-State Ratio , Valid Range 0 to 0x7F + 0x0:0xFFFF +**/ + uint16_t MaxRatio; + +/** Offset 0x07EB - Maximum P-state ratio to use in the custom P-state table + Maximum P-state ratio to use in the custom P-state table. NumOfCustomPStates has + valid range between 0 to 40. For no. of P-States supported(NumOfCustomPStates) + , StateRatio[NumOfCustomPStates] are configurable. Valid Range of value is 0 to 0x7F +**/ + uint16_t StateRatio[40]; + +/** Offset 0x083B - Platform Power Pmax + PCODE MMIO Mailbox: Platform Power Pmax. <b>0 - Auto</b> Specified in 1/8 Watt increments. + Range 0-1024 Watts. Value of 800 = 100W + 0x0:0xFFFF +**/ + uint16_t PsysPmax; + +/** Offset 0x083D - Interrupt Response Time Limit of C-State LatencyContol0 + Interrupt Response Time Limit of C-State LatencyContol0. Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl0Irtl; + +/** Offset 0x083F - Interrupt Response Time Limit of C-State LatencyContol1 + Interrupt Response Time Limit of C-State LatencyContol1.Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl1Irtl; + +/** Offset 0x0841 - Interrupt Response Time Limit of C-State LatencyContol2 + Interrupt Response Time Limit of C-State LatencyContol2.Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl2Irtl; + +/** Offset 0x0843 - Interrupt Response Time Limit of C-State LatencyContol3 + Interrupt Response Time Limit of C-State LatencyContol3.Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl3Irtl; + +/** Offset 0x0845 - Interrupt Response Time Limit of C-State LatencyContol4 + Interrupt Response Time Limit of C-State LatencyContol4.Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl4Irtl; + +/** Offset 0x0847 - Interrupt Response Time Limit of C-State LatencyContol5 + Interrupt Response Time Limit of C-State LatencyContol5.Range of value 0 to 0x3FF + 0x0:0xFFFF +**/ + uint16_t CstateLatencyControl5Irtl; + +/** Offset 0x0849 - Package Long duration turbo mode power limit + Package Long duration turbo mode power limit. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit. + Valid Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PowerLimit1; + +/** Offset 0x084D - Package Short duration turbo mode power limit + Package Short duration turbo mode power limit. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PowerLimit2Power; + +/** Offset 0x0851 - Package PL3 power limit + Package PL3 power limit. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PowerLimit3; + +/** Offset 0x0855 - Package PL4 power limit + Package PL4 power limit. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PowerLimit4; + +/** Offset 0x0859 - Tcc Offset Time Window for RATL + Package PL4 power limit. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t TccOffsetTimeWindowForRatl; + +/** Offset 0x085D - Short term Power Limit value for custom cTDP level 1 + Short term Power Limit value for custom cTDP level 1. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom1PowerLimit1; + +/** Offset 0x0861 - Long term Power Limit value for custom cTDP level 1 + Long term Power Limit value for custom cTDP level 1. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom1PowerLimit2; + +/** Offset 0x0865 - Short term Power Limit value for custom cTDP level 2 + Short term Power Limit value for custom cTDP level 2. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom2PowerLimit1; + +/** Offset 0x0869 - Long term Power Limit value for custom cTDP level 2 + Long term Power Limit value for custom cTDP level 2. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom2PowerLimit2; + +/** Offset 0x086D - Short term Power Limit value for custom cTDP level 3 + Short term Power Limit value for custom cTDP level 3. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom3PowerLimit1; + +/** Offset 0x0871 - Long term Power Limit value for custom cTDP level 3 + Long term Power Limit value for custom cTDP level 3. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid + Range 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t Custom3PowerLimit2; + +/** Offset 0x0875 - Platform PL1 power + Platform PL1 power. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid Range + 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PsysPowerLimit1Power; + +/** Offset 0x0879 - Platform PL2 power + Platform PL2 power. Units are based on POWER_MGMT_CONFIG.CustomPowerUnit.Valid Range + 0 to 4095875 in Step size of 125 + 0x0:0xFFFFFFFF +**/ + uint32_t PsysPowerLimit2Power; + +/** Offset 0x087D - Race To Halt + Enable/Disable Race To Halt feature. RTH will dynamically increase CPU frequency + in order to enter pkg C-State faster to reduce overall power. (RTH is controlled + through MSR 1FC bit 20)Disable; <b>1: Enable</b> + $EN_DIS +**/ + uint8_t RaceToHalt; + +/** Offset 0x087E - ReservedCpuPostMemTest + Reserved for CPU Post-Mem Test + $EN_DIS +**/ + uint8_t ReservedCpuPostMemTest[12]; + +/** Offset 0x088A - SgxSinitDataFromTpm + SgxSinitDataFromTpm default values +**/ + uint8_t SgxSinitDataFromTpm; + +/** Offset 0x088B - End of Post message + Test, Send End of Post message. Disable(0x0): Disable EOP message, Send in PEI(0x1): + EOP send in PEI, Send in DXE(0x2)(Default): EOP send in DXE + 0:Disable, 1:Send in PEI, 2:Send in DXE, 3:Reserved +**/ + uint8_t EndOfPostMessage; + +/** Offset 0x088C - D0I3 Setting for HECI Disable + Test, 0: disable, 1: enable, Setting this option disables setting D0I3 bit for all + HECI devices + $EN_DIS +**/ + uint8_t DisableD0I3SettingForHeci; + +/** Offset 0x088D - HD Audio Reset Wait Timer + The delay timer after Azalia reset, the value is number of microseconds. Default is 600. +**/ + uint16_t PchHdaResetWaitTimer; + +/** Offset 0x088F - Enable LOCKDOWN SMI + Enable SMI_LOCK bit to prevent writes to the Global SMI Enable bit. + $EN_DIS +**/ + uint8_t PchLockDownGlobalSmi; + +/** Offset 0x0890 - Enable LOCKDOWN BIOS Interface + Enable BIOS Interface Lock Down bit to prevent writes to the Backup Control Register. + $EN_DIS +**/ + uint8_t PchLockDownBiosInterface; + +/** Offset 0x0891 - RTC CMOS RAM LOCK + Enable RTC lower and upper 128 byte Lock bits to lock Bytes 38h-3Fh in the upper + and and lower 128-byte bank of RTC RAM. + $EN_DIS +**/ + uint8_t PchLockDownRtcLock; + +/** Offset 0x0892 - PCH Sbi lock bit + This unlock the SBI lock bit to allow SBI after post time. 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchSbiUnlock; + +/** Offset 0x0893 - PCH Psf lock bit + The PSF registers will be locked before 3rd party code execution. 0: Disable; 1: Enable. + $EN_DIS +**/ + uint8_t PchSbAccessUnlock; + +/** Offset 0x0894 - PCIE RP Ltr Max Snoop Latency + Latency Tolerance Reporting, Max Snoop Latency. +**/ + uint16_t PcieRpLtrMaxSnoopLatency[24]; + +/** Offset 0x08C4 - PCIE RP Ltr Max No Snoop Latency + Latency Tolerance Reporting, Max Non-Snoop Latency. +**/ + uint16_t PcieRpLtrMaxNoSnoopLatency[24]; + +/** Offset 0x08F4 - PCIE RP Snoop Latency Override Mode + Latency Tolerance Reporting, Snoop Latency Override Mode. +**/ + uint8_t PcieRpSnoopLatencyOverrideMode[24]; + +/** Offset 0x090C - PCIE RP Snoop Latency Override Multiplier + Latency Tolerance Reporting, Snoop Latency Override Multiplier. +**/ + uint8_t PcieRpSnoopLatencyOverrideMultiplier[24]; + +/** Offset 0x0924 - PCIE RP Snoop Latency Override Value + Latency Tolerance Reporting, Snoop Latency Override Value. +**/ + uint16_t PcieRpSnoopLatencyOverrideValue[24]; + +/** Offset 0x0954 - PCIE RP Non Snoop Latency Override Mode + Latency Tolerance Reporting, Non-Snoop Latency Override Mode. +**/ + uint8_t PcieRpNonSnoopLatencyOverrideMode[24]; + +/** Offset 0x096C - PCIE RP Non Snoop Latency Override Multiplier + Latency Tolerance Reporting, Non-Snoop Latency Override Multiplier. +**/ + uint8_t PcieRpNonSnoopLatencyOverrideMultiplier[24]; + +/** Offset 0x0984 - PCIE RP Non Snoop Latency Override Value + Latency Tolerance Reporting, Non-Snoop Latency Override Value. +**/ + uint16_t PcieRpNonSnoopLatencyOverrideValue[24]; + +/** Offset 0x09B4 - PCIE RP Slot Power Limit Scale + Specifies scale used for slot power limit value. Leave as 0 to set to default. +**/ + uint8_t PcieRpSlotPowerLimitScale[24]; + +/** Offset 0x09CC - PCIE RP Slot Power Limit Value + Specifies upper limit on power supplie by slot. Leave as 0 to set to default. +**/ + uint16_t PcieRpSlotPowerLimitValue[24]; + +/** Offset 0x09FC - PCIE RP Upstream Port Transmiter Preset + Used during Gen3 Link Equalization. Used for all lanes. Default is 5. +**/ + uint8_t PcieRpUptp[24]; + +/** Offset 0x0A14 - PCIE RP Downstream Port Transmiter Preset + Used during Gen3 Link Equalization. Used for all lanes. Default is 7. +**/ + uint8_t PcieRpDptp[24]; + +/** Offset 0x0A2C - PCIE RP Enable Port8xh Decode + This member describes whether PCIE root port Port 8xh Decode is enabled. 0: Disable; + 1: Enable. + $EN_DIS +**/ + uint8_t PcieEnablePort8xhDecode; + +/** Offset 0x0A2D - PCIE Port8xh Decode Port Index + The Index of PCIe Port that is selected for Port8xh Decode (0 Based). +**/ + uint8_t PchPciePort8xhDecodePortIndex; + +/** Offset 0x0A2E - PCH Pm Disable Energy Report + Disable/Enable PCH to CPU enery report feature. + $EN_DIS +**/ + uint8_t PchPmDisableEnergyReport; + +/** Offset 0x0A2F - PCH Pm Pmc Read Disable + When set to true, this bit disallows host reads to PMC XRAM. + $EN_DIS +**/ + uint8_t PchPmPmcReadDisable; + +/** Offset 0x0A30 - PCH Sata Test Mode + Allow entrance to the PCH SATA test modes. + $EN_DIS +**/ + uint8_t SataTestMode; + +/** Offset 0x0A31 +**/ + uint8_t ReservedFspsTestUpd[15]; +} __attribute__((packed)); + +/** Fsp S UPD Configuration +**/ +struct FSPS_UPD { + +/** Offset 0x0000 +**/ + struct FSP_UPD_HEADER FspUpdHeader; + +/** Offset 0x0020 +**/ + struct FSP_S_CONFIG FspsConfig; + +/** Offset 0x077D +**/ + struct FSP_S_TEST_CONFIG FspsTestConfig; + +/** Offset 0x0A40 +**/ + uint8_t UnusedUpdSpace24[474]; + +/** Offset 0x0C1A +**/ + uint16_t UpdTerminator; +} __attribute__((packed)); + +#endif |