mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-23 11:35:19 +01:00
Continuing refactoring SETTINGS_DATA.
This commit is contained in:
parent
60e9707d0e
commit
d33d0479fa
@ -58,14 +58,18 @@
|
|||||||
</CommandLineArgument>
|
</CommandLineArgument>
|
||||||
<CommandLineArgument
|
<CommandLineArgument
|
||||||
argument = "-e UEFI_APPLICATION"
|
argument = "-e UEFI_APPLICATION"
|
||||||
isEnabled = "YES">
|
isEnabled = "NO">
|
||||||
</CommandLineArgument>
|
</CommandLineArgument>
|
||||||
<CommandLineArgument
|
<CommandLineArgument
|
||||||
argument = "-o CloverX64.efi"
|
argument = "-o CloverX64.efi"
|
||||||
isEnabled = "YES">
|
isEnabled = "NO">
|
||||||
</CommandLineArgument>
|
</CommandLineArgument>
|
||||||
<CommandLineArgument
|
<CommandLineArgument
|
||||||
argument = "CloverX64.dll"
|
argument = "CloverX64.dll"
|
||||||
|
isEnabled = "NO">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "-e DXE_DRIVER -o /JiefLand/5.Devel/Clover/Clover-projects/Clover--CloverHackyColor--master.3/Build/Clover/DEBUG_GCC53/X64/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe/OUTPUT/HiiDatabase.efi /JiefLand/5.Devel/Clover/Clover-projects/Clover--CloverHackyColor--master.3/Build/Clover/DEBUG_GCC53/X64/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe/DEBUG/HiiDatabase.dll"
|
||||||
isEnabled = "YES">
|
isEnabled = "YES">
|
||||||
</CommandLineArgument>
|
</CommandLineArgument>
|
||||||
</CommandLineArguments>
|
</CommandLineArguments>
|
||||||
|
@ -356,6 +356,7 @@
|
|||||||
9A36E52524F3BB6B007A1107 /* FloatLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatLib.h; sourceTree = "<group>"; };
|
9A36E52524F3BB6B007A1107 /* FloatLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatLib.h; sourceTree = "<group>"; };
|
||||||
9A36E53A24F3EDED007A1107 /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; };
|
9A36E53A24F3EDED007A1107 /* base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = "<group>"; };
|
||||||
9A36E53B24F3EDED007A1107 /* base64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = base64.cpp; sourceTree = "<group>"; };
|
9A36E53B24F3EDED007A1107 /* base64.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = base64.cpp; sourceTree = "<group>"; };
|
||||||
|
9A4147662604F82900440186 /* undefinable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = undefinable.h; sourceTree = "<group>"; };
|
||||||
9A4185BE2439F73A00BEAFB8 /* XStringArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XStringArray.cpp; sourceTree = "<group>"; };
|
9A4185BE2439F73A00BEAFB8 /* XStringArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XStringArray.cpp; sourceTree = "<group>"; };
|
||||||
9A4185BF2439F73A00BEAFB8 /* XStringArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XStringArray.h; sourceTree = "<group>"; };
|
9A4185BF2439F73A00BEAFB8 /* XStringArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XStringArray.h; sourceTree = "<group>"; };
|
||||||
9A4C5762255AAC0A004F0B21 /* XToolsConf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XToolsConf.h; sourceTree = "<group>"; };
|
9A4C5762255AAC0A004F0B21 /* XToolsConf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XToolsConf.h; sourceTree = "<group>"; };
|
||||||
@ -5433,6 +5434,7 @@
|
|||||||
9A358B3625CF117A00A3850D /* cpp_lib */ = {
|
9A358B3625CF117A00A3850D /* cpp_lib */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9A4147662604F82900440186 /* undefinable.h */,
|
||||||
9A358B3725CF117A00A3850D /* XmlLiteParser.h */,
|
9A358B3725CF117A00A3850D /* XmlLiteParser.h */,
|
||||||
9A358B3825CF117A00A3850D /* xmlLiteSimpleTypes.h */,
|
9A358B3825CF117A00A3850D /* xmlLiteSimpleTypes.h */,
|
||||||
9A358B3925CF117A00A3850D /* XmlLiteCompositeTypes.cpp */,
|
9A358B3925CF117A00A3850D /* XmlLiteCompositeTypes.cpp */,
|
||||||
|
@ -45,7 +45,8 @@
|
|||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
disableMainThreadChecker = "YES"
|
disableMainThreadChecker = "YES"
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "YES"
|
||||||
|
customWorkingDirectory = "$PROJECT_DIR"
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
debugDocumentVersioning = "YES"
|
debugDocumentVersioning = "YES"
|
||||||
migratedStopOnEveryIssue = "YES"
|
migratedStopOnEveryIssue = "YES"
|
||||||
|
1042
Xcode/CloverX64TestNewParser/config-test1.plist
Normal file
1042
Xcode/CloverX64TestNewParser/config-test1.plist
Normal file
File diff suppressed because it is too large
Load Diff
@ -22,8 +22,44 @@
|
|||||||
|
|
||||||
int test1()
|
int test1()
|
||||||
{
|
{
|
||||||
|
char *source = NULL;
|
||||||
|
size_t newLen = 0;
|
||||||
|
FILE *fp = fopen("config-test1.plist", "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
fputs("Error fopen config plist", stderr);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
/* Go to the end of the file. */
|
||||||
|
if (fseek(fp, 0L, SEEK_END) == 0) {
|
||||||
|
/* Get the size of the file. */
|
||||||
|
long bufsize = ftell(fp);
|
||||||
|
if (bufsize == -1) {
|
||||||
|
fputs("Error ftell config plist", stderr);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate our buffer to that size. */
|
||||||
|
source = (char*)malloc(sizeof(char) * (bufsize + 1));
|
||||||
|
|
||||||
|
/* Go back to the start of the file. */
|
||||||
|
if (fseek(fp, 0L, SEEK_SET) != 0) {
|
||||||
|
fputs("Error fseek config plist", stderr);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read the entire file into memory. */
|
||||||
|
newLen = fread(source, sizeof(char), bufsize, fp);
|
||||||
|
if ( ferror( fp ) != 0 ) {
|
||||||
|
fputs("Error reading config plist", stderr);
|
||||||
|
exit(-1);
|
||||||
|
} else {
|
||||||
|
source[newLen++] = '\0'; /* Just to be safe. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
TagDict* dict = NULL;
|
TagDict* dict = NULL;
|
||||||
EFI_STATUS Status = ParseXML(configSample1, &dict, (UINT32)strlen(configSample1));
|
EFI_STATUS Status = ParseXML(source, &dict, (UINT32)newLen);
|
||||||
printf("ParseXML returns %s\n", efiStrError(Status));
|
printf("ParseXML returns %s\n", efiStrError(Status));
|
||||||
if ( EFI_ERROR(Status) ) {
|
if ( EFI_ERROR(Status) ) {
|
||||||
return Status;
|
return Status;
|
||||||
@ -42,19 +78,23 @@ int test1()
|
|||||||
ConfigPlist configPlist;
|
ConfigPlist configPlist;
|
||||||
|
|
||||||
XmlLiteParser xmlLiteParser;
|
XmlLiteParser xmlLiteParser;
|
||||||
xmlLiteParser.init(configSample1, strlen(configSample1));
|
xmlLiteParser.init(source, newLen);
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
printf("=== [ Parse ] ====================\n");
|
||||||
b = configPlist.parse(&xmlLiteParser, LString8(""));
|
b = configPlist.parse(&xmlLiteParser, LString8(""));
|
||||||
// for ( size_t idx = 0 ; idx < xmlLiteParser.getErrorsAndWarnings().size() ; idx++ ) {
|
for ( size_t idx = 0 ; idx < xmlLiteParser.getErrorsAndWarnings().size() ; idx++ ) {
|
||||||
// const XmlParserMessage& xmlMsg = xmlLiteParser.getErrorsAndWarnings()[idx];
|
const XmlParserMessage& xmlMsg = xmlLiteParser.getErrorsAndWarnings()[idx];
|
||||||
// printf("%s: %s\n", xmlMsg.isError ? "Error" : "Warning", xmlMsg.msg.c_str());
|
printf("%s: %s\n", xmlMsg.isError ? "Error" : "Warning", xmlMsg.msg.c_str());
|
||||||
// }
|
}
|
||||||
if ( b ) {
|
if ( b ) {
|
||||||
if ( xmlLiteParser.getErrorsAndWarnings().size() == 0 ) {
|
if ( xmlLiteParser.getErrorsAndWarnings().size() == 0 ) {
|
||||||
printf("Your plist looks so wonderful. Well done!\n");
|
printf("Your plist looks so wonderful. Well done!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
printf("=== [ CompareEarlyUserSettingsWithConfigPlist ] ====================\n");
|
||||||
return CompareEarlyUserSettingsWithConfigPlist(settings, configPlist) ? 0 : -1;
|
return CompareEarlyUserSettingsWithConfigPlist(settings, configPlist) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1867,17 +1867,17 @@ EFI_STATUS PatchACPI(IN REFIT_VOLUME *Volume, const MacOsVersion& OSVersion)
|
|||||||
} else {
|
} else {
|
||||||
newFadt->PreferredPmProfile = gMobile?2:1; //as calculated before
|
newFadt->PreferredPmProfile = gMobile?2:1; //as calculated before
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC6 || gSettings.ACPI.SSDT.EnableISS) {
|
if (GlobalConfig.EnableC6 || gSettings.ACPI.SSDT.EnableISS) {
|
||||||
newFadt->CstCnt = 0x85; //as in Mac
|
newFadt->CstCnt = 0x85; //as in Mac
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC2) newFadt->PLvl2Lat = 0x65;
|
if (GlobalConfig.EnableC2) newFadt->PLvl2Lat = 0x65;
|
||||||
if (gSettings.ACPI.SSDT.C3Latency > 0) {
|
if (GlobalConfig.C3Latency > 0) {
|
||||||
newFadt->PLvl3Lat = gSettings.ACPI.SSDT.C3Latency;
|
newFadt->PLvl3Lat = GlobalConfig.C3Latency;
|
||||||
} else if (gSettings.ACPI.SSDT.EnableC4) {
|
} else if (GlobalConfig.EnableC4) {
|
||||||
newFadt->PLvl3Lat = 0x3E9;
|
newFadt->PLvl3Lat = 0x3E9;
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.C3Latency == 0) {
|
if (GlobalConfig.C3Latency == 0) {
|
||||||
gSettings.ACPI.SSDT.C3Latency = newFadt->PLvl3Lat;
|
GlobalConfig.C3Latency = newFadt->PLvl3Lat;
|
||||||
}
|
}
|
||||||
|
|
||||||
newFadt->IaPcBootArch = 0x3;
|
newFadt->IaPcBootArch = 0x3;
|
||||||
|
@ -469,7 +469,7 @@ SetupDataForOSX(BOOLEAN Hibernate)
|
|||||||
FrontSideBus = 100 * Mega;
|
FrontSideBus = 100 * Mega;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSettings.QEMU) {
|
if (gSettings.CPU.QEMU) {
|
||||||
FrontSideBus = gCPUStructure.TSCFrequency;
|
FrontSideBus = gCPUStructure.TSCFrequency;
|
||||||
switch (gCPUStructure.Model) {
|
switch (gCPUStructure.Model) {
|
||||||
case CPU_MODEL_DOTHAN:
|
case CPU_MODEL_DOTHAN:
|
||||||
@ -485,10 +485,10 @@ SetupDataForOSX(BOOLEAN Hibernate)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save values into gSettings for the genconfig aim
|
// Save values into gSettings for the genconfig aim
|
||||||
gSettings.BusSpeed = (UINT32)DivU64x32(FrontSideBus, Kilo);
|
gSettings.CPU.BusSpeed = (UINT32)DivU64x32(FrontSideBus, Kilo);
|
||||||
|
|
||||||
CpuSpeed = gCPUStructure.CPUFrequency;
|
CpuSpeed = gCPUStructure.CPUFrequency;
|
||||||
gSettings.CpuFreqMHz = (UINT32)DivU64x32(CpuSpeed, Mega);
|
gSettings.CPU.CpuFreqMHz = (UINT32)DivU64x32(CpuSpeed, Mega);
|
||||||
|
|
||||||
// Locate DataHub Protocol
|
// Locate DataHub Protocol
|
||||||
Status = gBS->LocateProtocol(&gEfiDataHubProtocolGuid, NULL, (void**)&gDataHub);
|
Status = gBS->LocateProtocol(&gEfiDataHubProtocolGuid, NULL, (void**)&gDataHub);
|
||||||
@ -501,7 +501,7 @@ SetupDataForOSX(BOOLEAN Hibernate)
|
|||||||
|
|
||||||
LogDataHub(&gEfiProcessorSubClassGuid, L"FSBFrequency", &FrontSideBus, sizeof(UINT64));
|
LogDataHub(&gEfiProcessorSubClassGuid, L"FSBFrequency", &FrontSideBus, sizeof(UINT64));
|
||||||
|
|
||||||
if (gCPUStructure.ARTFrequency && gSettings.UseARTFreq) {
|
if (gCPUStructure.ARTFrequency && gSettings.CPU.UseARTFreq) {
|
||||||
ARTFrequency = gCPUStructure.ARTFrequency;
|
ARTFrequency = gCPUStructure.ARTFrequency;
|
||||||
LogDataHub(&gEfiProcessorSubClassGuid, L"ARTFrequency", &ARTFrequency, sizeof(UINT64));
|
LogDataHub(&gEfiProcessorSubClassGuid, L"ARTFrequency", &ARTFrequency, sizeof(UINT64));
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ Headers collection for procedures
|
|||||||
#include "../cpp_foundation/XArray.h"
|
#include "../cpp_foundation/XArray.h"
|
||||||
#include "../cpp_foundation/XObjArray.h"
|
#include "../cpp_foundation/XObjArray.h"
|
||||||
#include "../cpp_util/remove_ref.h"
|
#include "../cpp_util/remove_ref.h"
|
||||||
|
#include "../cpp_lib/undefinable.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../include/OneLinerMacros.h"
|
#include "../include/OneLinerMacros.h"
|
||||||
|
@ -3781,25 +3781,25 @@ static void getACPISettings(const TagDict *CfgDict, SETTINGS_DATA& gSettings)
|
|||||||
|
|
||||||
Prop = SSDTDict->propertyForKey("EnableC6");
|
Prop = SSDTDict->propertyForKey("EnableC6");
|
||||||
if (Prop) {
|
if (Prop) {
|
||||||
gSettings.ACPI.SSDT.EnableC6 = IsPropertyNotNullAndTrue(Prop);
|
gSettings.ACPI.SSDT._EnableC6 = IsPropertyNotNullAndTrue(Prop);
|
||||||
DBG("EnableC6: %s\n", gSettings.ACPI.SSDT.EnableC6 ? "yes" : "no");
|
DBG("EnableC6: %s\n", gSettings.ACPI.SSDT._EnableC6 ? "yes" : "no");
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = SSDTDict->propertyForKey("EnableC4");
|
Prop = SSDTDict->propertyForKey("EnableC4");
|
||||||
if (Prop) {
|
if (Prop) {
|
||||||
gSettings.ACPI.SSDT.EnableC4 = IsPropertyNotNullAndTrue(Prop);
|
gSettings.ACPI.SSDT._EnableC4 = IsPropertyNotNullAndTrue(Prop);
|
||||||
DBG("EnableC4: %s\n", gSettings.ACPI.SSDT.EnableC4 ? "yes" : "no");
|
DBG("EnableC4: %s\n", gSettings.ACPI.SSDT._EnableC4 ? "yes" : "no");
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = SSDTDict->propertyForKey("EnableC2");
|
Prop = SSDTDict->propertyForKey("EnableC2");
|
||||||
if (Prop) {
|
if (Prop) {
|
||||||
gSettings.ACPI.SSDT.EnableC2 = IsPropertyNotNullAndTrue(Prop);
|
gSettings.ACPI.SSDT._EnableC2 = IsPropertyNotNullAndTrue(Prop);
|
||||||
DBG("EnableC2: %s\n", gSettings.ACPI.SSDT.EnableC2 ? "yes" : "no");
|
DBG("EnableC2: %s\n", gSettings.ACPI.SSDT._EnableC2 ? "yes" : "no");
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = SSDTDict->propertyForKey("C3Latency");
|
Prop = SSDTDict->propertyForKey("C3Latency");
|
||||||
gSettings.ACPI.SSDT.C3Latency = (UINT16)GetPropertyAsInteger(Prop, gSettings.ACPI.SSDT.C3Latency);
|
gSettings.ACPI.SSDT._C3Latency = (UINT16)GetPropertyAsInteger(Prop, gSettings.ACPI.SSDT._C3Latency);
|
||||||
DBG("C3Latency: %d\n", gSettings.ACPI.SSDT.C3Latency);
|
DBG("C3Latency: %d\n", gSettings.ACPI.SSDT._C3Latency);
|
||||||
|
|
||||||
Prop = SSDTDict->propertyForKey("PLimitDict");
|
Prop = SSDTDict->propertyForKey("PLimitDict");
|
||||||
gSettings.ACPI.SSDT.PLimitDict = (UINT8)GetPropertyAsInteger(Prop, 0);
|
gSettings.ACPI.SSDT.PLimitDict = (UINT8)GetPropertyAsInteger(Prop, 0);
|
||||||
@ -4821,93 +4821,98 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//CPU
|
//CPU
|
||||||
gSettings.CpuType = GetAdvancedCpuType(); //let it be default
|
gSettings.CPU.CpuType = GetAdvancedCpuType(); //let it be default
|
||||||
gSettings.SavingMode = 0xFF; //default
|
gSettings.CPU.SavingMode = 0xFF; //default
|
||||||
const TagDict* CPUDict = CfgDict->dictPropertyForKey("CPU");
|
const TagDict* CPUDict = CfgDict->dictPropertyForKey("CPU");
|
||||||
if (CPUDict != NULL) {
|
if (CPUDict != NULL) {
|
||||||
const TagStruct* Prop = CPUDict->propertyForKey("QPI");
|
const TagStruct* Prop = CPUDict->propertyForKey("QPI");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.QPI = (UINT16)GetPropertyAsInteger(Prop, gSettings.QPI);
|
gSettings.CPU.QPI = (UINT16)GetPropertyAsInteger(Prop, gSettings.CPU.QPI);
|
||||||
DBG("QPI: %dMHz\n", gSettings.QPI);
|
DBG("QPI: %dMHz\n", gSettings.CPU.QPI);
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("FrequencyMHz");
|
Prop = CPUDict->propertyForKey("FrequencyMHz");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.CpuFreqMHz = (UINT32)GetPropertyAsInteger(Prop, gSettings.CpuFreqMHz);
|
gSettings.CPU.CpuFreqMHz = (UINT32)GetPropertyAsInteger(Prop, gSettings.CPU.CpuFreqMHz);
|
||||||
DBG("CpuFreq: %dMHz\n", gSettings.CpuFreqMHz);
|
DBG("CpuFreq: %dMHz\n", gSettings.CPU.CpuFreqMHz);
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("Type");
|
Prop = CPUDict->propertyForKey("Type");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.CpuType = (UINT16)GetPropertyAsInteger(Prop, gSettings.CpuType);
|
gSettings.CPU.CpuType = (UINT16)GetPropertyAsInteger(Prop, gSettings.CPU.CpuType);
|
||||||
DBG("CpuType: %hX\n", gSettings.CpuType);
|
DBG("CpuType: %hX\n", gSettings.CPU.CpuType);
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("QEMU");
|
Prop = CPUDict->propertyForKey("QEMU");
|
||||||
gSettings.QEMU = IsPropertyNotNullAndTrue(Prop);
|
gSettings.CPU.QEMU = IsPropertyNotNullAndTrue(Prop);
|
||||||
if (gSettings.QEMU) {
|
if (gSettings.CPU.QEMU) {
|
||||||
DBG("QEMU: true\n");
|
DBG("QEMU: true\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("UseARTFrequency");
|
Prop = CPUDict->propertyForKey("UseARTFrequency");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.UseARTFreq = IsPropertyNotNullAndTrue(Prop);
|
gSettings.CPU.UseARTFreq = IsPropertyNotNullAndTrue(Prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
gSettings.UserChange = FALSE;
|
gSettings.CPU.UserChange = FALSE;
|
||||||
Prop = CPUDict->propertyForKey("BusSpeedkHz");
|
Prop = CPUDict->propertyForKey("BusSpeedkHz");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.BusSpeed = (UINT32)GetPropertyAsInteger(Prop, gSettings.BusSpeed);
|
gSettings.CPU.BusSpeed = (UINT32)GetPropertyAsInteger(Prop, gSettings.CPU.BusSpeed);
|
||||||
DBG("BusSpeed: %dkHz\n", gSettings.BusSpeed);
|
DBG("BusSpeed: %dkHz\n", gSettings.CPU.BusSpeed);
|
||||||
gSettings.UserChange = TRUE;
|
gSettings.CPU.UserChange = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("C6");
|
Prop = CPUDict->propertyForKey("C6");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.ACPI.SSDT.EnableC6 = IsPropertyNotNullAndTrue(Prop);
|
// gSettings.ACPI.SSDT.EnableC6 = IsPropertyNotNullAndTrue(Prop);
|
||||||
|
gSettings.CPU._EnableC6 = IsPropertyNotNullAndTrue(Prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("C4");
|
Prop = CPUDict->propertyForKey("C4");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.ACPI.SSDT.EnableC4 = IsPropertyNotNullAndTrue(Prop);
|
// gSettings.ACPI.SSDT.EnableC4 = IsPropertyNotNullAndTrue(Prop);
|
||||||
|
gSettings.CPU._EnableC4 = IsPropertyNotNullAndTrue(Prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("C2");
|
Prop = CPUDict->propertyForKey("C2");
|
||||||
if (Prop != NULL) {
|
if (Prop != NULL) {
|
||||||
gSettings.ACPI.SSDT.EnableC2 = IsPropertyNotNullAndTrue(Prop);
|
// gSettings.ACPI.SSDT.EnableC2 = IsPropertyNotNullAndTrue(Prop);
|
||||||
|
gSettings.CPU._EnableC2 = IsPropertyNotNullAndTrue(Prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Usually it is 0x03e9, but if you want Turbo, you may set 0x00FA
|
//Usually it is 0x03e9, but if you want Turbo, you may set 0x00FA
|
||||||
Prop = CPUDict->propertyForKey("Latency");
|
Prop = CPUDict->propertyForKey("Latency");
|
||||||
gSettings.ACPI.SSDT.C3Latency = (UINT16)GetPropertyAsInteger(Prop, gSettings.ACPI.SSDT.C3Latency);
|
// gSettings.ACPI.SSDT.C3Latency = (UINT16)GetPropertyAsInteger(Prop, gSettings.ACPI.SSDT.C3Latency);
|
||||||
|
if ( Prop != NULL ) gSettings.CPU._C3Latency = (UINT16)GetPropertyAsInteger(Prop, 0);
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("SavingMode");
|
Prop = CPUDict->propertyForKey("SavingMode");
|
||||||
gSettings.SavingMode = (UINT8)GetPropertyAsInteger(Prop, 0xFF); //the default value means not set
|
gSettings.CPU.SavingMode = (UINT8)GetPropertyAsInteger(Prop, 0xFF); //the default value means not set
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("HWPEnable");
|
Prop = CPUDict->propertyForKey("HWPEnable");
|
||||||
if (Prop && IsPropertyNotNullAndTrue(Prop) && (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_U)) {
|
gSettings.CPU.HWPEnable = IsPropertyNotNullAndTrue(Prop);
|
||||||
gSettings.HWP = TRUE;
|
// if (gSettings.CPU.HWPEnable && (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_U)) {
|
||||||
#ifdef CLOVER_BUILD
|
// GlobalConfig.HWP = TRUE;
|
||||||
AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1);
|
//#ifdef CLOVER_BUILD
|
||||||
#endif
|
// AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1);
|
||||||
}
|
//#endif
|
||||||
|
// }
|
||||||
Prop = CPUDict->propertyForKey("HWPValue");
|
Prop = CPUDict->propertyForKey("HWPValue");
|
||||||
if (Prop && gSettings.HWP) {
|
if ( Prop ) gSettings.CPU.HWPValue = (UINT32)GetPropertyAsInteger(Prop, 0);
|
||||||
gSettings.HWPValue = (UINT32)GetPropertyAsInteger(Prop, 0);
|
// if (Prop && GlobalConfig.HWP) {
|
||||||
#ifdef CLOVER_BUILD
|
//#ifdef CLOVER_BUILD
|
||||||
AsmWriteMsr64 (MSR_IA32_HWP_REQUEST, gSettings.HWPValue);
|
// AsmWriteMsr64 (MSR_IA32_HWP_REQUEST, gSettings.CPU.HWPValue);
|
||||||
#endif
|
//#endif
|
||||||
}
|
// }
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("TDP");
|
Prop = CPUDict->propertyForKey("TDP");
|
||||||
gSettings.TDP = (UINT8)GetPropertyAsInteger(Prop, 0);
|
gSettings.CPU.TDP = (UINT8)GetPropertyAsInteger(Prop, 0);
|
||||||
|
|
||||||
Prop = CPUDict->propertyForKey("TurboDisable");
|
Prop = CPUDict->propertyForKey("TurboDisable");
|
||||||
if (Prop && IsPropertyNotNullAndTrue(Prop)) {
|
if (Prop && IsPropertyNotNullAndTrue(Prop)) {
|
||||||
#ifdef CLOVER_BUILD
|
#ifdef CLOVER_BUILD
|
||||||
UINT64 msr = AsmReadMsr64(MSR_IA32_MISC_ENABLE);
|
UINT64 msr = AsmReadMsr64(MSR_IA32_MISC_ENABLE);
|
||||||
#endif
|
#endif
|
||||||
gSettings.Turbo = 0;
|
gSettings.CPU.Turbo = 0;
|
||||||
#ifdef CLOVER_BUILD
|
#ifdef CLOVER_BUILD
|
||||||
msr &= ~(1ULL<<38);
|
msr &= ~(1ULL<<38);
|
||||||
AsmWriteMsr64 (MSR_IA32_MISC_ENABLE, msr);
|
AsmWriteMsr64 (MSR_IA32_MISC_ENABLE, msr);
|
||||||
@ -6910,7 +6915,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
|||||||
Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint16, GEN_PMCON_1, 1, &PmCon);
|
Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint16, GEN_PMCON_1, 1, &PmCon);
|
||||||
MsgLog ("Initial PmCon value=%hX\n", PmCon);
|
MsgLog ("Initial PmCon value=%hX\n", PmCon);
|
||||||
|
|
||||||
if (gSettings.ACPI.SSDT.EnableC6) {
|
if (GlobalConfig.EnableC6) {
|
||||||
PmCon |= 1 << 11;
|
PmCon |= 1 << 11;
|
||||||
DBG("C6 enabled\n");
|
DBG("C6 enabled\n");
|
||||||
} else {
|
} else {
|
||||||
@ -6918,7 +6923,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
|||||||
DBG("C6 disabled\n");
|
DBG("C6 disabled\n");
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
if (gSettings.ACPI.SSDT.EnableC2) {
|
if (GlobalConfig.EnableC2) {
|
||||||
PmCon |= 1 << 10;
|
PmCon |= 1 << 10;
|
||||||
DBG("BIOS_PCIE enabled\n");
|
DBG("BIOS_PCIE enabled\n");
|
||||||
} else {
|
} else {
|
||||||
@ -6926,7 +6931,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
|||||||
DBG("BIOS_PCIE disabled\n");
|
DBG("BIOS_PCIE disabled\n");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (gSettings.ACPI.SSDT.EnableC4) {
|
if (GlobalConfig.EnableC4) {
|
||||||
PmCon |= 1 << 7;
|
PmCon |= 1 << 7;
|
||||||
DBG("C4 enabled\n");
|
DBG("C4 enabled\n");
|
||||||
} else {
|
} else {
|
||||||
@ -7080,7 +7085,7 @@ SaveSettings ()
|
|||||||
// here we can apply user settings instead of default one
|
// here we can apply user settings instead of default one
|
||||||
gMobile = gSettings.Mobile;
|
gMobile = gSettings.Mobile;
|
||||||
|
|
||||||
if ((gSettings.BusSpeed != 0) && (gSettings.BusSpeed > 10 * Kilo) && (gSettings.BusSpeed < 500 * Kilo)) {
|
if ((gSettings.CPU.BusSpeed != 0) && (gSettings.CPU.BusSpeed > 10 * Kilo) && (gSettings.CPU.BusSpeed < 500 * Kilo)) {
|
||||||
switch (gCPUStructure.Model) {
|
switch (gCPUStructure.Model) {
|
||||||
case CPU_MODEL_PENTIUM_M:
|
case CPU_MODEL_PENTIUM_M:
|
||||||
case CPU_MODEL_ATOM:// Atom
|
case CPU_MODEL_ATOM:// Atom
|
||||||
@ -7097,7 +7102,7 @@ SaveSettings ()
|
|||||||
case CPU_MODEL_WESTMERE:// Core i7 LGA1366, Six-core, "Westmere", "Gulftown", 32nm
|
case CPU_MODEL_WESTMERE:// Core i7 LGA1366, Six-core, "Westmere", "Gulftown", 32nm
|
||||||
case CPU_MODEL_NEHALEM_EX:// Core i7, Nehalem-Ex Xeon, "Beckton"
|
case CPU_MODEL_NEHALEM_EX:// Core i7, Nehalem-Ex Xeon, "Beckton"
|
||||||
case CPU_MODEL_WESTMERE_EX:// Core i7, Nehalem-Ex Xeon, "Eagleton"
|
case CPU_MODEL_WESTMERE_EX:// Core i7, Nehalem-Ex Xeon, "Eagleton"
|
||||||
gCPUStructure.ExternalClock = gSettings.BusSpeed;
|
gCPUStructure.ExternalClock = gSettings.CPU.BusSpeed;
|
||||||
//DBG("Read ExternalClock: %d MHz\n", (INT32)(DivU64x32(gCPUStructure.ExternalClock, Kilo)));
|
//DBG("Read ExternalClock: %d MHz\n", (INT32)(DivU64x32(gCPUStructure.ExternalClock, Kilo)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -7105,21 +7110,21 @@ SaveSettings ()
|
|||||||
|
|
||||||
// for sandy bridge or newer
|
// for sandy bridge or newer
|
||||||
// to match ExternalClock 25 MHz like real mac, divide BusSpeed by 4
|
// to match ExternalClock 25 MHz like real mac, divide BusSpeed by 4
|
||||||
gCPUStructure.ExternalClock = (gSettings.BusSpeed + 3) / 4;
|
gCPUStructure.ExternalClock = (gSettings.CPU.BusSpeed + 3) / 4;
|
||||||
//DBG("Corrected ExternalClock: %d MHz\n", (INT32)(DivU64x32(gCPUStructure.ExternalClock, Kilo)));
|
//DBG("Corrected ExternalClock: %d MHz\n", (INT32)(DivU64x32(gCPUStructure.ExternalClock, Kilo)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gCPUStructure.FSBFrequency = MultU64x64 (gSettings.BusSpeed, Kilo); //kHz -> Hz
|
gCPUStructure.FSBFrequency = MultU64x64 (gSettings.CPU.BusSpeed, Kilo); //kHz -> Hz
|
||||||
gCPUStructure.MaxSpeed = (UINT32)(DivU64x32 ((UINT64)gSettings.BusSpeed * gCPUStructure.MaxRatio, 10000)); //kHz->MHz
|
gCPUStructure.MaxSpeed = (UINT32)(DivU64x32 ((UINT64)gSettings.CPU.BusSpeed * gCPUStructure.MaxRatio, 10000)); //kHz->MHz
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((gSettings.CpuFreqMHz > 100) && (gSettings.CpuFreqMHz < 20000)) {
|
if ((gSettings.CPU.CpuFreqMHz > 100) && (gSettings.CPU.CpuFreqMHz < 20000)) {
|
||||||
gCPUStructure.MaxSpeed = gSettings.CpuFreqMHz;
|
gCPUStructure.MaxSpeed = gSettings.CPU.CpuFreqMHz;
|
||||||
}
|
}
|
||||||
|
|
||||||
// to determine the use of Table 132
|
// to determine the use of Table 132
|
||||||
if (gSettings.QPI) {
|
if (gSettings.CPU.QPI) {
|
||||||
GlobalConfig.SetTable132 = TRUE;
|
GlobalConfig.SetTable132 = TRUE;
|
||||||
//DBG("QPI: use Table 132\n");
|
//DBG("QPI: use Table 132\n");
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "MacOsVersion.h"
|
#include "MacOsVersion.h"
|
||||||
#include "KERNEL_AND_KEXT_PATCHES.h"
|
#include "KERNEL_AND_KEXT_PATCHES.h"
|
||||||
#include "../libeg/XIcon.h"
|
#include "../libeg/XIcon.h"
|
||||||
|
#include "../cpp_lib/undefinable.h"
|
||||||
|
|
||||||
|
|
||||||
#define CLOVER_SIGN SIGNATURE_32('C','l','v','r')
|
#define CLOVER_SIGN SIGNATURE_32('C','l','v','r')
|
||||||
@ -344,10 +345,10 @@ public:
|
|||||||
BOOLEAN NoDynamicExtract = 0;
|
BOOLEAN NoDynamicExtract = 0;
|
||||||
BOOLEAN EnableISS = 0;
|
BOOLEAN EnableISS = 0;
|
||||||
BOOLEAN EnableC7 = 0;
|
BOOLEAN EnableC7 = 0;
|
||||||
BOOLEAN EnableC6 = 0;
|
BOOLEAN _EnableC6 = 0;
|
||||||
BOOLEAN EnableC4 = 0;
|
BOOLEAN _EnableC4 = 0;
|
||||||
BOOLEAN EnableC2 = 0;
|
BOOLEAN _EnableC2 = 0;
|
||||||
UINT16 C3Latency = 0;
|
UINT16 _C3Latency = 0;
|
||||||
UINT8 PLimitDict = 0;
|
UINT8 PLimitDict = 0;
|
||||||
UINT8 UnderVoltStep = 0;
|
UINT8 UnderVoltStep = 0;
|
||||||
BOOLEAN DoubleFirstState = 0;
|
BOOLEAN DoubleFirstState = 0;
|
||||||
@ -386,6 +387,43 @@ public:
|
|||||||
bool NoLegacy = false;
|
bool NoLegacy = false;
|
||||||
} GUI = GUIClass();
|
} GUI = GUIClass();
|
||||||
|
|
||||||
|
class CPUClass {
|
||||||
|
public:
|
||||||
|
UINT16 QPI = 0;
|
||||||
|
UINT32 CpuFreqMHz = 0;
|
||||||
|
UINT16 CpuType = 0;
|
||||||
|
BOOLEAN QEMU = 0;
|
||||||
|
BOOLEAN UseARTFreq = 0;
|
||||||
|
UINT32 BusSpeed = 0; //in kHz
|
||||||
|
BOOLEAN UserChange = 0;
|
||||||
|
UINT8 SavingMode = 0;
|
||||||
|
bool HWPEnable = false;
|
||||||
|
undefinable_uint32 HWPValue = undefinable_uint32();
|
||||||
|
UINT8 TDP = 0;
|
||||||
|
BOOLEAN Turbo = 0;
|
||||||
|
undefinable_bool _EnableC6 = undefinable_bool();
|
||||||
|
undefinable_bool _EnableC4 = undefinable_bool();
|
||||||
|
undefinable_bool _EnableC2 = undefinable_bool();
|
||||||
|
undefinable_uint16 _C3Latency = undefinable_uint16();
|
||||||
|
} CPU = CPUClass();
|
||||||
|
|
||||||
|
bool getEnableC6() const {
|
||||||
|
if ( CPU._EnableC6.isDefined() ) return CPU._EnableC6;
|
||||||
|
return ACPI.SSDT._EnableC6;
|
||||||
|
}
|
||||||
|
bool getEnableC4() const {
|
||||||
|
if ( CPU._EnableC4.isDefined() ) return CPU._EnableC4;
|
||||||
|
return ACPI.SSDT._EnableC4;
|
||||||
|
}
|
||||||
|
bool getEnableC2() const {
|
||||||
|
if ( CPU._EnableC2.isDefined() ) return CPU._EnableC2;
|
||||||
|
return ACPI.SSDT._EnableC2;
|
||||||
|
}
|
||||||
|
bool getC3Latency() const {
|
||||||
|
if ( CPU._C3Latency.isDefined() ) return CPU._C3Latency;
|
||||||
|
return ACPI.SSDT._C3Latency;
|
||||||
|
}
|
||||||
|
|
||||||
// SMBIOS TYPE0
|
// SMBIOS TYPE0
|
||||||
XString8 VendorName;
|
XString8 VendorName;
|
||||||
XString8 RomVersion;
|
XString8 RomVersion;
|
||||||
@ -418,12 +456,7 @@ public:
|
|||||||
XString8 ChassisManufacturer;
|
XString8 ChassisManufacturer;
|
||||||
XString8 ChassisAssetTag;
|
XString8 ChassisAssetTag;
|
||||||
// SMBIOS TYPE4
|
// SMBIOS TYPE4
|
||||||
UINT32 CpuFreqMHz;
|
|
||||||
UINT32 BusSpeed; //in kHz
|
|
||||||
BOOLEAN Turbo;
|
|
||||||
UINT8 EnabledCores;
|
UINT8 EnabledCores;
|
||||||
BOOLEAN UserChange;
|
|
||||||
BOOLEAN QEMU;
|
|
||||||
// SMBIOS TYPE17
|
// SMBIOS TYPE17
|
||||||
UINT16 SmbiosVersion;
|
UINT16 SmbiosVersion;
|
||||||
INT8 Attribute;
|
INT8 Attribute;
|
||||||
@ -433,12 +466,9 @@ public:
|
|||||||
XString8 MemoryPartNumber;
|
XString8 MemoryPartNumber;
|
||||||
XString8 MemorySpeed;
|
XString8 MemorySpeed;
|
||||||
// SMBIOS TYPE131
|
// SMBIOS TYPE131
|
||||||
UINT16 CpuType;
|
|
||||||
// SMBIOS TYPE132
|
// SMBIOS TYPE132
|
||||||
UINT16 QPI;
|
BOOLEAN TrustSMBIOS = 0;
|
||||||
BOOLEAN TrustSMBIOS;
|
|
||||||
BOOLEAN InjectMemoryTables;
|
BOOLEAN InjectMemoryTables;
|
||||||
BOOLEAN UseARTFreq;
|
|
||||||
INT8 pad18[3];
|
INT8 pad18[3];
|
||||||
|
|
||||||
// SMBIOS TYPE133
|
// SMBIOS TYPE133
|
||||||
@ -478,7 +508,6 @@ public:
|
|||||||
|
|
||||||
//ACPI
|
//ACPI
|
||||||
UINT8 pad23[1];
|
UINT8 pad23[1];
|
||||||
UINT8 SavingMode;
|
|
||||||
|
|
||||||
// BOOLEAN DropMCFG;
|
// BOOLEAN DropMCFG;
|
||||||
|
|
||||||
@ -555,9 +584,6 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//SkyLake
|
//SkyLake
|
||||||
BOOLEAN HWP;
|
|
||||||
UINT8 TDP;
|
|
||||||
UINT32 HWPValue;
|
|
||||||
|
|
||||||
//Volumes hiding
|
//Volumes hiding
|
||||||
XString8Array HVHideStrings;
|
XString8Array HVHideStrings;
|
||||||
@ -686,19 +712,19 @@ public:
|
|||||||
|
|
||||||
SETTINGS_DATA() : VendorName(), RomVersion(), EfiVersion(), ReleaseDate(), ManufactureName(), ProductName(), VersionNr(), SerialNr(), SmUUID(),
|
SETTINGS_DATA() : VendorName(), RomVersion(), EfiVersion(), ReleaseDate(), ManufactureName(), ProductName(), VersionNr(), SerialNr(), SmUUID(),
|
||||||
pad0{0}, FamilyName(), OEMProduct(), OEMVendor(), BoardManufactureName(), BoardSerialNumber(), BoardNumber(), LocationInChassis(),
|
pad0{0}, FamilyName(), OEMProduct(), OEMVendor(), BoardManufactureName(), BoardSerialNumber(), BoardNumber(), LocationInChassis(),
|
||||||
BoardVersion(), OEMBoard(), BoardType(0), pad1(0), Mobile(0), ChassisType(0), ChassisManufacturer(), ChassisAssetTag(), CpuFreqMHz(0),
|
BoardVersion(), OEMBoard(), BoardType(0), pad1(0), Mobile(0), ChassisType(0), ChassisManufacturer(), ChassisAssetTag(),
|
||||||
BusSpeed(0), Turbo(0), EnabledCores(0), UserChange(0), QEMU(0), SmbiosVersion(0), Attribute(0), pad17{0}, MemoryManufacturer(),
|
EnabledCores(0), SmbiosVersion(0), Attribute(0), pad17{0}, MemoryManufacturer(),
|
||||||
MemorySerialNumber(), MemoryPartNumber(), MemorySpeed(), CpuType(0), QPI(0), TrustSMBIOS(0), InjectMemoryTables(0),
|
MemorySerialNumber(), MemoryPartNumber(), MemorySpeed(), InjectMemoryTables(0),
|
||||||
UseARTFreq(0), PlatformFeature(0), NoRomInfo(0), Language(), CustomUuid(),
|
PlatformFeature(0), NoRomInfo(0), Language(), CustomUuid(),
|
||||||
IntelMaxBacklight(0), VendorEDID(0), ProductEDID(0), BacklightLevel(0), BacklightLevelConfig(0), IntelBacklight(0), MemoryFix(0), WithKexts(0),
|
IntelMaxBacklight(0), VendorEDID(0), ProductEDID(0), BacklightLevel(0), BacklightLevelConfig(0), IntelBacklight(0), MemoryFix(0), WithKexts(0),
|
||||||
WithKextsIfNoFakeSMC(0), FakeSMCFound(0), NoCaches(0), Debug(0), pad22{0}, DefaultBackgroundColor(0), SavingMode(0), StringInjector(0), InjectSystemID_(0), NoDefaultProperties(0),
|
WithKextsIfNoFakeSMC(0), FakeSMCFound(0), NoCaches(0), Debug(0), pad22{0}, DefaultBackgroundColor(0), StringInjector(0), InjectSystemID_(0), NoDefaultProperties(0),
|
||||||
FakeATI(0), FakeNVidia(0), FakeIntel(0), FakeLAN(0), FakeWIFI(0), FakeSATA(0), FakeXHCI(0), FakeIMEI(0), GraphicsInjector(0),
|
FakeATI(0), FakeNVidia(0), FakeIntel(0), FakeLAN(0), FakeWIFI(0), FakeSATA(0), FakeXHCI(0), FakeIMEI(0), GraphicsInjector(0),
|
||||||
InjectIntel(0), InjectATI(0), InjectNVidia(0), DeInit(0), LoadVBios(0), PatchVBios(0), PatchVBiosBytes(0), PatchVBiosBytesCount(0), InjectEDID(0),
|
InjectIntel(0), InjectATI(0), InjectNVidia(0), DeInit(0), LoadVBios(0), PatchVBios(0), PatchVBiosBytes(0), PatchVBiosBytesCount(0), InjectEDID(0),
|
||||||
LpcTune(0), DropOEM_DSM(0), CustomEDID(0), CustomEDIDsize(0), EdidFixHorizontalSyncPulseWidth(0), EdidFixVideoInputSignal(0), FBName(), VideoPorts(0), NvidiaGeneric(0),
|
LpcTune(0), DropOEM_DSM(0), CustomEDID(0), CustomEDIDsize(0), EdidFixHorizontalSyncPulseWidth(0), EdidFixVideoInputSignal(0), FBName(), VideoPorts(0), NvidiaGeneric(0),
|
||||||
NvidiaNoEFI(0), NvidiaSingle(0), VRAM(0), Dcfg{0}, NVCAP{0}, BootDisplay(0), NvidiaWeb(0), pad41{0}, DualLink(0),
|
NvidiaNoEFI(0), NvidiaSingle(0), VRAM(0), Dcfg{0}, NVCAP{0}, BootDisplay(0), NvidiaWeb(0), pad41{0}, DualLink(0),
|
||||||
IgPlatform(0), HDAInjection(0),
|
IgPlatform(0), HDAInjection(0),
|
||||||
HDALayoutId(0), USBInjection(0), USBFixOwnership(0), InjectClockID(0), HighCurrent(0), NameEH00(0), NameXH00(0), LANInjection(0), HDMIInjection(0),
|
HDALayoutId(0), USBInjection(0), USBFixOwnership(0), InjectClockID(0), HighCurrent(0), NameEH00(0), NameXH00(0), LANInjection(0), HDMIInjection(0),
|
||||||
HWP(0), TDP(0), HWPValue(0), HVHideStrings(), KernelAndKextPatches(), KextPatchesAllowed(0),
|
HVHideStrings(), KernelAndKextPatches(), KextPatchesAllowed(0),
|
||||||
KernelPatchesAllowed(0), AirportBridgeDeviceName(), KbdPrevLang(0), PointerEnabled(0), PointerSpeed(0), DoubleClickTime(0), PointerMirror(0),
|
KernelPatchesAllowed(0), AirportBridgeDeviceName(), KbdPrevLang(0), PointerEnabled(0), PointerSpeed(0), DoubleClickTime(0), PointerMirror(0),
|
||||||
RefCLK(0), RtMLB(), RtROM(), CsrActiveConfig(0), BooterConfig(0), BooterCfgStr(),
|
RefCLK(0), RtMLB(), RtROM(), CsrActiveConfig(0), BooterConfig(0), BooterCfgStr(),
|
||||||
ConfigName{0}, /*MainConfigName(0),*/ /*BlackListCount(0),*/ DisabledDriverArray(), RPlt{0}, RBr{0}, EPCI{0}, REV{0}, ForceHPET(0), ResetHDA(0), PlayAsync(0), DisableFunctions(0), SlpWak(0), UseIntelHDMI(0),
|
ConfigName{0}, /*MainConfigName(0),*/ /*BlackListCount(0),*/ DisabledDriverArray(), RPlt{0}, RBr{0}, EPCI{0}, REV{0}, ForceHPET(0), ResetHDA(0), PlayAsync(0), DisableFunctions(0), SlpWak(0), UseIntelHDMI(0),
|
||||||
@ -936,6 +962,12 @@ public:
|
|||||||
UINT8 SecureBootSetupMode = 0;
|
UINT8 SecureBootSetupMode = 0;
|
||||||
|
|
||||||
BOOLEAN SetTable132 = 0;
|
BOOLEAN SetTable132 = 0;
|
||||||
|
BOOLEAN HWP = 0;
|
||||||
|
|
||||||
|
bool EnableC6 = 0;
|
||||||
|
bool EnableC4 = 0;
|
||||||
|
bool EnableC2 = 0;
|
||||||
|
uint16_t C3Latency = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Defqult ctor :
|
* Defqult ctor :
|
||||||
|
@ -166,7 +166,7 @@ SSDT_TABLE *generate_pss_ssdt(UINTN Number)
|
|||||||
|
|
||||||
maximum.Control.Control = (RShiftU64(AsmReadMsr64(MSR_IA32_PERF_STATUS), 32) & 0x1F3F) | (0x4000 * cpu_noninteger_bus_ratio);
|
maximum.Control.Control = (RShiftU64(AsmReadMsr64(MSR_IA32_PERF_STATUS), 32) & 0x1F3F) | (0x4000 * cpu_noninteger_bus_ratio);
|
||||||
DBG("Maximum control=0x%hX\n", maximum.Control.Control);
|
DBG("Maximum control=0x%hX\n", maximum.Control.Control);
|
||||||
if (gSettings.Turbo) {
|
if (gSettings.CPU.Turbo) {
|
||||||
maximum.Control.VID_FID.FID++;
|
maximum.Control.VID_FID.FID++;
|
||||||
MsgLog("Turbo FID=0x%hhX\n", maximum.Control.VID_FID.FID);
|
MsgLog("Turbo FID=0x%hhX\n", maximum.Control.VID_FID.FID);
|
||||||
}
|
}
|
||||||
@ -284,7 +284,7 @@ SSDT_TABLE *generate_pss_ssdt(UINTN Number)
|
|||||||
|
|
||||||
realMax = maximum.Control.Control;
|
realMax = maximum.Control.Control;
|
||||||
DBG("Maximum control=0x%hX\n", realMax);
|
DBG("Maximum control=0x%hX\n", realMax);
|
||||||
if (gSettings.Turbo) {
|
if (gSettings.CPU.Turbo) {
|
||||||
realTurbo = (gCPUStructure.Turbo4 > gCPUStructure.Turbo1) ?
|
realTurbo = (gCPUStructure.Turbo4 > gCPUStructure.Turbo1) ?
|
||||||
(gCPUStructure.Turbo4 / 10) : (gCPUStructure.Turbo1 / 10);
|
(gCPUStructure.Turbo4 / 10) : (gCPUStructure.Turbo1 / 10);
|
||||||
maximum.Control.Control = realTurbo;
|
maximum.Control.Control = realTurbo;
|
||||||
@ -393,12 +393,12 @@ SSDT_TABLE *generate_pss_ssdt(UINTN Number)
|
|||||||
|
|
||||||
scop = aml_add_scope(root, name);
|
scop = aml_add_scope(root, name);
|
||||||
|
|
||||||
if (gSettings.ACPI.SSDT.Generate.GeneratePStates && !gSettings.HWP) {
|
if (gSettings.ACPI.SSDT.Generate.GeneratePStates && !GlobalConfig.HWP) {
|
||||||
method = aml_add_name(scop, "PSS_");
|
method = aml_add_name(scop, "PSS_");
|
||||||
pack = aml_add_package(method);
|
pack = aml_add_package(method);
|
||||||
|
|
||||||
if ((gSettings.TDP != 0) && (p_states[0].Frequency != 0)) {
|
if ((gSettings.CPU.TDP != 0) && (p_states[0].Frequency != 0)) {
|
||||||
TDPdiv = (gSettings.TDP * 1000) / p_states[0].Frequency;
|
TDPdiv = (gSettings.CPU.TDP * 1000) / p_states[0].Frequency;
|
||||||
} else {
|
} else {
|
||||||
TDPdiv = 8;
|
TDPdiv = 8;
|
||||||
}
|
}
|
||||||
@ -481,7 +481,7 @@ SSDT_TABLE *generate_pss_ssdt(UINTN Number)
|
|||||||
|
|
||||||
aml_destroy_node(root);
|
aml_destroy_node(root);
|
||||||
|
|
||||||
if (gSettings.ACPI.SSDT.Generate.GeneratePStates && !gSettings.HWP) {
|
if (gSettings.ACPI.SSDT.Generate.GeneratePStates && !GlobalConfig.HWP) {
|
||||||
if (gSettings.ACPI.SSDT.PluginType && gSettings.ACPI.SSDT.Generate.GeneratePluginType) {
|
if (gSettings.ACPI.SSDT.PluginType && gSettings.ACPI.SSDT.Generate.GeneratePluginType) {
|
||||||
MsgLog ("SSDT with CPU P-States and plugin-type generated successfully\n");
|
MsgLog ("SSDT with CPU P-States and plugin-type generated successfully\n");
|
||||||
} else {
|
} else {
|
||||||
@ -502,10 +502,10 @@ SSDT_TABLE *generate_pss_ssdt(UINTN Number)
|
|||||||
|
|
||||||
SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, UINTN Number)
|
SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, UINTN Number)
|
||||||
{
|
{
|
||||||
BOOLEAN c2_enabled = gSettings.ACPI.SSDT.EnableC2;
|
BOOLEAN c2_enabled = GlobalConfig.EnableC2;
|
||||||
BOOLEAN c3_enabled;
|
BOOLEAN c3_enabled;
|
||||||
BOOLEAN c4_enabled = gSettings.ACPI.SSDT.EnableC4;
|
BOOLEAN c4_enabled = GlobalConfig.EnableC4;
|
||||||
// BOOLEAN c6_enabled = gSettings.ACPI.SSDT.EnableC6;
|
// BOOLEAN c6_enabled = GlobalConfig.EnableC6;
|
||||||
BOOLEAN cst_using_systemio = gSettings.ACPI.SSDT.EnableISS;
|
BOOLEAN cst_using_systemio = gSettings.ACPI.SSDT.EnableISS;
|
||||||
UINT8 p_blk_lo, p_blk_hi;
|
UINT8 p_blk_lo, p_blk_hi;
|
||||||
UINT8 cstates_count;
|
UINT8 cstates_count;
|
||||||
@ -531,7 +531,7 @@ SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, U
|
|||||||
c2_enabled = c2_enabled || (fadt->PLvl2Lat < 100);
|
c2_enabled = c2_enabled || (fadt->PLvl2Lat < 100);
|
||||||
c3_enabled = (fadt->PLvl3Lat < 1000);
|
c3_enabled = (fadt->PLvl3Lat < 1000);
|
||||||
cstates_count = 1 + (c2_enabled ? 1 : 0) + ((c3_enabled || c4_enabled)? 1 : 0)
|
cstates_count = 1 + (c2_enabled ? 1 : 0) + ((c3_enabled || c4_enabled)? 1 : 0)
|
||||||
+ (gSettings.ACPI.SSDT.EnableC6 ? 1 : 0) + (gSettings.ACPI.SSDT.EnableC7 ? 1 : 0);
|
+ (GlobalConfig.EnableC6 ? 1 : 0) + (gSettings.ACPI.SSDT.EnableC7 ? 1 : 0);
|
||||||
|
|
||||||
root = aml_create_node(NULL);
|
root = aml_create_node(NULL);
|
||||||
aml_add_buffer(root, cst_ssdt_header, sizeof(cst_ssdt_header)); // SSDT header
|
aml_add_buffer(root, cst_ssdt_header, sizeof(cst_ssdt_header)); // SSDT header
|
||||||
@ -586,10 +586,10 @@ SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, U
|
|||||||
resource_template_register_systemio[12] = p_blk_hi; // C3
|
resource_template_register_systemio[12] = p_blk_hi; // C3
|
||||||
aml_add_buffer(tmpl, resource_template_register_systemio, sizeof(resource_template_register_systemio));
|
aml_add_buffer(tmpl, resource_template_register_systemio, sizeof(resource_template_register_systemio));
|
||||||
aml_add_byte(tmpl, 0x03); // C3
|
aml_add_byte(tmpl, 0x03); // C3
|
||||||
aml_add_word(tmpl, gSettings.ACPI.SSDT.C3Latency); // Latency
|
aml_add_word(tmpl, GlobalConfig.C3Latency); // Latency
|
||||||
aml_add_dword(tmpl, 0x000001F4); // Power
|
aml_add_dword(tmpl, 0x000001F4); // Power
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC6) { // C6
|
if (GlobalConfig.EnableC6) { // C6
|
||||||
p_blk_lo = (UINT8)(acpi_cpu_p_blk + 5);
|
p_blk_lo = (UINT8)(acpi_cpu_p_blk + 5);
|
||||||
p_blk_hi = (UINT8)((acpi_cpu_p_blk + 5) >> 8);
|
p_blk_hi = (UINT8)((acpi_cpu_p_blk + 5) >> 8);
|
||||||
|
|
||||||
@ -598,7 +598,7 @@ SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, U
|
|||||||
resource_template_register_systemio[12] = p_blk_hi; // C6
|
resource_template_register_systemio[12] = p_blk_hi; // C6
|
||||||
aml_add_buffer(tmpl, resource_template_register_systemio, sizeof(resource_template_register_systemio));
|
aml_add_buffer(tmpl, resource_template_register_systemio, sizeof(resource_template_register_systemio));
|
||||||
aml_add_byte(tmpl, 0x06); // C6
|
aml_add_byte(tmpl, 0x06); // C6
|
||||||
aml_add_word(tmpl, gSettings.ACPI.SSDT.C3Latency + 3); // Latency
|
aml_add_word(tmpl, GlobalConfig.C3Latency + 3); // Latency
|
||||||
aml_add_dword(tmpl, 0x0000015E); // Power
|
aml_add_dword(tmpl, 0x0000015E); // Power
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC7) { //C7
|
if (gSettings.ACPI.SSDT.EnableC7) { //C7
|
||||||
@ -652,15 +652,15 @@ SSDT_TABLE *generate_cst_ssdt(EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE* fadt, U
|
|||||||
resource_template_register_fixedhw[11] = 0x20; // C3
|
resource_template_register_fixedhw[11] = 0x20; // C3
|
||||||
aml_add_buffer(tmpl, resource_template_register_fixedhw, sizeof(resource_template_register_fixedhw));
|
aml_add_buffer(tmpl, resource_template_register_fixedhw, sizeof(resource_template_register_fixedhw));
|
||||||
aml_add_byte(tmpl, 0x03); // C3
|
aml_add_byte(tmpl, 0x03); // C3
|
||||||
aml_add_word(tmpl, gSettings.ACPI.SSDT.C3Latency); // Latency as in MacPro6,1 = 0x0043
|
aml_add_word(tmpl, GlobalConfig.C3Latency); // Latency as in MacPro6,1 = 0x0043
|
||||||
aml_add_dword(tmpl, 0x000001F4); // Power
|
aml_add_dword(tmpl, 0x000001F4); // Power
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC6) { // C6
|
if (GlobalConfig.EnableC6) { // C6
|
||||||
tmpl = aml_add_package(pack);
|
tmpl = aml_add_package(pack);
|
||||||
resource_template_register_fixedhw[11] = 0x20; // C6
|
resource_template_register_fixedhw[11] = 0x20; // C6
|
||||||
aml_add_buffer(tmpl, resource_template_register_fixedhw, sizeof(resource_template_register_fixedhw));
|
aml_add_buffer(tmpl, resource_template_register_fixedhw, sizeof(resource_template_register_fixedhw));
|
||||||
aml_add_byte(tmpl, 0x06); // C6
|
aml_add_byte(tmpl, 0x06); // C6
|
||||||
aml_add_word(tmpl, gSettings.ACPI.SSDT.C3Latency + 3); // Latency as in MacPro6,1 = 0x0046
|
aml_add_word(tmpl, GlobalConfig.C3Latency + 3); // Latency as in MacPro6,1 = 0x0046
|
||||||
aml_add_dword(tmpl, 0x0000015E); // Power
|
aml_add_dword(tmpl, 0x0000015E); // Power
|
||||||
}
|
}
|
||||||
if (gSettings.ACPI.SSDT.EnableC7) {
|
if (gSettings.ACPI.SSDT.EnableC7) {
|
||||||
|
@ -139,7 +139,7 @@ void GetCPUProperties (void)
|
|||||||
gCPUStructure.MaxRatio = 10; //keep it as K*10
|
gCPUStructure.MaxRatio = 10; //keep it as K*10
|
||||||
gCPUStructure.MinRatio = 10; //same
|
gCPUStructure.MinRatio = 10; //same
|
||||||
gCPUStructure.SubDivider = 0;
|
gCPUStructure.SubDivider = 0;
|
||||||
gSettings.CpuFreqMHz = 0;
|
gSettings.CPU.CpuFreqMHz = 0;
|
||||||
gCPUStructure.FSBFrequency = MultU64x32(gCPUStructure.ExternalClock, Kilo); //kHz -> Hz
|
gCPUStructure.FSBFrequency = MultU64x32(gCPUStructure.ExternalClock, Kilo); //kHz -> Hz
|
||||||
gCPUStructure.ProcessorInterconnectSpeed = 0;
|
gCPUStructure.ProcessorInterconnectSpeed = 0;
|
||||||
gCPUStructure.Mobile = FALSE; //not same as gMobile
|
gCPUStructure.Mobile = FALSE; //not same as gMobile
|
||||||
@ -1149,7 +1149,7 @@ void GetCPUProperties (void)
|
|||||||
DBG("qpibusspeed %llukHz\n", qpibusspeed);
|
DBG("qpibusspeed %llukHz\n", qpibusspeed);
|
||||||
gCPUStructure.ProcessorInterconnectSpeed = DivU64x32(qpibusspeed, Kilo); //kHz->MHz
|
gCPUStructure.ProcessorInterconnectSpeed = DivU64x32(qpibusspeed, Kilo); //kHz->MHz
|
||||||
// set QPI for Nehalem
|
// set QPI for Nehalem
|
||||||
gSettings.QPI = (UINT16)gCPUStructure.ProcessorInterconnectSpeed;
|
gSettings.CPU.QPI = (UINT16)gCPUStructure.ProcessorInterconnectSpeed;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
gCPUStructure.ProcessorInterconnectSpeed = DivU64x32(LShiftU64(gCPUStructure.ExternalClock, 2), Kilo); //kHz->MHz
|
gCPUStructure.ProcessorInterconnectSpeed = DivU64x32(LShiftU64(gCPUStructure.ExternalClock, 2), Kilo); //kHz->MHz
|
||||||
@ -1181,8 +1181,8 @@ void SetCPUProperties (void)
|
|||||||
UINT64 msr = 0;
|
UINT64 msr = 0;
|
||||||
|
|
||||||
if ((gCPUStructure.CPUID[CPUID_6][ECX] & (1 << 3)) != 0) {
|
if ((gCPUStructure.CPUID[CPUID_6][ECX] & (1 << 3)) != 0) {
|
||||||
if (gSettings.SavingMode != 0xFF) {
|
if (gSettings.CPU.SavingMode != 0xFF) {
|
||||||
msr = gSettings.SavingMode;
|
msr = gSettings.CPU.SavingMode;
|
||||||
AsmWriteMsr64(IA32_ENERGY_PERF_BIAS, msr);
|
AsmWriteMsr64(IA32_ENERGY_PERF_BIAS, msr);
|
||||||
msr = AsmReadMsr64(IA32_ENERGY_PERF_BIAS); //0x1B0
|
msr = AsmReadMsr64(IA32_ENERGY_PERF_BIAS); //0x1B0
|
||||||
MsgLog("MSR 0x1B0 set to %llX\n", msr);
|
MsgLog("MSR 0x1B0 set to %llX\n", msr);
|
||||||
|
@ -1446,7 +1446,7 @@ void GetDefaultCpuSettings()
|
|||||||
MACHINE_TYPES Model;
|
MACHINE_TYPES Model;
|
||||||
//UINT64 msr = 0;
|
//UINT64 msr = 0;
|
||||||
Model = GetDefaultModel();
|
Model = GetDefaultModel();
|
||||||
gSettings.CpuType = GetAdvancedCpuType();
|
gSettings.CPU.CpuType = GetAdvancedCpuType();
|
||||||
SetDMISettingsForModel(Model, TRUE);
|
SetDMISettingsForModel(Model, TRUE);
|
||||||
|
|
||||||
if (gCPUStructure.Model >= CPU_MODEL_IVY_BRIDGE) {
|
if (gCPUStructure.Model >= CPU_MODEL_IVY_BRIDGE) {
|
||||||
@ -1458,7 +1458,7 @@ void GetDefaultCpuSettings()
|
|||||||
gSettings.ACPI.SSDT.Generate.GeneratePluginType = gSettings.ACPI.SSDT.Generate.GeneratePStates;
|
gSettings.ACPI.SSDT.Generate.GeneratePluginType = gSettings.ACPI.SSDT.Generate.GeneratePStates;
|
||||||
// gSettings.ACPI.SSDT.EnableISS = FALSE;
|
// gSettings.ACPI.SSDT.EnableISS = FALSE;
|
||||||
// gSettings.ACPI.SSDT.EnableC2 = TRUE;
|
// gSettings.ACPI.SSDT.EnableC2 = TRUE;
|
||||||
gSettings.ACPI.SSDT.EnableC6 = TRUE;
|
gSettings.ACPI.SSDT._EnableC6 = TRUE;
|
||||||
gSettings.ACPI.SSDT.PluginType = 1;
|
gSettings.ACPI.SSDT.PluginType = 1;
|
||||||
|
|
||||||
if (gCPUStructure.Model == CPU_MODEL_IVY_BRIDGE) {
|
if (gCPUStructure.Model == CPU_MODEL_IVY_BRIDGE) {
|
||||||
@ -1466,12 +1466,12 @@ void GetDefaultCpuSettings()
|
|||||||
}
|
}
|
||||||
// gSettings.ACPI.SSDT.DoubleFirstState = FALSE;
|
// gSettings.ACPI.SSDT.DoubleFirstState = FALSE;
|
||||||
//gSettings.ACPI.SSDT.DropSSDT = TRUE; //why drop all???
|
//gSettings.ACPI.SSDT.DropSSDT = TRUE; //why drop all???
|
||||||
gSettings.ACPI.SSDT.C3Latency = 0x00FA;
|
gSettings.ACPI.SSDT._C3Latency = 0x00FA;
|
||||||
}
|
}
|
||||||
gSettings.Turbo = gCPUStructure.Turbo;
|
gSettings.CPU.Turbo = gCPUStructure.Turbo;
|
||||||
gSettings.SavingMode = 0xFF; //means not set
|
gSettings.CPU.SavingMode = 0xFF; //means not set
|
||||||
|
|
||||||
if (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_D) {
|
if (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_D) {
|
||||||
gSettings.UseARTFreq = true;
|
gSettings.CPU.UseARTFreq = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1930,7 +1930,7 @@ void PatchTableType131()
|
|||||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, 131, 0);
|
SmbiosTable = GetSmbiosTableFromType (EntryPoint, 131, 0);
|
||||||
if (SmbiosTable.Raw != NULL) {
|
if (SmbiosTable.Raw != NULL) {
|
||||||
MsgLog("Table 131 is present, CPUType=%hX\n", SmbiosTable.Type131->ProcessorType.Type);
|
MsgLog("Table 131 is present, CPUType=%hX\n", SmbiosTable.Type131->ProcessorType.Type);
|
||||||
MsgLog("Change to: %hX\n", gSettings.CpuType);
|
MsgLog("Change to: %hX\n", gSettings.CPU.CpuType);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroMem((void*)newSmbiosTable.Type131, MAX_TABLE_SIZE);
|
ZeroMem((void*)newSmbiosTable.Type131, MAX_TABLE_SIZE);
|
||||||
@ -1938,7 +1938,7 @@ void PatchTableType131()
|
|||||||
newSmbiosTable.Type131->Hdr.Length = sizeof(SMBIOS_STRUCTURE)+2;
|
newSmbiosTable.Type131->Hdr.Length = sizeof(SMBIOS_STRUCTURE)+2;
|
||||||
newSmbiosTable.Type131->Hdr.Handle = 0x8300; //common rule
|
newSmbiosTable.Type131->Hdr.Handle = 0x8300; //common rule
|
||||||
// Patch ProcessorType
|
// Patch ProcessorType
|
||||||
newSmbiosTable.Type131->ProcessorType.Type = gSettings.CpuType;
|
newSmbiosTable.Type131->ProcessorType.Type = gSettings.CPU.CpuType;
|
||||||
Handle = LogSmbiosTable(newSmbiosTable);
|
Handle = LogSmbiosTable(newSmbiosTable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1954,7 +1954,7 @@ void PatchTableType132()
|
|||||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, 132, 0);
|
SmbiosTable = GetSmbiosTableFromType (EntryPoint, 132, 0);
|
||||||
if (SmbiosTable.Raw != NULL) {
|
if (SmbiosTable.Raw != NULL) {
|
||||||
MsgLog("Table 132 is present, QPI=%hX\n", SmbiosTable.Type132->ProcessorBusSpeed);
|
MsgLog("Table 132 is present, QPI=%hX\n", SmbiosTable.Type132->ProcessorBusSpeed);
|
||||||
MsgLog("Change to: %hX\n", gSettings.QPI);
|
MsgLog("Change to: %hX\n", gSettings.CPU.QPI);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroMem((void*)newSmbiosTable.Type132, MAX_TABLE_SIZE);
|
ZeroMem((void*)newSmbiosTable.Type132, MAX_TABLE_SIZE);
|
||||||
@ -1963,8 +1963,8 @@ void PatchTableType132()
|
|||||||
newSmbiosTable.Type132->Hdr.Handle = 0x8400; //ugly
|
newSmbiosTable.Type132->Hdr.Handle = 0x8400; //ugly
|
||||||
|
|
||||||
// Patch ProcessorBusSpeed
|
// Patch ProcessorBusSpeed
|
||||||
if(gSettings.QPI){
|
if(gSettings.CPU.QPI){
|
||||||
newSmbiosTable.Type132->ProcessorBusSpeed = gSettings.QPI;
|
newSmbiosTable.Type132->ProcessorBusSpeed = gSettings.CPU.QPI;
|
||||||
} else {
|
} else {
|
||||||
newSmbiosTable.Type132->ProcessorBusSpeed = (UINT16)(LShiftU64(DivU64x32(gCPUStructure.ExternalClock, Kilo), 2));
|
newSmbiosTable.Type132->ProcessorBusSpeed = (UINT16)(LShiftU64(DivU64x32(gCPUStructure.ExternalClock, Kilo), 2));
|
||||||
}
|
}
|
||||||
|
@ -755,8 +755,8 @@ void LOADER_ENTRY::StartLoader()
|
|||||||
if (EFI_ERROR(Status)) {
|
if (EFI_ERROR(Status)) {
|
||||||
DBG(" - ... but: %s\n", efiStrError(Status));
|
DBG(" - ... but: %s\n", efiStrError(Status));
|
||||||
} else {
|
} else {
|
||||||
if ((gSettings.CpuFreqMHz > 100) && (gSettings.CpuFreqMHz < 20000)) {
|
if ((gSettings.CPU.CpuFreqMHz > 100) && (gSettings.CPU.CpuFreqMHz < 20000)) {
|
||||||
gCPUStructure.MaxSpeed = gSettings.CpuFreqMHz;
|
gCPUStructure.MaxSpeed = gSettings.CPU.CpuFreqMHz;
|
||||||
}
|
}
|
||||||
//CopyMem(KernelAndKextPatches,
|
//CopyMem(KernelAndKextPatches,
|
||||||
// &gSettings.KernelAndKextPatches,
|
// &gSettings.KernelAndKextPatches,
|
||||||
@ -772,8 +772,8 @@ void LOADER_ENTRY::StartLoader()
|
|||||||
DivU64x32(gCPUStructure.ExternalClock + Kilo - 1, Kilo),
|
DivU64x32(gCPUStructure.ExternalClock + Kilo - 1, Kilo),
|
||||||
DivU64x32(gCPUStructure.FSBFrequency + Kilo - 1, Kilo),
|
DivU64x32(gCPUStructure.FSBFrequency + Kilo - 1, Kilo),
|
||||||
gCPUStructure.MaxSpeed);
|
gCPUStructure.MaxSpeed);
|
||||||
if (gSettings.QPI) {
|
if (gSettings.CPU.QPI) {
|
||||||
DBG(" QPI: hw.busfrequency=%lluHz\n", MultU64x32(gSettings.QPI, Mega));
|
DBG(" QPI: hw.busfrequency=%lluHz\n", MultU64x32(gSettings.CPU.QPI, Mega));
|
||||||
} else {
|
} else {
|
||||||
// to match the value of hw.busfrequency in the terminal
|
// to match the value of hw.busfrequency in the terminal
|
||||||
DBG(" PIS: hw.busfrequency=%lluHz\n", MultU64x32(LShiftU64(DivU64x32(gCPUStructure.ExternalClock + Kilo - 1, Kilo), 2), Mega));
|
DBG(" PIS: hw.busfrequency=%lluHz\n", MultU64x32(LShiftU64(DivU64x32(gCPUStructure.ExternalClock + Kilo - 1, Kilo), 2), Mega));
|
||||||
@ -2613,6 +2613,18 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings)
|
|||||||
}
|
}
|
||||||
DBG("Custom boot %s (0x%llX)\n", CustomBootModeToStr(GlobalConfig.CustomBoot), (uintptr_t)GlobalConfig.CustomLogo);
|
DBG("Custom boot %s (0x%llX)\n", CustomBootModeToStr(GlobalConfig.CustomBoot), (uintptr_t)GlobalConfig.CustomLogo);
|
||||||
|
|
||||||
|
GlobalConfig.EnableC6 = gSettings.getEnableC6();
|
||||||
|
GlobalConfig.EnableC4 = gSettings.getEnableC4();
|
||||||
|
GlobalConfig.EnableC2 = gSettings.getEnableC2();
|
||||||
|
GlobalConfig.C3Latency = gSettings.getEnableC6();
|
||||||
|
|
||||||
|
if (gSettings.CPU.HWPEnable && (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_U)) {
|
||||||
|
GlobalConfig.HWP = TRUE;
|
||||||
|
AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1);
|
||||||
|
if ( gSettings.CPU.HWPValue.isDefined() ) {
|
||||||
|
AsmWriteMsr64 (MSR_IA32_HWP_REQUEST, gSettings.CPU.HWPValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
@ -3070,13 +3082,13 @@ RefitMain (IN EFI_HANDLE ImageHandle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (gSettings.QEMU) {
|
if (gSettings.CPU.QEMU) {
|
||||||
// UINT64 Msrflex = 0ULL;
|
// UINT64 Msrflex = 0ULL;
|
||||||
|
|
||||||
if (!gSettings.UserChange) {
|
if (!gSettings.CPU.UserChange) {
|
||||||
gSettings.BusSpeed = 200000;
|
gSettings.CPU.BusSpeed = 200000;
|
||||||
}
|
}
|
||||||
gCPUStructure.MaxRatio = (UINT32)DivU64x32(gCPUStructure.TSCCalibr, gSettings.BusSpeed * Kilo);
|
gCPUStructure.MaxRatio = (UINT32)DivU64x32(gCPUStructure.TSCCalibr, gSettings.CPU.BusSpeed * Kilo);
|
||||||
DBG("Set MaxRatio for QEMU: %d\n", gCPUStructure.MaxRatio);
|
DBG("Set MaxRatio for QEMU: %d\n", gCPUStructure.MaxRatio);
|
||||||
gCPUStructure.MaxRatio *= 10;
|
gCPUStructure.MaxRatio *= 10;
|
||||||
gCPUStructure.MinRatio = 60;
|
gCPUStructure.MinRatio = 60;
|
||||||
|
@ -164,15 +164,15 @@ void FillInputs(BOOLEAN New)
|
|||||||
InputItems[InputItemsCount].ItemType = BoolValue; //9
|
InputItems[InputItemsCount].ItemType = BoolValue; //9
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.Generate.GenerateCStates;
|
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.Generate.GenerateCStates;
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //10
|
InputItems[InputItemsCount].ItemType = BoolValue; //10
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.EnableC2;
|
InputItems[InputItemsCount++].BValue = GlobalConfig.EnableC2;
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //11
|
InputItems[InputItemsCount].ItemType = BoolValue; //11
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.EnableC4;
|
InputItems[InputItemsCount++].BValue = GlobalConfig.EnableC4;
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //12
|
InputItems[InputItemsCount].ItemType = BoolValue; //12
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.EnableC6;
|
InputItems[InputItemsCount++].BValue = GlobalConfig.EnableC6;
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //13
|
InputItems[InputItemsCount].ItemType = BoolValue; //13
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.EnableISS;
|
InputItems[InputItemsCount++].BValue = gSettings.ACPI.SSDT.EnableISS;
|
||||||
InputItems[InputItemsCount].ItemType = Decimal; //14
|
InputItems[InputItemsCount].ItemType = Decimal; //14
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.QPI);
|
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.CPU.QPI);
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //15
|
InputItems[InputItemsCount].ItemType = BoolValue; //15
|
||||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.PatchNMI;
|
InputItems[InputItemsCount++].BValue = gSettings.ACPI.PatchNMI;
|
||||||
InputItems[InputItemsCount].ItemType = BoolValue; //16
|
InputItems[InputItemsCount].ItemType = BoolValue; //16
|
||||||
@ -182,8 +182,8 @@ void FillInputs(BOOLEAN New)
|
|||||||
InputItems[InputItemsCount].ItemType = Hex; //18
|
InputItems[InputItemsCount].ItemType = Hex; //18
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%hX", gSettings.BacklightLevel);
|
InputItems[InputItemsCount++].SValue.SWPrintf("0x%hX", gSettings.BacklightLevel);
|
||||||
InputItems[InputItemsCount].ItemType = Decimal; //19
|
InputItems[InputItemsCount].ItemType = Decimal; //19
|
||||||
if (gSettings.BusSpeed > 20000) {
|
if (gSettings.CPU.BusSpeed > 20000) {
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.BusSpeed);
|
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.CPU.BusSpeed);
|
||||||
} else {
|
} else {
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%06llu", gCPUStructure.ExternalClock);
|
InputItems[InputItemsCount++].SValue.SWPrintf("%06llu", gCPUStructure.ExternalClock);
|
||||||
}
|
}
|
||||||
@ -330,11 +330,11 @@ void FillInputs(BOOLEAN New)
|
|||||||
InputItems[InputItemsCount++].BValue = gSettings.USBFixOwnership;
|
InputItems[InputItemsCount++].BValue = gSettings.USBFixOwnership;
|
||||||
|
|
||||||
InputItems[InputItemsCount].ItemType = Hex; //75
|
InputItems[InputItemsCount].ItemType = Hex; //75
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", gSettings.ACPI.SSDT.C3Latency);
|
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", GlobalConfig.C3Latency);
|
||||||
InputItems[InputItemsCount].ItemType = Decimal; //76
|
InputItems[InputItemsCount].ItemType = Decimal; //76
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.EnabledCores);
|
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.EnabledCores);
|
||||||
InputItems[InputItemsCount].ItemType = Decimal; //77
|
InputItems[InputItemsCount].ItemType = Decimal; //77
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.SavingMode);
|
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.CPU.SavingMode);
|
||||||
|
|
||||||
InputItems[InputItemsCount].ItemType = ASString; //78
|
InputItems[InputItemsCount].ItemType = ASString; //78
|
||||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gSettings.ProductName.c_str());
|
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gSettings.ProductName.c_str());
|
||||||
@ -529,15 +529,15 @@ void ApplyInputs(void)
|
|||||||
}
|
}
|
||||||
i++; //10
|
i++; //10
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.ACPI.SSDT.EnableC2 = InputItems[i].BValue;
|
GlobalConfig.EnableC2 = InputItems[i].BValue;
|
||||||
}
|
}
|
||||||
i++; //11
|
i++; //11
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.ACPI.SSDT.EnableC4 = InputItems[i].BValue;
|
GlobalConfig.EnableC4 = InputItems[i].BValue;
|
||||||
}
|
}
|
||||||
i++; //12
|
i++; //12
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.ACPI.SSDT.EnableC6 = InputItems[i].BValue;
|
GlobalConfig.EnableC6 = InputItems[i].BValue;
|
||||||
}
|
}
|
||||||
i++; //13
|
i++; //13
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
@ -545,8 +545,8 @@ void ApplyInputs(void)
|
|||||||
}
|
}
|
||||||
i++; //14
|
i++; //14
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.QPI = (UINT16)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
gSettings.CPU.QPI = (UINT16)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
||||||
DBG("applied QPI=%d\n", gSettings.QPI);
|
DBG("applied QPI=%d\n", gSettings.CPU.QPI);
|
||||||
}
|
}
|
||||||
i++; //15
|
i++; //15
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
@ -568,8 +568,8 @@ void ApplyInputs(void)
|
|||||||
}
|
}
|
||||||
i++; //19
|
i++; //19
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.BusSpeed = (UINT32)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
gSettings.CPU.BusSpeed = (UINT32)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
||||||
DBG("applied BusSpeed=%d\n", gSettings.BusSpeed);
|
DBG("applied BusSpeed=%d\n", gSettings.CPU.BusSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
i = 19;
|
i = 19;
|
||||||
@ -785,7 +785,7 @@ void ApplyInputs(void)
|
|||||||
}
|
}
|
||||||
i++; //75
|
i++; //75
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.ACPI.SSDT.C3Latency = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
GlobalConfig.C3Latency = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
i++; //76
|
i++; //76
|
||||||
@ -794,7 +794,7 @@ void ApplyInputs(void)
|
|||||||
}
|
}
|
||||||
i++; //77
|
i++; //77
|
||||||
if (InputItems[i].Valid) {
|
if (InputItems[i].Valid) {
|
||||||
gSettings.SavingMode = (UINT8)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
gSettings.CPU.SavingMode = (UINT8)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
i++; //78
|
i++; //78
|
||||||
|
Loading…
Reference in New Issue
Block a user