/** @file
|
|
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
#ifndef __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__
|
#define __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__
|
|
|
#include <UncoreCommonIncludes.h>
|
#include "SocketConfiguration.h"
|
|
extern EFI_GUID gEfiSocketPowermanagementVarGuid;
|
#define SOCKET_POWERMANAGEMENT_CONFIGURATION_NAME L"SocketPowerManagementConfig"
|
|
#define NUM_CST_LAT_MSR 3
|
|
#pragma pack(1)
|
|
typedef struct {
|
UINT8 LOT26UnusedVrPowerDownEnable;
|
UINT8 WFRWAEnable;
|
UINT8 UFSDisable; // Allow Mailbox Command to PCU_MISC_CONFIG Bit[28]
|
UINT8 ProcessorEistEnable; // EIST or GV3 setup option
|
|
// Config TDP
|
UINT8 ConfigTDP;
|
UINT8 ConfigTDPLevel;
|
|
// Individual controls for ACPI sleep states
|
// ** These can be overridden by AcpiSleepState because these knobs are not available to CRB **
|
//
|
UINT8 AcpiS3Enable;
|
UINT8 AcpiS4Enable;
|
|
//
|
//HWPM starts
|
//
|
UINT8 ProcessorHWPMEnable;
|
UINT8 ProcessorAutonomousCstateEnable;
|
UINT8 ProcessorHWPMInterrupt;
|
UINT8 ProcessorEPPEnable;
|
UINT8 ProcessorEppProfile;
|
UINT8 ProcessorAPSrocketing;
|
UINT8 ProcessorScalability;
|
UINT8 ProcessorRaplPrioritization;
|
UINT8 ProcessorOutofBandAlternateEPB;
|
//
|
//HWPM ends
|
//
|
UINT8 PStateDomain; // P State Domain
|
UINT8 ProcessorEistPsdFunc; // EIST/PSD Function select option
|
UINT8 ProcessorSinglePCTLEn; // PCPS - SINGLE_PCTL select option
|
UINT8 ProcessorSPD; // PCPS - SPD select option
|
UINT8 BootPState; // Boot Performance Mode
|
|
//
|
// Prioritized Base Frequency
|
//
|
UINT8 ProcessorActivePbf; // PBF
|
UINT8 ProcessorConfigurePbf; // PBF High Priority Cores
|
|
//
|
// Processor Control
|
//
|
UINT8 TurboMode;
|
UINT8 EnableXe;
|
|
//OverClocking
|
UINT8 OverclockingLock;
|
|
UINT8 TurboRatioLimitRatio[8];
|
UINT8 TurboRatioLimitCores[8];
|
|
UINT8 C2C3TT;
|
UINT8 DynamicL1; // Enabling Dynamic L1
|
UINT8 ProcessorCcxEnable; // Enabling CPU C states of processor
|
UINT8 PackageCState; // Package C-State Limit
|
UINT8 C3Enable; // Enable/Disable NHM C3(ACPI C2) report to OS
|
UINT8 C6Enable; // Enable/Disable NHM C6(ACPI C3) report to OS
|
UINT8 ProcessorC1eEnable; // Enabling C1E state of processor
|
UINT8 OSCx; // ACPI C States
|
|
UINT8 CStateLatencyCtrlValid[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Valid
|
UINT8 CStateLatencyCtrlMultiplier[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Multiplier
|
UINT16 CStateLatencyCtrlValue[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Value
|
|
UINT8 TStateEnable; // T states enable?
|
UINT8 OnDieThermalThrottling; // Throtte ratio
|
UINT8 ProchotLock;
|
UINT8 EnableProcHot;
|
UINT8 EnableThermalMonitor;
|
UINT8 ProchotResponse;
|
UINT8 EETurboDisable;
|
UINT8 SapmctlValCtl;
|
UINT8 PwrPerfTuning;
|
UINT8 AltEngPerfBIAS;
|
UINT8 PwrPerfSwitch;
|
UINT8 WorkLdConfig;
|
UINT16 EngAvgTimeWdw1;
|
|
UINT8 ProchotResponseRatio;
|
UINT8 TCCActivationOffset;
|
|
UINT8 P0TtlTimeLow1;
|
UINT8 P0TtlTimeHigh1;
|
|
UINT8 PkgCLatNeg;
|
UINT8 LTRSwInput;
|
UINT8 SAPMControl;
|
UINT8 CurrentConfig;
|
UINT8 PriPlnCurCfgValCtl;
|
UINT8 Psi3Code;
|
UINT16 CurrentLimit;
|
|
UINT8 Psi3Thshld;
|
UINT8 Psi2Code;
|
UINT8 Psi2Thshld;
|
UINT8 Psi1Code;
|
UINT8 Psi1Thshld;
|
|
//Power Management Setup options
|
UINT8 PkgCstEntryValCtl;
|
|
// PRIMARY_PLANE_CURRENT_CONFIG_CONTROL 0x601
|
UINT8 PpcccLock;
|
|
UINT8 SnpLatVld;
|
UINT8 SnpLatOvrd;
|
UINT8 SnpLatMult;
|
UINT16 SnpLatVal;
|
UINT16 NonSnpLatVld;
|
UINT8 NonSnpLatOvrd;
|
UINT8 NonSnpLatMult;
|
UINT16 NonSnpLatVal;
|
|
// DYNAMIC_PERF_POWER_CTL (CSR 1:30:2:0x64)
|
UINT8 EepLOverride;
|
UINT8 EepLOverrideEn;
|
UINT8 ITurboOvrdEn;
|
UINT8 CstDemotOvrdEN;
|
UINT8 TrboDemotOvrdEn;
|
UINT8 UncrPerfPlmtOvrdEn;
|
UINT8 EetOverrideEn;
|
UINT8 IoBwPlmtOvrdEn;
|
UINT8 ImcApmOvrdEn; // unused
|
UINT8 IomApmOvrdEn;
|
UINT8 QpiApmOvrdEn;
|
UINT8 PerfPLmtThshld;
|
|
// SAPMCTL_CFG (CSR 1:30:1:0xB0)
|
UINT8 Iio0PkgcClkGateDis[MAX_SOCKET]; //Bit[0]
|
UINT8 Iio1PkgcClkGateDis[MAX_SOCKET]; //Bit[1]
|
UINT8 Iio2PkgcClkGateDis[MAX_SOCKET]; //Bit[2]
|
UINT8 Kti01PkgcClkGateDis[MAX_SOCKET]; //Bit[3]
|
UINT8 Kti23PkgcClkGateDis[MAX_SOCKET]; //Bit[4]
|
UINT8 P0pllOffEna[MAX_SOCKET]; //Bit[16]
|
UINT8 P1pllOffEna[MAX_SOCKET]; //Bit[17]
|
UINT8 P2pllOffEna[MAX_SOCKET]; //Bit[18]
|
UINT8 Mc0pllOffEna[MAX_SOCKET]; //Bit[22]
|
UINT8 Mc1pllOffEna[MAX_SOCKET]; //Bit[23]
|
UINT8 Mc0PkgcClkGateDis[MAX_SOCKET]; //Bit[6]
|
UINT8 Mc1PkgcClkGateDis[MAX_SOCKET]; //Bit[7]
|
UINT8 Kti01pllOffEna[MAX_SOCKET]; //Bit[19]
|
UINT8 Kti23pllOffEna[MAX_SOCKET]; //Bit[20]
|
UINT8 SetvidDecayDisable[MAX_SOCKET]; //Bit[30];
|
UINT8 SapmCtlLock[MAX_SOCKET]; //Bit[31];
|
|
// PERF_P_LIMIT_CONTROL (CSR 1:30:2:0xe4)
|
UINT8 PerfPLimitClip;
|
UINT8 PerfPLimitEn;
|
|
// PERF_P_LIMIT_CONTROL (CSR 1:30:2:0xe4) >= HSX C stepping
|
UINT8 PerfPlimitDifferential;
|
UINT8 PerfPLimitClipC;
|
|
// SKX: PKG_CST_ENTRY_CRITERIA_MASK2 (CSR 1:30:2:0x90)
|
UINT8 Kti0In[MAX_SOCKET];
|
UINT8 Kti1In[MAX_SOCKET];
|
UINT8 Kti2In[MAX_SOCKET];
|
|
// SKX: PKG_CST_ENTRY_CRITERIA_MASK (CSR 1:30:2:0x8c)
|
UINT8 PcieIio0In[MAX_SOCKET];
|
UINT8 PcieIio1In[MAX_SOCKET];
|
UINT8 PcieIio2In[MAX_SOCKET];
|
UINT8 PcieIio3In[MAX_SOCKET];
|
UINT8 PcieIio4In[MAX_SOCKET];
|
UINT8 PcieIio5In[MAX_SOCKET];
|
|
UINT8 FastRaplDutyCycle;
|
UINT8 TurboPowerLimitLock;
|
UINT8 TurboPowerLimitCsrLock;
|
UINT8 PowerLimit1En;
|
UINT32 PowerLimit1Power;
|
UINT8 PowerLimit1Time;
|
UINT8 PkgClmpLim1;
|
UINT8 PowerLimit2En;
|
UINT32 PowerLimit2Power;
|
UINT8 PkgClmpLim2;
|
UINT8 PowerLimit2Time;
|
|
UINT8 UsePmaxOffsetTable;
|
UINT8 PmaxSign;
|
UINT8 PmaxOffset;
|
|
//XTU 3.0
|
|
UINT8 MaxEfficiencyRatio[MAX_SOCKET];
|
UINT8 MaxNonTurboRatio[MAX_SOCKET];
|
|
// use SPT workarounds - B2P cmd MISC_WORKAROUND_ENABLE
|
UINT8 SPTWorkaround;
|
UINT8 VccSAandVccIOdisable;
|
|
UINT8 AvxIccpLevel;
|
UINT8 IntelSpeedSelectSupport; // Intel Speed Select (ISS)
|
|
} SOCKET_POWERMANAGEMENT_CONFIGURATION;
|
#pragma pack()
|
|
#endif
|