提交 2657d54c 编写于 作者: V vit9696

OcDataHubLib: Specify non 24 MHz ARTFrequency to macOS

上级 5ce54f3a
......@@ -75,9 +75,9 @@ typedef struct {
// If unreported, the frequency is looked up based on the model and family.
//
// Nominal Core Crystal Clock Frequency for known processor families:
// Intel Xeon Scalable with CPUID signature 0x0655: 25 Mhz
// 6th and 7th generation Intel Core & Xeon W: 24 Mhz
// Nex Generation Intel Atom with CPUID 0x065C: 19.2 Mhz
// Intel Xeon Scalable with CPUID signature 0x0655: 25 Mhz (server segment)
// 6th and 7th generation Intel Core & Xeon W: 24 Mhz (client segment)
// Nex Generation Intel Atom with CPUID 0x065C: 19.2 Mhz (atom segment)
//
UINT64 ARTFrequency;
......
......@@ -21,9 +21,15 @@
#define BASE_NHM_CLOCK_SOURCE 133333333ULL
//
// Skylake bus clock is fixed at 100MHz
// This constant is also known as BASE_ART_CLOCK_SOURCE in XNU
//
#define CLIENT_ART_CLOCK_SOURCE 24000000ULL
#define SERVER_ART_CLOCK_SOURCE 25000000ULL
#define ATOM_ART_CLOCK_SOURCE 19200000ULL
#define BASE_ART_CLOCK_SOURCE 24000000ULL
#define DEFAULT_ART_CLOCK_SOURCE CLIENT_ART_CLOCK_SOURCE
#define MSR_PIC_MSG_CONTROL 0x2E
#define MSR_CORE_THREAD_COUNT 0x35
......
......@@ -692,13 +692,13 @@ ScanIntelProcessor (
case CPU_MODEL_SKYLAKE_DT:
case CPU_MODEL_KABYLAKE:
case CPU_MODEL_KABYLAKE_DT:
Cpu->ARTFrequency = 24000000ULL; // 24 Mhz
Cpu->ARTFrequency = CLIENT_ART_CLOCK_SOURCE; // 24 Mhz
break;
case CPU_MODEL_DENVERTON:
Cpu->ARTFrequency = 25000000ULL; // 25 Mhz
Cpu->ARTFrequency = SERVER_ART_CLOCK_SOURCE; // 25 Mhz
break;
case CPU_MODEL_GOLDMONT:
Cpu->ARTFrequency = 19200000ULL; // 19.2 Mhz
Cpu->ARTFrequency = ATOM_ART_CLOCK_SOURCE; // 19.2 Mhz
break;
}
if (Cpu->ARTFrequency > 0) {
......@@ -736,7 +736,7 @@ ScanIntelProcessor (
// it's 24 Mhz like most Intel chips to date.
//
if (Cpu->ARTFrequency == 0) {
Cpu->ARTFrequency = 24000000ULL; // 24 Mhz
Cpu->ARTFrequency = DEFAULT_ART_CLOCK_SOURCE;
DEBUG ((DEBUG_INFO, "OCCPU: Fallback Core Crystal Clock Frequency %LuHz\n", Cpu->ARTFrequency));
}
......
......@@ -14,6 +14,7 @@
#include <Uefi.h>
#include <ProcessorInfo.h>
#include <IndustryStandard/Pci.h>
#include <Guid/ApplePlatformInfo.h>
......@@ -279,6 +280,9 @@ UpdateDataHub (
Data->FSBFrequency = &CpuInfo->FSBFrequency;
}
DataHubSetAppleProcessorData (DataHub, OC_FSB_FREQUENCY, Data->FSBFrequency, sizeof (*Data->FSBFrequency));
if (Data->ARTFrequency == NULL && CpuInfo->ARTFrequency > 0 && CpuInfo->ARTFrequency != DEFAULT_ART_CLOCK_SOURCE) {
Data->ARTFrequency = &CpuInfo->ARTFrequency;
}
DataHubSetAppleProcessorData (DataHub, OC_ART_FREQUENCY, Data->ARTFrequency, sizeof (*Data->ARTFrequency));
DataHubSetAppleMiscData (DataHub, OC_DEVICE_PATHS_SUPPORTED, Data->DevicePathsSupported, sizeof (*Data->DevicePathsSupported));
DataHubSetAppleMiscData (DataHub, OC_SMC_REVISION, Data->SmcRevision, OC_SMC_REVISION_SIZE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册