mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2025-02-02 22:51:28 +01:00
merge conflicts
Signed-off-by: SergeySlice <sergey.slice@gmail.com>
This commit is contained in:
commit
ea0c6838f0
@ -58,7 +58,7 @@ VideoBiosLock (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
VideoBiosPatchBytes (
|
||||
IN VBIOS_PATCH_BYTES *FindAndReplace,
|
||||
IN JCONST VBIOS_PATCH_BYTES *FindAndReplace,
|
||||
IN UINTN FindAndReplaceCount
|
||||
);
|
||||
|
||||
|
@ -202,7 +202,7 @@ VideoBiosLock (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
VideoBiosPatchBytes (
|
||||
IN VBIOS_PATCH_BYTES *FindAndReplace,
|
||||
IN JCONST VBIOS_PATCH_BYTES *FindAndReplace,
|
||||
IN UINTN FindAndReplaceCount
|
||||
)
|
||||
{
|
||||
|
@ -323,6 +323,12 @@
|
||||
9AC7809A24178F02005CDD5C /* menu_items.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC7809924178F02005CDD5C /* menu_items.cpp */; };
|
||||
9AC780B32417EE4B005CDD5C /* global_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC780B22417EE4A005CDD5C /* global_test.cpp */; };
|
||||
9AC780B52417EE53005CDD5C /* global_test.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC780B42417EE53005CDD5C /* global_test.h */; };
|
||||
9ACE2CC0260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9ACE2CBE260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp */; };
|
||||
9ACE2CC1260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9ACE2CBE260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp */; };
|
||||
9ACE2CC2260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9ACE2CBE260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp */; };
|
||||
9ACE2CC3260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ACE2CBF260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h */; };
|
||||
9ACE2CC4260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ACE2CBF260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h */; };
|
||||
9ACE2CC5260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ACE2CBF260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h */; };
|
||||
9AD1F9B425CBBD3D00EC1BB3 /* Volumes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AD1F9B225CBBD3C00EC1BB3 /* Volumes.h */; };
|
||||
9AD1F9B525CBBD3D00EC1BB3 /* Volumes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AD1F9B225CBBD3C00EC1BB3 /* Volumes.h */; };
|
||||
9AD1F9B625CBBD3D00EC1BB3 /* Volumes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AD1F9B225CBBD3C00EC1BB3 /* Volumes.h */; };
|
||||
@ -940,6 +946,8 @@
|
||||
9AC7809924178F02005CDD5C /* menu_items.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = menu_items.cpp; sourceTree = "<group>"; };
|
||||
9AC780B22417EE4A005CDD5C /* global_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = global_test.cpp; sourceTree = "<group>"; };
|
||||
9AC780B42417EE53005CDD5C /* global_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = global_test.h; sourceTree = "<group>"; };
|
||||
9ACE2CBE260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = REFIT_MAINMENU_SCREEN.cpp; sourceTree = "<group>"; };
|
||||
9ACE2CBF260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REFIT_MAINMENU_SCREEN.h; sourceTree = "<group>"; };
|
||||
9AD1F9B225CBBD3C00EC1BB3 /* Volumes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Volumes.h; sourceTree = "<group>"; };
|
||||
9AD1F9B325CBBD3C00EC1BB3 /* Volumes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Volumes.cpp; sourceTree = "<group>"; };
|
||||
9AD4694C2452B5A600D6D0DB /* Efi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Efi.h; sourceTree = "<group>"; };
|
||||
@ -1351,6 +1359,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9AC77F8D24176C04005CDD5C /* menu_items */,
|
||||
9ACE2CBE260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp */,
|
||||
9ACE2CBF260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h */,
|
||||
9AC77F9124176C04005CDD5C /* REFIT_MENU_SCREEN.cpp */,
|
||||
9AC77F9024176C04005CDD5C /* REFIT_MENU_SCREEN.h */,
|
||||
9A0986352438A15400826276 /* shared_with_menu.cpp */,
|
||||
@ -1526,6 +1536,7 @@
|
||||
9AC7807F24176C04005CDD5C /* menu.h in Headers */,
|
||||
9AC7806224176C04005CDD5C /* MSUEFICADB.h in Headers */,
|
||||
9AC7800324176C04005CDD5C /* Hibernate.h in Headers */,
|
||||
9ACE2CC3260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */,
|
||||
9A105B2524464A830006DE06 /* VectorGraphics.h in Headers */,
|
||||
9AA3918C25CC72900099DC1F /* KextList.h in Headers */,
|
||||
9A28CD35241BC0DF00F3D247 /* strlen_test.h in Headers */,
|
||||
@ -1593,6 +1604,7 @@
|
||||
9AF41585242CD75C00D2644C /* MSKEK.h in Headers */,
|
||||
9A105B2624464A830006DE06 /* VectorGraphics.h in Headers */,
|
||||
9AF41586242CD75C00D2644C /* menu_items.h in Headers */,
|
||||
9ACE2CC4260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */,
|
||||
9AF41587242CD75C00D2644C /* XTheme.h in Headers */,
|
||||
9AF41589242CD75C00D2644C /* nvidia.h in Headers */,
|
||||
9AF4158A242CD75C00D2644C /* operatorNewDelete.h in Headers */,
|
||||
@ -1684,6 +1696,7 @@
|
||||
9AF41662242CDA5800D2644C /* MSKEK.h in Headers */,
|
||||
9A105B2724464A830006DE06 /* VectorGraphics.h in Headers */,
|
||||
9AF41663242CDA5800D2644C /* menu_items.h in Headers */,
|
||||
9ACE2CC5260DA87B00551963 /* REFIT_MAINMENU_SCREEN.h in Headers */,
|
||||
9AF41664242CDA5800D2644C /* XTheme.h in Headers */,
|
||||
9AF41666242CDA5800D2644C /* nvidia.h in Headers */,
|
||||
9AF41667242CDA5800D2644C /* operatorNewDelete.h in Headers */,
|
||||
@ -1950,6 +1963,7 @@
|
||||
9AC7808424176C04005CDD5C /* globals_dtor.cpp in Sources */,
|
||||
9AC7803024176C04005CDD5C /* DevicePath.cpp in Sources */,
|
||||
9AC77FC324176C04005CDD5C /* XArray_tests.cpp in Sources */,
|
||||
9ACE2CC0260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */,
|
||||
9AC7800A24176C04005CDD5C /* StateGenerator.cpp in Sources */,
|
||||
9AC7805C24176C04005CDD5C /* XImage.cpp in Sources */,
|
||||
9AD1F9B725CBBD3D00EC1BB3 /* Volumes.cpp in Sources */,
|
||||
@ -2059,6 +2073,7 @@
|
||||
9AF415EB242CD75C00D2644C /* Hibernate.cpp in Sources */,
|
||||
9AF415ED242CD75C00D2644C /* DataHubCpu.cpp in Sources */,
|
||||
9AF415EE242CD75C00D2644C /* hda.cpp in Sources */,
|
||||
9ACE2CC1260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */,
|
||||
9AF415EF242CD75C00D2644C /* egemb_icons_dark.cpp in Sources */,
|
||||
9AF415F0242CD75C00D2644C /* scroll_images.cpp in Sources */,
|
||||
9AF415F1242CD75C00D2644C /* XStringArray.cpp in Sources */,
|
||||
@ -2168,6 +2183,7 @@
|
||||
9AF416C8242CDA5800D2644C /* Hibernate.cpp in Sources */,
|
||||
9AF416CA242CDA5800D2644C /* DataHubCpu.cpp in Sources */,
|
||||
9AF416CB242CDA5800D2644C /* hda.cpp in Sources */,
|
||||
9ACE2CC2260DA87B00551963 /* REFIT_MAINMENU_SCREEN.cpp in Sources */,
|
||||
9AF416CC242CDA5800D2644C /* egemb_icons_dark.cpp in Sources */,
|
||||
9AF416CD242CDA5800D2644C /* scroll_images.cpp in Sources */,
|
||||
9AF416CE242CDA5800D2644C /* XStringArray.cpp in Sources */,
|
||||
@ -2370,6 +2386,12 @@
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
USE_HEADERMAP = NO;
|
||||
VALID_ARCHS = x86_64;
|
||||
WARNING_CFLAGS = (
|
||||
"-Wno-c99-extensions",
|
||||
"-Wno-gnu-zero-variadic-macro-arguments",
|
||||
"-Wignored-qualifiers",
|
||||
"-Wreorder",
|
||||
);
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -2456,6 +2478,12 @@
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
USE_HEADERMAP = NO;
|
||||
VALID_ARCHS = x86_64;
|
||||
WARNING_CFLAGS = (
|
||||
"-Wno-c99-extensions",
|
||||
"-Wno-gnu-zero-variadic-macro-arguments",
|
||||
"-Wignored-qualifiers",
|
||||
"-Wreorder",
|
||||
);
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
@ -16192,7 +16192,12 @@
|
||||
OTHER_LDFLAGS = "";
|
||||
SDKROOT = macosx;
|
||||
USE_HEADERMAP = NO;
|
||||
WARNING_CFLAGS = "-Wno-c99-extensions";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wno-c99-extensions",
|
||||
"-Wno-gnu-zero-variadic-macro-arguments",
|
||||
"-Wignored-qualifiers",
|
||||
"-Wreorder",
|
||||
);
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -16304,7 +16309,12 @@
|
||||
OTHER_LDFLAGS = "";
|
||||
SDKROOT = macosx;
|
||||
USE_HEADERMAP = NO;
|
||||
WARNING_CFLAGS = "-Wno-c99-extensions";
|
||||
WARNING_CFLAGS = (
|
||||
"-Wno-c99-extensions",
|
||||
"-Wno-gnu-zero-variadic-macro-arguments",
|
||||
"-Wignored-qualifiers",
|
||||
"-Wreorder",
|
||||
);
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
@ -184,11 +184,11 @@ OvrSetVariable(
|
||||
EFI_STATUS Status;
|
||||
UINTN i;
|
||||
|
||||
for (i = 0; i < BlockRtVariableArray.size(); i++) {
|
||||
if (!CompareGuid(&BlockRtVariableArray[i].VarGuid, VendorGuid)) {
|
||||
for (i = 0; i < gSettings.RtVariables.BlockRtVariableArray.size(); i++) {
|
||||
if (!CompareGuid(&gSettings.RtVariables.BlockRtVariableArray[i].VarGuid, VendorGuid)) {
|
||||
continue;
|
||||
}
|
||||
if (BlockRtVariableArray[i].Name.isEmpty() || BlockRtVariableArray[i].Name[0] == L'*' || BlockRtVariableArray[i].Name == LStringW(VariableName) ) {
|
||||
if (gSettings.RtVariables.BlockRtVariableArray[i].Name.isEmpty() || gSettings.RtVariables.BlockRtVariableArray[i].Name[0] == L'*' || gSettings.RtVariables.BlockRtVariableArray[i].Name == LStringW(VariableName) ) {
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
@ -230,7 +230,7 @@ SetVariablesForOSX(LOADER_ENTRY *Entry)
|
||||
//
|
||||
// firmware Variables
|
||||
//
|
||||
if (BlockRtVariableArray.size() > 0) {
|
||||
if (gSettings.RtVariables.BlockRtVariableArray.size() > 0) {
|
||||
OvrRuntimeServices(gRT);
|
||||
}
|
||||
|
||||
@ -243,23 +243,23 @@ SetVariablesForOSX(LOADER_ENTRY *Entry)
|
||||
|
||||
Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
|
||||
|
||||
if (gSettings.RtMLB.notEmpty()) {
|
||||
if ( gSettings.RtMLB.length() != 17 ) {
|
||||
if (GlobalConfig.RtMLB.notEmpty()) {
|
||||
if ( GlobalConfig.RtMLB.length() != 17 ) {
|
||||
DBG("** Warning: Your MLB is not suitable for iMessage(must be 17 chars long) !\n");
|
||||
}
|
||||
|
||||
SetNvramXString8(L"MLB",
|
||||
&gEfiAppleNvramGuid,
|
||||
Attributes,
|
||||
gSettings.RtMLB);
|
||||
GlobalConfig.RtMLB);
|
||||
}
|
||||
|
||||
if (gSettings.RtROM.notEmpty()) {
|
||||
if (GlobalConfig.RtROM.notEmpty()) {
|
||||
SetNvramVariable(L"ROM",
|
||||
&gEfiAppleNvramGuid,
|
||||
Attributes,
|
||||
gSettings.RtROM.size(),
|
||||
gSettings.RtROM.vdata());
|
||||
GlobalConfig.RtROM.size(),
|
||||
GlobalConfig.RtROM.vdata());
|
||||
}
|
||||
|
||||
SetNvramVariable(L"FirmwareFeatures",
|
||||
@ -375,16 +375,16 @@ SetVariablesForOSX(LOADER_ENTRY *Entry)
|
||||
}
|
||||
|
||||
// Hack for recovery by Asgorath
|
||||
if (gSettings.CsrActiveConfig != 0xFFFF) {
|
||||
SetNvramVariable(L"csr-active-config", &gEfiAppleBootGuid, Attributes, sizeof(gSettings.CsrActiveConfig), &gSettings.CsrActiveConfig);
|
||||
if (gSettings.RtVariables.CsrActiveConfig != 0xFFFF) {
|
||||
SetNvramVariable(L"csr-active-config", &gEfiAppleBootGuid, Attributes, sizeof(gSettings.RtVariables.CsrActiveConfig), &gSettings.RtVariables.CsrActiveConfig);
|
||||
}
|
||||
/*
|
||||
if (gSettings.BooterConfig != 0) {
|
||||
SetNvramVariable(L"bootercfg", &gEfiAppleBootGuid, Attributes, sizeof(gSettings.BooterConfig), &gSettings.BooterConfig);
|
||||
if (gSettings.RtVariables.BooterConfig != 0) {
|
||||
SetNvramVariable(L"bootercfg", &gEfiAppleBootGuid, Attributes, sizeof(gSettings.RtVariables.BooterConfig), &gSettings.RtVariables.BooterConfig);
|
||||
}
|
||||
*/
|
||||
if ( gSettings.BooterCfgStr.notEmpty() ) {
|
||||
SetNvramXString8(L"bootercfg", &gEfiAppleBootGuid, Attributes, gSettings.BooterCfgStr);
|
||||
if ( gSettings.RtVariables.BooterCfgStr.notEmpty() ) {
|
||||
SetNvramXString8(L"bootercfg", &gEfiAppleBootGuid, Attributes, gSettings.RtVariables.BooterCfgStr);
|
||||
} else {
|
||||
DeleteNvramVariable(L"bootercfg", &gEfiAppleBootGuid);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ EFI_STATUS EFIAPI GetEdidImpl(
|
||||
IN OUT UINT8 **Edid
|
||||
)
|
||||
{
|
||||
*Edid = gSettings.CustomEDID;
|
||||
*Edid = gSettings.Graphics.EDID.CustomEDID.data();
|
||||
*EdidSize = 128;
|
||||
*Attributes = 0;
|
||||
if (*Edid) {
|
||||
@ -91,14 +91,14 @@ void DebugDumpEDID(CONST CHAR8 *Message, INTN N)
|
||||
DBG("%03lld |", i);
|
||||
for (j=0; j<10; j++) {
|
||||
if (i+j > N-1) break;
|
||||
DBG(" %02hhX", gSettings.CustomEDID[i+j]);
|
||||
DBG(" %02hhX", gSettings.Graphics.EDID.CustomEDID[i+j]);
|
||||
}
|
||||
DBG("\n");
|
||||
}
|
||||
}
|
||||
|
||||
//Used at OS start
|
||||
// if EFI_SUCCESS then result in gSettings.CustomEDID != NULL
|
||||
// if EFI_SUCCESS then result in gSettings.Graphics.EDID.CustomEDID != NULL
|
||||
// first priority is CustomEDID
|
||||
// second is UEFI EDID from EdidDiscoveredProtocol
|
||||
EFI_STATUS GetEdidDiscovered(void)
|
||||
@ -108,8 +108,8 @@ EFI_STATUS GetEdidDiscovered(void)
|
||||
UINT8 NewChecksum;
|
||||
//gEDID = NULL;
|
||||
|
||||
if (gSettings.CustomEDID) {
|
||||
N = gSettings.CustomEDIDsize;
|
||||
if (gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
N = gSettings.Graphics.EDID.CustomEDID.size();
|
||||
DebugDumpEDID("--- Custom EDID Table", N);
|
||||
} else {
|
||||
Status = gBS->LocateProtocol (&gEfiEdidDiscoveredProtocolGuid, NULL, (void **)&EdidDiscovered);
|
||||
@ -121,47 +121,47 @@ EFI_STATUS GetEdidDiscovered(void)
|
||||
if (N == 0) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
gSettings.CustomEDID = (__typeof__(gSettings.CustomEDID))AllocateAlignedPages(EFI_SIZE_TO_PAGES(N), 128);
|
||||
CopyMem(gSettings.CustomEDID, EdidDiscovered->Edid, N);
|
||||
// gSettings.Graphics.EDID.CustomEDID = (__typeof__(gSettings.Graphics.EDID.CustomEDID))AllocateAlignedPages(EFI_SIZE_TO_PAGES(N), 128);
|
||||
gSettings.Graphics.EDID.CustomEDID.ncpy(EdidDiscovered->Edid, N);
|
||||
DebugDumpEDID("--- Discovered EDID Table", N);
|
||||
}
|
||||
}
|
||||
|
||||
if (gSettings.CustomEDID) {
|
||||
if (gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
// begin patching result
|
||||
if (gSettings.VendorEDID) {
|
||||
DBG(" VendorID = 0x%04hx changed to 0x%04hx\n", ((UINT16*)gSettings.CustomEDID)[4], gSettings.VendorEDID);
|
||||
((UINT16*)gSettings.CustomEDID)[4] = gSettings.VendorEDID;
|
||||
if (gSettings.Graphics.EDID.VendorEDID) {
|
||||
DBG(" VendorID = 0x%04hx changed to 0x%04hx\n", ((UINT16*)gSettings.Graphics.EDID.CustomEDID.data())[4], gSettings.Graphics.EDID.VendorEDID);
|
||||
((UINT16*)gSettings.Graphics.EDID.CustomEDID.data())[4] = gSettings.Graphics.EDID.VendorEDID;
|
||||
}
|
||||
|
||||
if (gSettings.ProductEDID) {
|
||||
DBG(" ProductID = 0x%04hx changed to 0x%04hx\n", ((UINT16*)gSettings.CustomEDID)[5], gSettings.ProductEDID);
|
||||
((UINT16*)gSettings.CustomEDID)[5] = gSettings.ProductEDID;
|
||||
if (gSettings.Graphics.EDID.ProductEDID) {
|
||||
DBG(" ProductID = 0x%04hx changed to 0x%04hx\n", ((UINT16*)gSettings.Graphics.EDID.CustomEDID.data())[5], gSettings.Graphics.EDID.ProductEDID);
|
||||
((UINT16*)gSettings.Graphics.EDID.CustomEDID.data())[5] = gSettings.Graphics.EDID.ProductEDID;
|
||||
}
|
||||
|
||||
if (gSettings.EdidFixHorizontalSyncPulseWidth) {
|
||||
DBG(" HorizontalSyncPulseWidth = 0x%02hhx changed to 0x%02hx\n", ((UINT8*)gSettings.CustomEDID)[63], gSettings.EdidFixHorizontalSyncPulseWidth);
|
||||
if (gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth) {
|
||||
DBG(" HorizontalSyncPulseWidth = 0x%02hhx changed to 0x%02hx\n", ((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[63], gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth);
|
||||
UINT8 LsBits, MsBits;
|
||||
LsBits = gSettings.EdidFixHorizontalSyncPulseWidth & 0xff;
|
||||
MsBits = (gSettings.EdidFixHorizontalSyncPulseWidth >> 8) & 0x03;
|
||||
((UINT8*)gSettings.CustomEDID)[63] = LsBits;
|
||||
LsBits = ((UINT8*)gSettings.CustomEDID)[65] & ~0x30;
|
||||
((UINT8*)gSettings.CustomEDID)[65] = LsBits | (MsBits << 4);
|
||||
LsBits = gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth & 0xff;
|
||||
MsBits = (gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth >> 8) & 0x03;
|
||||
((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[63] = LsBits;
|
||||
LsBits = ((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[65] & ~0x30;
|
||||
((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[65] = LsBits | (MsBits << 4);
|
||||
}
|
||||
|
||||
if (gSettings.EdidFixVideoInputSignal) {
|
||||
DBG(" VideoInputSignal = 0x%02hhx changed to 0x%02hhx\n", ((UINT8*)gSettings.CustomEDID)[20], gSettings.EdidFixVideoInputSignal);
|
||||
((UINT8*)gSettings.CustomEDID)[20] = gSettings.EdidFixVideoInputSignal;
|
||||
if (gSettings.Graphics.EDID.EdidFixVideoInputSignal) {
|
||||
DBG(" VideoInputSignal = 0x%02hhx changed to 0x%02hhx\n", ((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[20], gSettings.Graphics.EDID.EdidFixVideoInputSignal);
|
||||
((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[20] = gSettings.Graphics.EDID.EdidFixVideoInputSignal;
|
||||
}
|
||||
|
||||
NewChecksum = (UINT8)(256 - Checksum8(gSettings.CustomEDID, 127));
|
||||
if ((gSettings.VendorEDID) || (gSettings.ProductEDID) || (gSettings.EdidFixHorizontalSyncPulseWidth) || (gSettings.EdidFixVideoInputSignal)) {
|
||||
((UINT8*)gSettings.CustomEDID)[127] = NewChecksum;
|
||||
NewChecksum = (UINT8)(256 - Checksum8(gSettings.Graphics.EDID.CustomEDID.data(), 127));
|
||||
if ((gSettings.Graphics.EDID.VendorEDID) || (gSettings.Graphics.EDID.ProductEDID) || (gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth) || (gSettings.Graphics.EDID.EdidFixVideoInputSignal)) {
|
||||
((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[127] = NewChecksum;
|
||||
DebugDumpEDID("--- Patched EDID Table", N);
|
||||
} else if (((UINT8*)gSettings.CustomEDID)[127] != NewChecksum) {
|
||||
DBG(" Fix wrong checksum = 0x%02hhx changed to ", ((UINT8*)gSettings.CustomEDID)[127]);
|
||||
((UINT8*)gSettings.CustomEDID)[127] = NewChecksum;
|
||||
DBG("0x%02hhx\n", ((UINT8*)gSettings.CustomEDID)[127]);
|
||||
} else if (((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[127] != NewChecksum) {
|
||||
DBG(" Fix wrong checksum = 0x%02hhx changed to ", ((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[127]);
|
||||
((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[127] = NewChecksum;
|
||||
DBG("0x%02hhx\n", ((UINT8*)gSettings.Graphics.EDID.CustomEDID.data())[127]);
|
||||
DebugDumpEDID("--- Patched EDID Table", N);
|
||||
}
|
||||
}
|
||||
|
@ -2634,9 +2634,9 @@ UINT32 FIXDisplay (UINT8 *dsdt, UINT32 len, INT32 VCard)
|
||||
(
|
||||
!NeedHDMI &&
|
||||
(
|
||||
((DisplayVendor[VCard] == 0x8086) && (gSettings.InjectIntel || !gSettings.FakeIntel)) ||
|
||||
((DisplayVendor[VCard] == 0x10DE) && (gSettings.InjectNVidia || !gSettings.FakeNVidia)) ||
|
||||
((DisplayVendor[VCard] == 0x1002) && (gSettings.InjectATI || !gSettings.FakeATI))
|
||||
((DisplayVendor[VCard] == 0x8086) && (gSettings.Graphics.InjectAsDict.InjectIntel || !gSettings.FakeIntel)) ||
|
||||
((DisplayVendor[VCard] == 0x10DE) && (gSettings.Graphics.InjectAsDict.InjectNVidia || !gSettings.FakeNVidia)) ||
|
||||
((DisplayVendor[VCard] == 0x1002) && (gSettings.Graphics.InjectAsDict.InjectATI || !gSettings.FakeATI))
|
||||
)
|
||||
)
|
||||
) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
|
||||
#include "../refit/lib.h"
|
||||
#include "Net.h"
|
||||
#include "../Platform/Settings.h"
|
||||
|
||||
#ifndef DEBUG_MAC
|
||||
#ifndef DEBUG_ALL
|
||||
@ -25,8 +26,6 @@ UINT8 gLanMac[4][6]; // their MAC addresses
|
||||
UINTN nLanPaths; // number of UEFI LAN
|
||||
|
||||
|
||||
extern BOOLEAN GetLegacyLanAddress;
|
||||
|
||||
//Marvell Yukon
|
||||
#define B2_MAC_1 0x0100 /* NA reg MAC Address 1 */
|
||||
#define B2_MAC_2 0x0108 /* NA reg MAC Address 2 */
|
||||
@ -152,7 +151,7 @@ GetMacAddress()
|
||||
if (HandleBuffer != NULL) {
|
||||
FreePool(HandleBuffer);
|
||||
}
|
||||
if (!Found && GetLegacyLanAddress) {
|
||||
if (!Found && gSettings.RtVariables.GetLegacyLanAddress()) {
|
||||
////
|
||||
//
|
||||
// Legacy boot. Get MAC-address from hardwaredirectly
|
||||
|
@ -92,7 +92,6 @@ CHAR16 *ConfigsList[20];
|
||||
UINTN DsdtsNum = 0;
|
||||
CHAR16 *DsdtsList[20];
|
||||
XObjArray<HDA_OUTPUTS> AudioList;
|
||||
XObjArray<RT_VARIABLES> BlockRtVariableArray;
|
||||
|
||||
// firmware
|
||||
BOOLEAN gFirmwareClover = FALSE;
|
||||
@ -101,7 +100,6 @@ UINT16 gBacklightLevel;
|
||||
//BOOLEAN defDSM;
|
||||
//UINT16 dropDSM;
|
||||
|
||||
BOOLEAN GetLegacyLanAddress;
|
||||
BOOLEAN ResumeFromCoreStorage;
|
||||
//BOOLEAN gRemapSmBiosIsRequire;
|
||||
|
||||
@ -584,7 +582,7 @@ static UINT8
|
||||
*/
|
||||
} else if ( Prop->isString() ) {
|
||||
// assume data in hex encoded string property
|
||||
UINT32 Len = (UINT32)Prop->getString()->stringValue().length() >> 1; // number of hex digits
|
||||
size_t Len = (UINT32)Prop->getString()->stringValue().length() >> 1; // number of hex digits
|
||||
Data = (__typeof__(Data))AllocateZeroPool(Len); // 2 chars per byte, one more byte for odd number
|
||||
Len = hex2bin(Prop->getString()->stringValue(), Data, Len);
|
||||
|
||||
@ -2406,44 +2404,46 @@ GetEDIDSettings(const TagDict* DictPointer, SETTINGS_DATA& gSettings)
|
||||
Dict = DictPointer->dictPropertyForKey("EDID");
|
||||
if (Dict != NULL) {
|
||||
Prop = Dict->propertyForKey("Inject");
|
||||
gSettings.InjectEDID = IsPropertyNotNullAndTrue(Prop); // default = false!
|
||||
gSettings.Graphics.EDID.InjectEDID = IsPropertyNotNullAndTrue(Prop); // default = false!
|
||||
|
||||
if (gSettings.InjectEDID){
|
||||
if (gSettings.Graphics.EDID.InjectEDID){
|
||||
//DBG("Inject EDID\n");
|
||||
Prop = Dict->propertyForKey("Custom");
|
||||
if (Prop != NULL) {
|
||||
gSettings.CustomEDID = GetDataSetting(Dict, "Custom", &j);
|
||||
UINT8* Data = GetDataSetting(Dict, "Custom", &j);
|
||||
gSettings.Graphics.EDID.CustomEDID.stealValueFrom(Data, j);
|
||||
if ((j % 128) != 0) {
|
||||
DBG(" Custom EDID has wrong length=%llu\n", j);
|
||||
gSettings.Graphics.EDID.CustomEDID.setEmpty();
|
||||
} else {
|
||||
DBG(" Custom EDID is ok\n");
|
||||
gSettings.CustomEDIDsize = (UINT16)j;
|
||||
// gSettings.CustomEDIDsize = (UINT16)j;
|
||||
// InitializeEdidOverride();
|
||||
}
|
||||
}
|
||||
|
||||
Prop = Dict->propertyForKey("VendorID");
|
||||
if (Prop) {
|
||||
gSettings.VendorEDID = (UINT16)GetPropertyAsInteger(Prop, gSettings.VendorEDID);
|
||||
//DBG(" VendorID = 0x%04lx\n", gSettings.VendorEDID);
|
||||
gSettings.Graphics.EDID.VendorEDID = (UINT16)GetPropertyAsInteger(Prop, gSettings.Graphics.EDID.VendorEDID);
|
||||
//DBG(" VendorID = 0x%04lx\n", gSettings.Graphics.EDID.VendorEDID);
|
||||
}
|
||||
|
||||
Prop = Dict->propertyForKey("ProductID");
|
||||
if (Prop) {
|
||||
gSettings.ProductEDID = (UINT16)GetPropertyAsInteger(Prop, gSettings.ProductEDID);
|
||||
//DBG(" ProductID = 0x%04lx\n", gSettings.ProductEDID);
|
||||
gSettings.Graphics.EDID.ProductEDID = (UINT16)GetPropertyAsInteger(Prop, gSettings.Graphics.EDID.ProductEDID);
|
||||
//DBG(" ProductID = 0x%04lx\n", gSettings.Graphics.EDID.ProductEDID);
|
||||
}
|
||||
|
||||
Prop = Dict->propertyForKey("HorizontalSyncPulseWidth");
|
||||
if (Prop) {
|
||||
gSettings.EdidFixHorizontalSyncPulseWidth = (UINT16)GetPropertyAsInteger(Prop, gSettings.EdidFixHorizontalSyncPulseWidth);
|
||||
//DBG(" EdidFixHorizontalSyncPulseWidth = 0x%02lx\n", gSettings.EdidFixHorizontalSyncPulseWidth);
|
||||
gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth = (UINT16)GetPropertyAsInteger(Prop, gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth);
|
||||
//DBG(" EdidFixHorizontalSyncPulseWidth = 0x%02lx\n", gSettings.Graphics.EDID.EdidFixHorizontalSyncPulseWidth);
|
||||
}
|
||||
|
||||
Prop = Dict->propertyForKey("VideoInputSignal");
|
||||
if (Prop) {
|
||||
gSettings.EdidFixVideoInputSignal = (UINT8)GetPropertyAsInteger(Prop, gSettings.EdidFixVideoInputSignal);
|
||||
//DBG(" EdidFixVideoInputSignal = 0x%02lx\n", gSettings.EdidFixVideoInputSignal);
|
||||
gSettings.Graphics.EDID.EdidFixVideoInputSignal = (UINT8)GetPropertyAsInteger(Prop, gSettings.Graphics.EDID.EdidFixVideoInputSignal);
|
||||
//DBG(" EdidFixVideoInputSignal = 0x%02lx\n", gSettings.Graphics.EDID.EdidFixVideoInputSignal);
|
||||
}
|
||||
} else {
|
||||
//DBG("Not Inject EDID\n");
|
||||
@ -2479,10 +2479,10 @@ EFI_STATUS GetEarlyUserSettings (
|
||||
// }
|
||||
// }
|
||||
|
||||
gSettings.KextPatchesAllowed = TRUE;
|
||||
gSettings.KextPatchesAllowed = TRUE; // todo move to GlobalConfig
|
||||
gSettings.KernelAndKextPatches.KPAppleRTC = TRUE;
|
||||
gSettings.KernelAndKextPatches.KPDELLSMBIOS = FALSE; // default is false
|
||||
gSettings.KernelPatchesAllowed = TRUE;
|
||||
gSettings.KernelPatchesAllowed = TRUE; // todo move to GlobalConfig
|
||||
|
||||
if (CfgDict != NULL) {
|
||||
//DBG("Loading early settings\n");
|
||||
@ -3089,7 +3089,81 @@ EFI_STATUS GetEarlyUserSettings (
|
||||
}
|
||||
}
|
||||
}
|
||||
const TagDict* GraphicsDict = CfgDict->dictPropertyForKey("Graphics");
|
||||
if (GraphicsDict != NULL) {
|
||||
|
||||
const TagStruct* Prop = GraphicsDict->propertyForKey("PatchVBios");
|
||||
gSettings.Graphics.PatchVBios = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
gSettings.Graphics.PatchVBiosBytesNew.setEmpty();
|
||||
|
||||
const TagArray* Dict2 = GraphicsDict->arrayPropertyForKey("PatchVBiosBytes"); // array of dict
|
||||
if (Dict2 != NULL) {
|
||||
INTN Count = Dict2->arrayContent().size();
|
||||
if (Count > 0) {
|
||||
UINTN FindSize = 0;
|
||||
UINTN ReplaceSize = 0;
|
||||
BOOLEAN Valid;
|
||||
// alloc space for up to 16 entries
|
||||
// gSettings.Graphics.PatchVBiosBytes = (__typeof__(gSettings.Graphics.PatchVBiosBytes))AllocateZeroPool(Count * sizeof(VBIOS_PATCH_BYTES));
|
||||
|
||||
// get all entries
|
||||
for (INTN i = 0; i < Count; i++) {
|
||||
const TagDict* dict3 = Dict2->dictElementAt(i, "Graphics/PatchVBiosBytes"_XS8);
|
||||
Valid = TRUE;
|
||||
// read entry
|
||||
VBIOS_PATCH* VBiosPatchPtr = new VBIOS_PATCH;
|
||||
VBIOS_PATCH& VBiosPatch = *VBiosPatchPtr;
|
||||
// VBiosPatch = &gSettings.Graphics.PatchVBiosBytes[gSettings.Graphics.PatchVBiosBytesCount];
|
||||
UINT8* DataSetting = GetDataSetting (dict3, "Find", &FindSize);
|
||||
VBiosPatch.Find.stealValueFrom(DataSetting, FindSize);
|
||||
DataSetting = GetDataSetting (dict3, "Replace", &ReplaceSize);
|
||||
VBiosPatch.Replace.stealValueFrom(DataSetting, ReplaceSize);
|
||||
|
||||
if ( VBiosPatch.Find.size() == 0 ) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: missing Find data\n", i);
|
||||
}
|
||||
|
||||
if ( VBiosPatch.Replace.size() == 0 ) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: missing Replace data\n", i);
|
||||
}
|
||||
|
||||
if (VBiosPatch.Find.size() != VBiosPatch.Replace.size()) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: Find and Replace data are not the same size\n", i);
|
||||
}
|
||||
|
||||
if (Valid) {
|
||||
// VBiosPatch->NumberOfBytes = FindSize;
|
||||
// go to next entry
|
||||
// ++gSettings.Graphics.PatchVBiosBytesCount;
|
||||
gSettings.Graphics.PatchVBiosBytesNew.AddReference(VBiosPatchPtr, true);
|
||||
} else {
|
||||
// error - release mem
|
||||
delete VBiosPatchPtr;
|
||||
// if (VBiosPatch->Find != NULL) {
|
||||
// FreePool(VBiosPatch->Find);
|
||||
// VBiosPatch->Find = NULL;
|
||||
// }
|
||||
// if (VBiosPatch->Replace != NULL) {
|
||||
// FreePool(VBiosPatch->Replace);
|
||||
// VBiosPatch->Replace = NULL;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
// if (gSettings.Graphics.PatchVBiosBytesCount == 0) {
|
||||
// FreePool(gSettings.Graphics.PatchVBiosBytes);
|
||||
// gSettings.Graphics.PatchVBiosBytes = NULL;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
GetEDIDSettings(GraphicsDict, gSettings);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//done until here
|
||||
@ -3097,76 +3171,6 @@ EFI_STATUS GetEarlyUserSettings (
|
||||
|
||||
|
||||
|
||||
const TagDict* GraphicsDict = CfgDict->dictPropertyForKey("Graphics");
|
||||
if (GraphicsDict != NULL) {
|
||||
|
||||
const TagStruct* Prop = GraphicsDict->propertyForKey("PatchVBios");
|
||||
gSettings.PatchVBios = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
gSettings.PatchVBiosBytesCount = 0;
|
||||
|
||||
const TagArray* Dict2 = GraphicsDict->arrayPropertyForKey("PatchVBiosBytes"); // array of dict
|
||||
if (Dict2 != NULL) {
|
||||
INTN Count = Dict2->arrayContent().size();
|
||||
if (Count > 0) {
|
||||
VBIOS_PATCH_BYTES *VBiosPatch;
|
||||
UINTN FindSize = 0;
|
||||
UINTN ReplaceSize = 0;
|
||||
BOOLEAN Valid;
|
||||
// alloc space for up to 16 entries
|
||||
gSettings.PatchVBiosBytes = (__typeof__(gSettings.PatchVBiosBytes))AllocateZeroPool(Count * sizeof(VBIOS_PATCH_BYTES));
|
||||
|
||||
// get all entries
|
||||
for (INTN i = 0; i < Count; i++) {
|
||||
const TagDict* dict3 = Dict2->dictElementAt(i, "Graphics/PatchVBiosBytes"_XS8);
|
||||
Valid = TRUE;
|
||||
// read entry
|
||||
VBiosPatch = &gSettings.PatchVBiosBytes[gSettings.PatchVBiosBytesCount];
|
||||
VBiosPatch->Find = GetDataSetting (dict3, "Find", &FindSize);
|
||||
VBiosPatch->Replace = GetDataSetting (dict3, "Replace", &ReplaceSize);
|
||||
|
||||
if (VBiosPatch->Find == NULL || FindSize == 0) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: missing Find data\n", i);
|
||||
}
|
||||
|
||||
if (VBiosPatch->Replace == NULL || ReplaceSize == 0) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: missing Replace data\n", i);
|
||||
}
|
||||
|
||||
if (FindSize != ReplaceSize) {
|
||||
Valid = FALSE;
|
||||
DBG("PatchVBiosBytes[%lld]: Find and Replace data are not the same size\n", i);
|
||||
}
|
||||
|
||||
if (Valid) {
|
||||
VBiosPatch->NumberOfBytes = FindSize;
|
||||
// go to next entry
|
||||
++gSettings.PatchVBiosBytesCount;
|
||||
} else {
|
||||
// error - release mem
|
||||
if (VBiosPatch->Find != NULL) {
|
||||
FreePool(VBiosPatch->Find);
|
||||
VBiosPatch->Find = NULL;
|
||||
}
|
||||
|
||||
if (VBiosPatch->Replace != NULL) {
|
||||
FreePool(VBiosPatch->Replace);
|
||||
VBiosPatch->Replace = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (gSettings.PatchVBiosBytesCount == 0) {
|
||||
FreePool(gSettings.PatchVBiosBytes);
|
||||
gSettings.PatchVBiosBytes = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GetEDIDSettings(GraphicsDict, gSettings);
|
||||
}
|
||||
|
||||
const TagArray* DisableDriversArray = CfgDict->arrayPropertyForKey("DisableDrivers"); // array of string
|
||||
if (DisableDriversArray != NULL) {
|
||||
@ -3192,7 +3196,7 @@ EFI_STATUS GetEarlyUserSettings (
|
||||
if (Dict2 != NULL) {
|
||||
// HDA
|
||||
const TagStruct* Prop = Dict2->propertyForKey("ResetHDA");
|
||||
gSettings.ResetHDA = IsPropertyNotNullAndTrue(Prop);
|
||||
gSettings.Devices.Audio.ResetHDA = IsPropertyNotNullAndTrue(Prop);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3205,7 +3209,7 @@ EFI_STATUS GetEarlyUserSettings (
|
||||
}else{
|
||||
if ((Prop->getString()->stringValue().equalIC("UseMacAddr0")) ||
|
||||
(Prop->getString()->stringValue().equalIC("UseMacAddr1"))) {
|
||||
GetLegacyLanAddress = TRUE;
|
||||
// gSettings.RtVariables.GetLegacyLanAddress = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4422,62 +4426,63 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
const TagStruct* Prop = GraphicsDict->propertyForKey("Inject");
|
||||
if (Prop != NULL) {
|
||||
if (IsPropertyNotNullAndTrue(Prop)) {
|
||||
gSettings.GraphicsInjector = TRUE;
|
||||
gSettings.InjectIntel = TRUE;
|
||||
gSettings.InjectATI = TRUE;
|
||||
gSettings.InjectNVidia = TRUE;
|
||||
gSettings.Graphics.InjectAsBool = true;
|
||||
// gSettings.GraphicsInjector = TRUE;
|
||||
// gSettings.InjectIntel = TRUE;
|
||||
// gSettings.InjectATI = TRUE;
|
||||
// gSettings.InjectNVidia = TRUE;
|
||||
} else if (Prop->isDict()) {
|
||||
const TagDict* Dict2 = Prop->getDict();
|
||||
const TagStruct* Prop2 = Dict2->propertyForKey("Intel");
|
||||
if (Prop2 != NULL) {
|
||||
gSettings.InjectIntel = IsPropertyNotNullAndTrue(Prop2);
|
||||
gSettings.Graphics.InjectAsDict.InjectIntel = IsPropertyNotNullAndTrue(Prop2);
|
||||
}
|
||||
|
||||
Prop2 = Dict2->propertyForKey("ATI");
|
||||
if (Prop2 != NULL) {
|
||||
gSettings.InjectATI = IsPropertyNotNullAndTrue(Prop2);
|
||||
gSettings.Graphics.InjectAsDict.InjectATI = IsPropertyNotNullAndTrue(Prop2);
|
||||
}
|
||||
|
||||
Prop2 = Dict2->propertyForKey("NVidia");
|
||||
if (Prop2 != NULL) {
|
||||
gSettings.InjectNVidia = IsPropertyNotNullAndTrue(Prop2);
|
||||
gSettings.Graphics.InjectAsDict.InjectNVidia = IsPropertyNotNullAndTrue(Prop2);
|
||||
}
|
||||
} else {
|
||||
gSettings.GraphicsInjector = FALSE;
|
||||
gSettings.InjectIntel = FALSE;
|
||||
gSettings.InjectATI = FALSE;
|
||||
gSettings.InjectNVidia = FALSE;
|
||||
// gSettings.GraphicsInjector = FALSE;
|
||||
// gSettings.InjectIntel = FALSE;
|
||||
// gSettings.InjectATI = FALSE;
|
||||
// gSettings.InjectNVidia = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("RadeonDeInit");
|
||||
gSettings.DeInit = IsPropertyNotNullAndTrue(Prop);
|
||||
gSettings.Graphics.RadeonDeInit = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("VRAM");
|
||||
gSettings.VRAM = (UINTN)GetPropertyAsInteger(Prop, (INTN)gSettings.VRAM); //Mb
|
||||
gSettings.Graphics.VRAM = (UINTN)GetPropertyAsInteger(Prop, (INTN)gSettings.Graphics.VRAM); //Mb
|
||||
//
|
||||
Prop = GraphicsDict->propertyForKey("RefCLK");
|
||||
gSettings.RefCLK = (UINT16)GetPropertyAsInteger(Prop, 0);
|
||||
gSettings.Graphics.RefCLK = (UINT16)GetPropertyAsInteger(Prop, 0);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("LoadVBios");
|
||||
gSettings.LoadVBios = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
for (i = 0; i < (INTN)NGFX; i++) {
|
||||
gGraphics[i].LoadVBios = gSettings.LoadVBios; //default
|
||||
}
|
||||
gSettings.Graphics.LoadVBios = IsPropertyNotNullAndTrue(Prop);
|
||||
//
|
||||
// for (i = 0; i < (INTN)NGFX; i++) {
|
||||
// gGraphics[i].LoadVBios = gSettings.Graphics.LoadVBios; //default
|
||||
// }
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("VideoPorts");
|
||||
gSettings.VideoPorts = (UINT16)GetPropertyAsInteger(Prop, gSettings.VideoPorts);
|
||||
gSettings.Graphics.VideoPorts = (UINT16)GetPropertyAsInteger(Prop, gSettings.Graphics.VideoPorts);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("BootDisplay");
|
||||
gSettings.BootDisplay = (INT8)GetPropertyAsInteger(Prop, -1);
|
||||
gSettings.Graphics.BootDisplay = (INT8)GetPropertyAsInteger(Prop, -1);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("FBName");
|
||||
if (Prop != NULL) {
|
||||
if ( !Prop->isString() ) {
|
||||
MsgLog("ATTENTION : property not string in FBName\n");
|
||||
}else{
|
||||
gSettings.FBName = Prop->getString()->stringValue();
|
||||
gSettings.Graphics.FBName = Prop->getString()->stringValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -4486,11 +4491,11 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
if ( !Prop->isString() ) {
|
||||
MsgLog("ATTENTION : property not string in NVCAP\n");
|
||||
}else{
|
||||
hex2bin (Prop->getString()->stringValue(), (UINT8*)&gSettings.NVCAP[0], sizeof(gSettings.NVCAP));
|
||||
hex2bin (Prop->getString()->stringValue(), (UINT8*)&gSettings.Graphics.NVCAP[0], sizeof(gSettings.Graphics.NVCAP));
|
||||
DBG("Read NVCAP:");
|
||||
|
||||
for (i = 0; i<20; i++) {
|
||||
DBG("%02hhX", gSettings.NVCAP[i]);
|
||||
DBG("%02hhX", gSettings.Graphics.NVCAP[i]);
|
||||
}
|
||||
|
||||
DBG("\n");
|
||||
@ -4503,12 +4508,12 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
if ( !Prop->isString() ) {
|
||||
MsgLog("ATTENTION : property not string in display-cfg\n");
|
||||
}else{
|
||||
hex2bin (Prop->getString()->stringValue(), (UINT8*)&gSettings.Dcfg[0], sizeof(gSettings.Dcfg));
|
||||
hex2bin (Prop->getString()->stringValue(), (UINT8*)&gSettings.Graphics.Dcfg[0], sizeof(gSettings.Graphics.Dcfg));
|
||||
}
|
||||
}
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("DualLink");
|
||||
gSettings.DualLink = (UINT32)GetPropertyAsInteger(Prop, gSettings.DualLink);
|
||||
gSettings.Graphics.DualLink = (UINT32)GetPropertyAsInteger(Prop, gSettings.Graphics.DualLink);
|
||||
|
||||
//InjectEDID - already done in earlysettings
|
||||
//No! Take again
|
||||
@ -4516,19 +4521,19 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
|
||||
// ErmaC: NvidiaGeneric
|
||||
Prop = GraphicsDict->propertyForKey("NvidiaGeneric");
|
||||
gSettings.NvidiaGeneric = IsPropertyNotNullAndTrue(Prop);
|
||||
gSettings.Graphics.NvidiaGeneric = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("NvidiaNoEFI");
|
||||
gSettings.NvidiaNoEFI = IsPropertyNotNullAndTrue(Prop);
|
||||
gSettings.Graphics.NvidiaNoEFI = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("NvidiaSingle");
|
||||
gSettings.NvidiaSingle = IsPropertyNotNullAndTrue(Prop);
|
||||
gSettings.Graphics.NvidiaSingle = IsPropertyNotNullAndTrue(Prop);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("ig-platform-id");
|
||||
gSettings.IgPlatform = (UINT32)GetPropertyAsInteger(Prop, gSettings.IgPlatform);
|
||||
gSettings.Graphics.IgPlatform = (UINT32)GetPropertyAsInteger(Prop, gSettings.Graphics.IgPlatform);
|
||||
|
||||
Prop = GraphicsDict->propertyForKey("snb-platform-id");
|
||||
gSettings.IgPlatform = (UINT32)GetPropertyAsInteger(Prop, gSettings.IgPlatform);
|
||||
gSettings.Graphics.IgPlatform = (UINT32)GetPropertyAsInteger(Prop, gSettings.Graphics.IgPlatform);
|
||||
|
||||
FillCardList(GraphicsDict); //#@ Getcardslist
|
||||
}
|
||||
@ -4555,6 +4560,10 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
if (Prop->isString()) {
|
||||
|
||||
cDeviceProperties = Prop->getString()->stringValue();
|
||||
if ( cDeviceProperties.sizeInBytesIncludingTerminator() > MAX_UINT32-1 ) {
|
||||
MsgLog("cDeviceProperties is too big");
|
||||
cDeviceProperties.setEmpty();
|
||||
}
|
||||
//-------
|
||||
#ifdef CLOVER_BUILD
|
||||
EFI_PHYSICAL_ADDRESS BufferPtr = EFI_SYSTEM_TABLE_MAX_ADDRESS; //0xFE000000;
|
||||
@ -4567,8 +4576,8 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
|
||||
if (!EFI_ERROR(Status)) {
|
||||
cProperties = (UINT8*)(UINTN)BufferPtr;
|
||||
cPropSize = (UINT32)(cDeviceProperties.length() >> 1);
|
||||
cPropSize = hex2bin(cDeviceProperties, cProperties, EFI_PAGES_TO_SIZE(EFI_SIZE_TO_PAGES (cDeviceProperties.sizeInBytes()) + 1));
|
||||
//cPropSize = (UINT32)(cDeviceProperties.length() >> 1);
|
||||
cPropSize = (UINT32)hex2bin(cDeviceProperties, cProperties, EFI_PAGES_TO_SIZE(EFI_SIZE_TO_PAGES (cDeviceProperties.sizeInBytesIncludingTerminator()))); // cast should be safe cDeviceProperties.sizeInBytesIncludingTerminator() <= MAX_UINT32-1
|
||||
DBG("Injected EFIString of length %d\n", cPropSize);
|
||||
}
|
||||
//---------
|
||||
@ -4806,7 +4815,7 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
|
||||
//Special case. In future there must be more such cases
|
||||
if ((AsciiStrStr(gSettings.ArbProperties->Key, "-platform-id") != NULL)) {
|
||||
CopyMem((CHAR8*)&gSettings.IgPlatform, gSettings.ArbProperties->Value, 4);
|
||||
CopyMem((CHAR8*)&gSettings.Graphics.IgPlatform, gSettings.ArbProperties->Value, 4);
|
||||
}
|
||||
} //for() device properties
|
||||
}
|
||||
@ -5339,7 +5348,7 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
#ifdef CLOVER_BUILD
|
||||
UINT64 msr = AsmReadMsr64(MSR_IA32_MISC_ENABLE);
|
||||
#endif
|
||||
gSettings.CPU.Turbo = 0;
|
||||
gSettings.CPU.TurboDisabled = 1;
|
||||
#ifdef CLOVER_BUILD
|
||||
msr &= ~(1ULL<<38);
|
||||
AsmWriteMsr64 (MSR_IA32_MISC_ENABLE, msr);
|
||||
@ -5348,20 +5357,20 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
}
|
||||
|
||||
// RtVariables
|
||||
gSettings.RtROM.setEmpty();
|
||||
gSettings.RtVariables.RtROMAsData.setEmpty();
|
||||
const TagDict* RtVariablesDict = CfgDict->dictPropertyForKey("RtVariables");
|
||||
if (RtVariablesDict != NULL) {
|
||||
// ROM: <data>bin data</data> or <string>base 64 encoded bin data</string>
|
||||
const TagStruct* Prop = RtVariablesDict->propertyForKey("ROM");
|
||||
if (Prop != NULL) {
|
||||
if ( Prop->isString() && Prop->getString()->stringValue().equalIC("UseMacAddr0") ) {
|
||||
gSettings.RtROM.ncpy(&gLanMac[0][0], 6);
|
||||
gSettings.RtVariables.RtROMAsString = Prop->getString()->stringValue();
|
||||
} else if ( Prop->isString() && Prop->getString()->stringValue().equalIC("UseMacAddr1") ) {
|
||||
gSettings.RtROM.ncpy(&gLanMac[1][0], 6);
|
||||
gSettings.RtVariables.RtROMAsString = Prop->getString()->stringValue();
|
||||
} else if ( Prop->isString() || Prop->isData() ) { // GetDataSetting accept both
|
||||
UINTN ROMLength = 0;
|
||||
void* ROM = GetDataSetting(RtVariablesDict, "ROM", &ROMLength);
|
||||
gSettings.RtROM.ncpy(ROM, ROMLength);
|
||||
uint8_t* ROM = GetDataSetting(RtVariablesDict, "ROM", &ROMLength);
|
||||
gSettings.RtVariables.RtROMAsData.stealValueFrom(ROM, ROMLength);
|
||||
} else {
|
||||
MsgLog("MALFORMED PLIST : property not string or data in RtVariables/ROM\n");
|
||||
}
|
||||
@ -5374,17 +5383,17 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
MsgLog("ATTENTION : property not string in RtVariables/MLB\n");
|
||||
}else{
|
||||
if( Prop->getString()->stringValue().notEmpty() ) {
|
||||
gSettings.RtMLB = Prop->getString()->stringValue();
|
||||
gSettings.RtVariables.RtMLBSetting = Prop->getString()->stringValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
// CsrActiveConfig
|
||||
Prop = RtVariablesDict->propertyForKey("CsrActiveConfig");
|
||||
gSettings.CsrActiveConfig = (UINT32)GetPropertyAsInteger(Prop, 0x2E7); //the value 0xFFFF means not set
|
||||
gSettings.RtVariables.CsrActiveConfig = (UINT32)GetPropertyAsInteger(Prop, 0x2E7); //the value 0xFFFF means not set
|
||||
|
||||
//BooterConfig
|
||||
Prop = RtVariablesDict->propertyForKey("BooterConfig");
|
||||
gSettings.BooterConfig = (UINT16)GetPropertyAsInteger(Prop, 0); //the value 0 means not set
|
||||
gSettings.RtVariables.BooterConfig = (UINT16)GetPropertyAsInteger(Prop, 0); //the value 0 means not set
|
||||
//let it be string like "log=0"
|
||||
Prop = RtVariablesDict->propertyForKey("BooterCfg");
|
||||
if ( Prop != NULL ) {
|
||||
@ -5392,7 +5401,7 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
MsgLog("ATTENTION : property not string in RtVariables/BooterCfg\n");
|
||||
}else{
|
||||
if( Prop->getString()->stringValue().notEmpty() ) {
|
||||
gSettings.BooterCfgStr = Prop->getString()->stringValue();
|
||||
gSettings.RtVariables.BooterCfgStr = Prop->getString()->stringValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5401,9 +5410,9 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
if (BlockArray != NULL) {
|
||||
INTN i;
|
||||
INTN Count = BlockArray->arrayContent().size();
|
||||
BlockRtVariableArray.setEmpty();
|
||||
RT_VARIABLES* RtVariablePtr = new RT_VARIABLES();
|
||||
RT_VARIABLES& RtVariable = *RtVariablePtr;
|
||||
gSettings.RtVariables.BlockRtVariableArray.setEmpty();
|
||||
SETTINGS_DATA::RtVariablesClass::RT_VARIABLES* RtVariablePtr = new SETTINGS_DATA::RtVariablesClass::RT_VARIABLES();
|
||||
SETTINGS_DATA::RtVariablesClass::RT_VARIABLES& RtVariable = *RtVariablePtr;
|
||||
for (i = 0; i < Count; i++) {
|
||||
const TagDict* BlockDict = BlockArray->dictElementAt(i, "Block"_XS8);
|
||||
const TagStruct* Prop2 = BlockDict->propertyForKey("Comment");
|
||||
@ -5413,6 +5422,7 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
}else{
|
||||
if( Prop2->getString()->stringValue().notEmpty() ) {
|
||||
DBG(" %s\n", Prop2->getString()->stringValue().c_str());
|
||||
RtVariable.Comment = Prop2->getString()->stringValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5446,20 +5456,20 @@ EFI_STATUS GetUserSettings(const TagDict* CfgDict, SETTINGS_DATA& gSettings)
|
||||
}
|
||||
}
|
||||
}
|
||||
BlockRtVariableArray.AddReference(RtVariablePtr, true);
|
||||
gSettings.RtVariables.BlockRtVariableArray.AddReference(RtVariablePtr, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (gSettings.RtROM.isEmpty()) {
|
||||
EFI_GUID uuid;
|
||||
StrToGuidLE(gSettings.SmUUID, &uuid);
|
||||
gSettings.RtROM.ncpy(&uuid.Data4[2], 6);
|
||||
}
|
||||
// if (gSettings.RtVariables.RtROM.isEmpty()) {
|
||||
// EFI_GUID uuid;
|
||||
// StrToGuidLE(gSettings.SmUUID, &uuid);
|
||||
// gSettings.RtVariables.RtROM.ncpy(&uuid.Data4[2], 6);
|
||||
// }
|
||||
|
||||
if (gSettings.RtMLB.isEmpty()) {
|
||||
gSettings.RtMLB = gSettings.BoardSerialNumber;
|
||||
}
|
||||
// if (gSettings.RtVariables.RtMLB.isEmpty()) {
|
||||
// gSettings.RtVariables.RtMLB = gSettings.BoardSerialNumber;
|
||||
// }
|
||||
|
||||
// if CustomUUID and InjectSystemID are not specified
|
||||
// then use InjectSystemID=TRUE and SMBIOS UUID
|
||||
@ -6564,7 +6574,7 @@ GetDevices ()
|
||||
SlotDevice->SlotID = 5;
|
||||
SlotDevice->SlotType = SlotTypePciExpressX4;
|
||||
}
|
||||
if (gSettings.ResetHDA) {
|
||||
if (gSettings.Devices.Audio.ResetHDA) {
|
||||
//Slice method from VoodooHDA
|
||||
//PCI_HDA_TCSEL_OFFSET = 0x44
|
||||
UINT8 Value = 0;
|
||||
@ -6628,15 +6638,15 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
while (Prop2) {
|
||||
if (Prop2->MenuItem.BValue) {
|
||||
if (AsciiStrStr(Prop2->Key, "-platform-id") != NULL) {
|
||||
if (gSettings.IgPlatform == 0 && Prop2->Value) {
|
||||
CopyMem((UINT8*)&gSettings.IgPlatform, (UINT8*)Prop2->Value, Prop2->ValueLen);
|
||||
if (gSettings.Graphics.IgPlatform == 0 && Prop2->Value) {
|
||||
CopyMem((UINT8*)&gSettings.Graphics.IgPlatform, (UINT8*)Prop2->Value, Prop2->ValueLen);
|
||||
}
|
||||
devprop_add_value(device, Prop2->Key, (UINT8*)&gSettings.IgPlatform, 4);
|
||||
devprop_add_value(device, Prop2->Key, (UINT8*)&gSettings.Graphics.IgPlatform, 4);
|
||||
DBG(" Add key=%s valuelen=%llu\n", Prop2->Key, Prop2->ValueLen);
|
||||
} else if ((AsciiStrStr(Prop2->Key, "override-no-edid") || AsciiStrStr(Prop2->Key, "override-no-connect"))
|
||||
&& gSettings.InjectEDID && gSettings.CustomEDID) {
|
||||
&& gSettings.Graphics.EDID.InjectEDID && gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
// special case for EDID properties
|
||||
devprop_add_value(device, Prop2->Key, gSettings.CustomEDID, 128);
|
||||
devprop_add_value(device, Prop2->Key, gSettings.Graphics.EDID.CustomEDID.data(), 128);
|
||||
DBG(" Add key=%s from custom EDID\n", Prop2->Key);
|
||||
} else {
|
||||
devprop_add_value(device, Prop2->Key, (UINT8*)Prop2->Value, Prop2->ValueLen);
|
||||
@ -6702,7 +6712,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
//special corrections
|
||||
if (Prop->MenuItem.BValue) {
|
||||
if (AsciiStrStr(Prop->Key, "-platform-id") != NULL) {
|
||||
devprop_add_value(device, Prop->Key, (UINT8*)&gSettings.IgPlatform, 4);
|
||||
devprop_add_value(device, Prop->Key, (UINT8*)&gSettings.Graphics.IgPlatform, 4);
|
||||
} else {
|
||||
devprop_add_value(device, Prop->Key, (UINT8*)Prop->Value, Prop->ValueLen);
|
||||
}
|
||||
@ -6727,7 +6737,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
|
||||
switch (Pci.Hdr.VendorId) {
|
||||
case 0x1002:
|
||||
if (gSettings.InjectATI) {
|
||||
if (gSettings.Graphics.InjectAsDict.InjectATI) {
|
||||
//can't do this in one step because of C-conventions
|
||||
TmpDirty = setup_ati_devprop(Entry, &PCIdevice);
|
||||
StringDirty |= TmpDirty;
|
||||
@ -6744,7 +6754,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
}
|
||||
}
|
||||
|
||||
if (gSettings.DeInit) {
|
||||
if (gSettings.Graphics.RadeonDeInit) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
if (gGraphics[j].Handle == PCIdevice.DeviceHandle) {
|
||||
*(UINT32*)(gGraphics[j].Mmio + 0x6848) = 0; //EVERGREEN_GRPH_FLIP_CONTROL, 1<<0 SURFACE_UPDATE_H_RETRACE_EN
|
||||
@ -6761,7 +6771,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
break;
|
||||
|
||||
case 0x8086:
|
||||
if (gSettings.InjectIntel) {
|
||||
if (gSettings.Graphics.InjectAsDict.InjectIntel) {
|
||||
TmpDirty = setup_gma_devprop(Entry, &PCIdevice);
|
||||
StringDirty |= TmpDirty;
|
||||
MsgLog ("Intel GFX revision = 0x%hhX\n", PCIdevice.revision);
|
||||
@ -6867,8 +6877,8 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
case 0x0116: // "Intel HD Graphics 3000"
|
||||
case 0x0122: // "Intel HD Graphics 3000"
|
||||
case 0x0126: // "Intel HD Graphics 3000"
|
||||
if (gSettings.IgPlatform) {
|
||||
switch (gSettings.IgPlatform) {
|
||||
if (gSettings.Graphics.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x00030010:
|
||||
case (UINT32)0x00050000:
|
||||
FBLEVX = 0xFFFF;
|
||||
@ -6913,8 +6923,8 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
case 0x0D2A: // "Intel Iris Pro Graphics 5200"
|
||||
case 0x0D2B: // "Intel Iris Pro Graphics 5200"
|
||||
case 0x0D2E: // "Intel Iris Pro Graphics 5200"
|
||||
if (gSettings.IgPlatform) {
|
||||
switch (gSettings.IgPlatform) {
|
||||
if (gSettings.Graphics.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x04060000:
|
||||
case (UINT32)0x0c060000:
|
||||
case (UINT32)0x04160000:
|
||||
@ -6974,8 +6984,8 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
case 0x162D: // "Intel Iris Pro Graphics P6300"
|
||||
case 0x1622: // "Intel Iris Pro Graphics 6200"
|
||||
case 0x162A: // "Intel Iris Pro Graphics P6300"
|
||||
if (gSettings.IgPlatform) {
|
||||
switch (gSettings.IgPlatform) {
|
||||
if (gSettings.Graphics.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x16060000:
|
||||
case (UINT32)0x160e0000:
|
||||
case (UINT32)0x16160000:
|
||||
@ -7041,8 +7051,8 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
case 0x193A: // "Intel Iris Pro Graphics P580"
|
||||
case 0x193B: // "Intel Iris Pro Graphics 580"
|
||||
case 0x193D: // "Intel Iris Pro Graphics P580"
|
||||
if (gSettings.IgPlatform) {
|
||||
switch (gSettings.IgPlatform) {
|
||||
if (gSettings.Graphics.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x19120001:
|
||||
FBLEVX = 0xFFFF;
|
||||
break;
|
||||
@ -7280,7 +7290,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
break;
|
||||
|
||||
case 0x10de:
|
||||
if (gSettings.InjectNVidia) {
|
||||
if (gSettings.Graphics.InjectAsDict.InjectNVidia) {
|
||||
TmpDirty = setup_nvidia_devprop(&PCIdevice);
|
||||
StringDirty |= TmpDirty;
|
||||
} else {
|
||||
@ -7319,7 +7329,7 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
TmpDirty = setup_hda_devprop (PciIo, &PCIdevice, Entry->macOSVersion);
|
||||
StringDirty |= TmpDirty;
|
||||
}
|
||||
if (gSettings.ResetHDA) {
|
||||
if (gSettings.Devices.Audio.ResetHDA) {
|
||||
|
||||
//PCI_HDA_TCSEL_OFFSET = 0x44
|
||||
UINT8 Value = 0;
|
||||
@ -7429,75 +7439,79 @@ SetDevices (LOADER_ENTRY *Entry)
|
||||
|
||||
if (StringDirty) {
|
||||
EFI_PHYSICAL_ADDRESS BufferPtr = EFI_SYSTEM_TABLE_MAX_ADDRESS; //0xFE000000;
|
||||
device_inject_stringlength = device_inject_string->length * 2;
|
||||
DBG("stringlength = %d\n", device_inject_stringlength);
|
||||
// gDeviceProperties = (__typeof__(gDeviceProperties))AllocateAlignedPages EFI_SIZE_TO_PAGES (device_inject_stringlength + 1), 64);
|
||||
if ( device_inject_string->length > MAX_UINT32/2-1 ) {
|
||||
MsgLog("device_inject_string is too big\n");
|
||||
}else{
|
||||
device_inject_stringlength = device_inject_string->length * 2;
|
||||
DBG("stringlength = %d\n", device_inject_stringlength);
|
||||
// gDeviceProperties = (__typeof__(gDeviceProperties))AllocateAlignedPages EFI_SIZE_TO_PAGES (device_inject_stringlength + 1), 64);
|
||||
|
||||
UINTN nbPages = EFI_SIZE_TO_PAGES (device_inject_stringlength + 1);
|
||||
Status = gBS->AllocatePages (
|
||||
AllocateMaxAddress,
|
||||
EfiACPIReclaimMemory,
|
||||
nbPages,
|
||||
&BufferPtr
|
||||
);
|
||||
UINTN nbPages = EFI_SIZE_TO_PAGES (device_inject_stringlength + 1);
|
||||
Status = gBS->AllocatePages (
|
||||
AllocateMaxAddress,
|
||||
EfiACPIReclaimMemory,
|
||||
nbPages,
|
||||
&BufferPtr
|
||||
);
|
||||
|
||||
if (!EFI_ERROR(Status)) {
|
||||
mProperties = (UINT8*)(UINTN)BufferPtr;
|
||||
gDeviceProperties = devprop_generate_string (device_inject_string);
|
||||
gDeviceProperties[device_inject_stringlength] = 0;
|
||||
// DBG(gDeviceProperties);
|
||||
// DBG("\n");
|
||||
// StringDirty = FALSE;
|
||||
//-------
|
||||
mPropSize = (UINT32)AsciiStrLen(gDeviceProperties) / 2;
|
||||
// DBG("Preliminary size of mProperties=%d\n", mPropSize);
|
||||
mPropSize = hex2bin (gDeviceProperties, AsciiStrLen(gDeviceProperties), mProperties, EFI_PAGES_TO_SIZE(nbPages));
|
||||
// DBG("Final size of mProperties=%d\n", mPropSize);
|
||||
//---------
|
||||
// Status = egSaveFile(&self.getSelfRootDir(), SWPrintf("%ls\\misc\\devprop.bin", self.getCloverDirFullPath().wc_str()).wc_str() , (UINT8*)mProperties, mPropSize);
|
||||
//and now we can free memory?
|
||||
if (gSettings.AddProperties) {
|
||||
FreePool(gSettings.AddProperties);
|
||||
}
|
||||
if (gSettings.ArbProperties) {
|
||||
DEV_PROPERTY *Props;
|
||||
DEV_PROPERTY *Next;
|
||||
Prop = gSettings.ArbProperties;
|
||||
while (Prop) {
|
||||
Props = Prop->Child;
|
||||
if (Prop->Label) {
|
||||
FreePool(Prop->Label);
|
||||
}
|
||||
if (Prop->Key) {
|
||||
FreePool(Prop->Key);
|
||||
}
|
||||
if (Prop->Value) {
|
||||
FreePool(Prop->Value);
|
||||
}
|
||||
if (Prop->DevicePath) {
|
||||
FreePool(Prop->DevicePath);
|
||||
}
|
||||
while (Props) {
|
||||
if (Props->Label) {
|
||||
FreePool(Props->Label);
|
||||
if (!EFI_ERROR(Status)) {
|
||||
mProperties = (UINT8*)(UINTN)BufferPtr;
|
||||
gDeviceProperties = devprop_generate_string (device_inject_string);
|
||||
gDeviceProperties[device_inject_stringlength] = 0;
|
||||
// DBG(gDeviceProperties);
|
||||
// DBG("\n");
|
||||
// StringDirty = FALSE;
|
||||
//-------
|
||||
//mPropSize = (UINT32)AsciiStrLen(gDeviceProperties) / 2;
|
||||
// DBG("Preliminary size of mProperties=%d\n", mPropSize);
|
||||
mPropSize = (UINT32)hex2bin (gDeviceProperties, AsciiStrLen(gDeviceProperties), mProperties, EFI_PAGES_TO_SIZE(nbPages)); // cast should be safe as device_inject_string->length <= MAX_UINT32/2-1
|
||||
// DBG("Final size of mProperties=%d\n", mPropSize);
|
||||
//---------
|
||||
// Status = egSaveFile(&self.getSelfRootDir(), SWPrintf("%ls\\misc\\devprop.bin", self.getCloverDirFullPath().wc_str()).wc_str() , (UINT8*)mProperties, mPropSize);
|
||||
//and now we can free memory?
|
||||
if (gSettings.AddProperties) {
|
||||
FreePool(gSettings.AddProperties);
|
||||
}
|
||||
if (gSettings.ArbProperties) {
|
||||
DEV_PROPERTY *Props;
|
||||
DEV_PROPERTY *Next;
|
||||
Prop = gSettings.ArbProperties;
|
||||
while (Prop) {
|
||||
Props = Prop->Child;
|
||||
if (Prop->Label) {
|
||||
FreePool(Prop->Label);
|
||||
}
|
||||
if (Props->Key) {
|
||||
FreePool(Props->Key);
|
||||
if (Prop->Key) {
|
||||
FreePool(Prop->Key);
|
||||
}
|
||||
if (Props->Value) {
|
||||
FreePool(Props->Value);
|
||||
if (Prop->Value) {
|
||||
FreePool(Prop->Value);
|
||||
}
|
||||
if (Props->DevicePath) {
|
||||
FreePool(Props->DevicePath);
|
||||
if (Prop->DevicePath) {
|
||||
FreePool(Prop->DevicePath);
|
||||
}
|
||||
Next = Props->Next;
|
||||
FreePool(Props);
|
||||
//delete Props;
|
||||
Props = Next;
|
||||
while (Props) {
|
||||
if (Props->Label) {
|
||||
FreePool(Props->Label);
|
||||
}
|
||||
if (Props->Key) {
|
||||
FreePool(Props->Key);
|
||||
}
|
||||
if (Props->Value) {
|
||||
FreePool(Props->Value);
|
||||
}
|
||||
if (Props->DevicePath) {
|
||||
FreePool(Props->DevicePath);
|
||||
}
|
||||
Next = Props->Next;
|
||||
FreePool(Props);
|
||||
//delete Props;
|
||||
Props = Next;
|
||||
}
|
||||
Next = Prop->Next;
|
||||
FreePool(Prop);
|
||||
Prop = Next;
|
||||
}
|
||||
Next = Prop->Next;
|
||||
FreePool(Prop);
|
||||
Prop = Next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "../libeg/XIcon.h"
|
||||
#include "../cpp_lib/undefinable.h"
|
||||
#include "../entry_scan/loader.h" // for KERNEL_SCAN_xxx constants
|
||||
//#include "card_vlist.h"
|
||||
|
||||
#define CLOVER_SIGN SIGNATURE_32('C','l','v','r')
|
||||
|
||||
@ -443,6 +444,37 @@ public :
|
||||
MMIOWhiteList& operator=(const MMIOWhiteList&) = delete;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
Set of Search & replace bytes for VideoBiosPatchBytes().
|
||||
this is supposed to be a replacement of VBIOS_PATCH_BYTES, but that would need VbiosPatchLibrary to be update to C++. Quite easy, but need cpp_fundation to become a library. TODO
|
||||
**/
|
||||
class VBIOS_PATCH {
|
||||
public:
|
||||
XBuffer<uint8_t> Find = XBuffer<uint8_t>();
|
||||
XBuffer<uint8_t> Replace = XBuffer<uint8_t>();
|
||||
};
|
||||
|
||||
class PatchVBiosBytesNewClass : public XObjArray<VBIOS_PATCH>
|
||||
{
|
||||
mutable XArray<VBIOS_PATCH_BYTES> VBIOS_PATCH_BYTES_array = XArray<VBIOS_PATCH_BYTES>();
|
||||
public:
|
||||
// Temporary bridge to old struct.
|
||||
const VBIOS_PATCH_BYTES* getVBIOS_PATCH_BYTES() {
|
||||
VBIOS_PATCH_BYTES_array.setSize(size());
|
||||
for ( size_t idx = 0 ; idx < size() ; ++idx ) {
|
||||
VBIOS_PATCH_BYTES_array[idx].Find = ElementAt(idx).Find.data();
|
||||
VBIOS_PATCH_BYTES_array[idx].Replace = ElementAt(idx).Replace.data();
|
||||
VBIOS_PATCH_BYTES_array[idx].NumberOfBytes = ElementAt(idx).Replace.size();
|
||||
}
|
||||
return VBIOS_PATCH_BYTES_array;
|
||||
}
|
||||
size_t getVBIOS_PATCH_BYTES_count() const {
|
||||
return size();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class SETTINGS_DATA;
|
||||
class ConfigPlist;
|
||||
class TagDict;
|
||||
@ -601,15 +633,15 @@ public:
|
||||
UINT16 QPI = 0;
|
||||
UINT32 CpuFreqMHz = 0;
|
||||
UINT16 CpuType = 0;
|
||||
BOOLEAN QEMU = 0;
|
||||
BOOLEAN UseARTFreq = 0;
|
||||
bool QEMU = 0;
|
||||
bool UseARTFreq = 0;
|
||||
UINT32 BusSpeed = 0; //in kHz
|
||||
BOOLEAN UserChange = 0;
|
||||
bool UserChange = 0;
|
||||
UINT8 SavingMode = 0;
|
||||
bool HWPEnable = false;
|
||||
undefinable_uint32 HWPValue = undefinable_uint32();
|
||||
UINT8 TDP = 0;
|
||||
BOOLEAN Turbo = 0;
|
||||
bool TurboDisabled = 0;
|
||||
undefinable_bool _EnableC6 = undefinable_bool();
|
||||
undefinable_bool _EnableC4 = undefinable_bool();
|
||||
undefinable_bool _EnableC2 = undefinable_bool();
|
||||
@ -635,27 +667,129 @@ public:
|
||||
|
||||
} SystemParameters = SystemParametersClass();
|
||||
|
||||
KERNEL_AND_KEXT_PATCHES KernelAndKextPatches = KERNEL_AND_KEXT_PATCHES();
|
||||
|
||||
class GraphicsClass {
|
||||
public:
|
||||
bool PatchVBios = bool();
|
||||
PatchVBiosBytesNewClass PatchVBiosBytesNew = PatchVBiosBytesNewClass();
|
||||
|
||||
class EDIDClass {
|
||||
public:
|
||||
bool InjectEDID = bool();
|
||||
XBuffer<UINT8> CustomEDID = XBuffer<UINT8> ();
|
||||
UINT16 VendorEDID = UINT16();
|
||||
UINT16 ProductEDID = UINT16();
|
||||
UINT16 EdidFixHorizontalSyncPulseWidth = UINT16();
|
||||
UINT8 EdidFixVideoInputSignal = UINT8();
|
||||
} EDID = EDIDClass();
|
||||
|
||||
undefinable_bool InjectAsBool = undefinable_bool();
|
||||
class InjectAsDictClass {
|
||||
public:
|
||||
bool InjectIntel = bool();
|
||||
bool InjectATI = bool();
|
||||
bool InjectNVidia = bool();
|
||||
} InjectAsDict = InjectAsDictClass();
|
||||
|
||||
bool RadeonDeInit = bool();
|
||||
bool LoadVBios = bool();
|
||||
UINT64 VRAM = bool();
|
||||
UINT32 RefCLK = UINT32();
|
||||
XStringW FBName = XStringW();
|
||||
UINT16 VideoPorts = UINT16();
|
||||
bool NvidiaGeneric = bool();
|
||||
bool NvidiaNoEFI = bool();
|
||||
bool NvidiaSingle = bool();
|
||||
UINT8 Dcfg[8] = {0};
|
||||
UINT8 NVCAP[20] = {0};
|
||||
INT8 BootDisplay = INT8();
|
||||
UINT32 DualLink = UINT32();
|
||||
UINT32 IgPlatform = UINT32(); //could also be snb-platform-id
|
||||
|
||||
|
||||
class GRAPHIC_CARD {
|
||||
public:
|
||||
UINT32 Signature = 0;
|
||||
XString8 Model = XString8();
|
||||
UINT32 Id = 0;
|
||||
UINT32 SubId = 0;
|
||||
UINT64 VideoRam = 0;
|
||||
UINTN VideoPorts = 0;
|
||||
bool LoadVBios = 0;
|
||||
};
|
||||
XObjArray<GRAPHIC_CARD> gCardList = XObjArray<GRAPHIC_CARD>();
|
||||
|
||||
|
||||
// bool getGraphicsInjector() const { return InjectAsBool.isDefined() ? InjectAsBool.value() : InjectAsDict.GraphicsInjector; }
|
||||
bool InjectIntel() const { return InjectAsBool.isDefined() ? InjectAsBool.value() : InjectAsDict.InjectIntel; }
|
||||
bool InjectATI() const { return InjectAsBool.isDefined() ? InjectAsBool.value() : InjectAsDict.InjectATI; }
|
||||
bool InjectNVidia() const { return InjectAsBool.isDefined() ? InjectAsBool.value() : InjectAsDict.InjectNVidia; }
|
||||
|
||||
|
||||
|
||||
} Graphics = GraphicsClass();
|
||||
|
||||
class DevicesClass {
|
||||
public:
|
||||
|
||||
class AudioClass {
|
||||
public:
|
||||
bool ResetHDA = bool();
|
||||
} Audio = AudioClass();
|
||||
|
||||
} Devices = DevicesClass();
|
||||
|
||||
class QuirksClass {
|
||||
public:
|
||||
bool FuzzyMatch = bool();
|
||||
XString8 OcKernelCache = XString8();
|
||||
OC_KERNEL_QUIRKS OcKernelQuirks = OC_KERNEL_QUIRKS();
|
||||
} Quirks = QuirksClass();
|
||||
|
||||
XStringWArray DisabledDriverArray = XStringWArray();
|
||||
|
||||
class RtVariablesClass {
|
||||
public:
|
||||
|
||||
XString8 RtROMAsString = XString8();
|
||||
XBuffer<UINT8> RtROMAsData = XBuffer<UINT8>();
|
||||
XString8 RtMLBSetting = XString8();
|
||||
UINT32 CsrActiveConfig = UINT32();
|
||||
UINT16 BooterConfig = UINT16();
|
||||
XString8 BooterCfgStr = XString8();
|
||||
|
||||
class RT_VARIABLES
|
||||
{
|
||||
public:
|
||||
XString8 Comment = XStringW();
|
||||
XStringW Name = XStringW();
|
||||
EFI_GUID VarGuid = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}};
|
||||
};
|
||||
XObjArray<RT_VARIABLES> BlockRtVariableArray = XObjArray<RT_VARIABLES>();
|
||||
|
||||
bool GetLegacyLanAddress() const {
|
||||
return RtROMAsString.equalIC("UseMacAddr0") || RtROMAsString.equalIC("UseMacAddr1");
|
||||
}
|
||||
|
||||
} RtVariables = RtVariablesClass();
|
||||
|
||||
|
||||
|
||||
bool getEnableC6() const {
|
||||
if ( CPU._EnableC6.isDefined() ) return CPU._EnableC6;
|
||||
if ( CPU._EnableC6.isDefined() ) return CPU._EnableC6.value();
|
||||
return ACPI.SSDT._EnableC6;
|
||||
}
|
||||
bool getEnableC4() const {
|
||||
if ( CPU._EnableC4.isDefined() ) return CPU._EnableC4;
|
||||
if ( CPU._EnableC4.isDefined() ) return CPU._EnableC4.value();
|
||||
return ACPI.SSDT._EnableC4;
|
||||
}
|
||||
bool getEnableC2() const {
|
||||
if ( CPU._EnableC2.isDefined() ) return CPU._EnableC2;
|
||||
if ( CPU._EnableC2.isDefined() ) return CPU._EnableC2.value();
|
||||
return ACPI.SSDT._EnableC2;
|
||||
}
|
||||
bool getC3Latency() const {
|
||||
if ( CPU._C3Latency.isDefined() ) return CPU._C3Latency;
|
||||
if ( CPU._C3Latency.isDefined() ) return CPU._C3Latency.value();
|
||||
return ACPI.SSDT._C3Latency;
|
||||
}
|
||||
|
||||
@ -670,7 +804,6 @@ public:
|
||||
XString8 VersionNr;
|
||||
XString8 SerialNr;
|
||||
XString8 SmUUID;
|
||||
CHAR8 pad0[7];
|
||||
//CHAR8 Uuid;
|
||||
//CHAR8 SKUNumber;
|
||||
XString8 FamilyName;
|
||||
@ -684,7 +817,6 @@ public:
|
||||
XString8 BoardVersion;
|
||||
XString8 OEMBoard;
|
||||
UINT8 BoardType;
|
||||
UINT8 pad1;
|
||||
// SMBIOS TYPE3
|
||||
BOOLEAN Mobile;
|
||||
UINT8 ChassisType;
|
||||
@ -695,7 +827,6 @@ public:
|
||||
// SMBIOS TYPE17
|
||||
UINT16 SmbiosVersion;
|
||||
INT8 Attribute;
|
||||
INT8 pad17[1];
|
||||
XString8 MemoryManufacturer;
|
||||
XString8 MemorySerialNumber;
|
||||
XString8 MemoryPartNumber;
|
||||
@ -704,7 +835,6 @@ public:
|
||||
// SMBIOS TYPE132
|
||||
BOOLEAN TrustSMBIOS = 0;
|
||||
BOOLEAN InjectMemoryTables;
|
||||
INT8 pad18[3];
|
||||
|
||||
// SMBIOS TYPE133
|
||||
UINT64 PlatformFeature;
|
||||
@ -713,17 +843,11 @@ public:
|
||||
BOOLEAN NoRomInfo;
|
||||
|
||||
// OS parameters
|
||||
INT8 pad181[7];
|
||||
XString8 Language;
|
||||
INT8 pad19[2];
|
||||
|
||||
INT8 pad20[6];
|
||||
|
||||
//Monitor
|
||||
BOOLEAN IntelMaxBacklight;
|
||||
UINT8 pad21[1];
|
||||
UINT16 VendorEDID;
|
||||
UINT16 ProductEDID;
|
||||
BOOLEAN IntelBacklight;
|
||||
//Boot options
|
||||
BOOLEAN MemoryFix;
|
||||
@ -731,12 +855,9 @@ public:
|
||||
|
||||
// GUI parameters
|
||||
BOOLEAN Debug;
|
||||
// BOOLEAN Proportional; //never used
|
||||
UINT8 pad22[2];
|
||||
UINT32 DefaultBackgroundColor;
|
||||
|
||||
//ACPI
|
||||
UINT8 pad23[1];
|
||||
|
||||
// BOOLEAN DropMCFG;
|
||||
|
||||
@ -757,39 +878,9 @@ public:
|
||||
|
||||
//Graphics
|
||||
// UINT16 PCIRootUID;
|
||||
BOOLEAN GraphicsInjector;
|
||||
BOOLEAN InjectIntel;
|
||||
BOOLEAN InjectATI;
|
||||
BOOLEAN InjectNVidia;
|
||||
BOOLEAN DeInit;
|
||||
BOOLEAN LoadVBios;
|
||||
BOOLEAN PatchVBios;
|
||||
UINT8 pad24[5];
|
||||
VBIOS_PATCH_BYTES *PatchVBiosBytes;
|
||||
UINTN PatchVBiosBytesCount;
|
||||
BOOLEAN InjectEDID;
|
||||
BOOLEAN LpcTune;
|
||||
UINT16 DropOEM_DSM; //vacant
|
||||
UINT8 pad25[4];
|
||||
UINT8 *CustomEDID;
|
||||
UINT16 CustomEDIDsize;
|
||||
UINT16 EdidFixHorizontalSyncPulseWidth;
|
||||
UINT8 EdidFixVideoInputSignal;
|
||||
|
||||
UINT8 pad26[1];
|
||||
XStringW FBName;
|
||||
UINT16 VideoPorts;
|
||||
BOOLEAN NvidiaGeneric;
|
||||
BOOLEAN NvidiaNoEFI;
|
||||
BOOLEAN NvidiaSingle;
|
||||
UINT8 pad27[5];
|
||||
UINT64 VRAM;
|
||||
UINT8 Dcfg[8];
|
||||
UINT8 NVCAP[20];
|
||||
INT8 BootDisplay;
|
||||
UINT8 pad41[2];
|
||||
UINT32 DualLink;
|
||||
UINT32 IgPlatform;
|
||||
|
||||
|
||||
// HDA
|
||||
@ -807,15 +898,12 @@ public:
|
||||
BOOLEAN LANInjection;
|
||||
BOOLEAN HDMIInjection;
|
||||
|
||||
// UINT8 pad61[2];
|
||||
|
||||
|
||||
//SkyLake
|
||||
|
||||
//Volumes hiding
|
||||
|
||||
// KernelAndKextPatches
|
||||
KERNEL_AND_KEXT_PATCHES KernelAndKextPatches;
|
||||
BOOLEAN KextPatchesAllowed;
|
||||
BOOLEAN KernelPatchesAllowed; //From GUI: Only for user patches, not internal Clover
|
||||
|
||||
@ -823,30 +911,17 @@ public:
|
||||
|
||||
// Pre-language
|
||||
|
||||
//Pointer
|
||||
UINT8 pad28[7];
|
||||
|
||||
// UINT8 pad7[6];
|
||||
UINT8 pad29[6];
|
||||
|
||||
UINT32 RefCLK;
|
||||
|
||||
// SysVariables
|
||||
UINT8 pad30[4];
|
||||
XString8 RtMLB;
|
||||
XBuffer<UINT8> RtROM;
|
||||
|
||||
UINT32 CsrActiveConfig;
|
||||
UINT16 BooterConfig;
|
||||
XString8 BooterCfgStr;
|
||||
|
||||
// Multi-config
|
||||
CHAR16 ConfigName[30];
|
||||
UINT8 pad31[4];
|
||||
// XString8 MainConfigName;
|
||||
|
||||
//Drivers
|
||||
XStringWArray DisabledDriverArray;
|
||||
|
||||
//SMC keys
|
||||
CHAR8 RPlt[8];
|
||||
@ -856,32 +931,14 @@ public:
|
||||
|
||||
//other devices
|
||||
BOOLEAN ForceHPET;
|
||||
BOOLEAN ResetHDA;
|
||||
UINT8 pad32[2];
|
||||
UINT32 DisableFunctions;
|
||||
|
||||
//Patch DSDT arbitrary
|
||||
// UINT32 PatchDsdtNum;
|
||||
// UINT8 **PatchDsdtFind;
|
||||
// UINT32 *LenToFind;
|
||||
// UINT8 **PatchDsdtReplace;
|
||||
// UINT32 *LenToReplace;
|
||||
// CHAR8 **PatchDsdtLabel;
|
||||
// CHAR8 **PatchDsdtTgt;
|
||||
// INPUT_ITEM *PatchDsdtMenuItem;
|
||||
|
||||
BOOLEAN SlpWak;
|
||||
BOOLEAN UseIntelHDMI;
|
||||
UINT8 AFGLowPowerState;
|
||||
// UINT8 pad83[4];
|
||||
|
||||
|
||||
// Table dropping
|
||||
UINT8 pad34[3];
|
||||
|
||||
// Custom entries
|
||||
UINT8 pad35[3];
|
||||
|
||||
//Add custom properties
|
||||
UINTN NrAddProperties;
|
||||
DEV_PROPERTY *AddProperties;
|
||||
@ -896,9 +953,6 @@ public:
|
||||
|
||||
//ACPI tables
|
||||
|
||||
// ACPI/PATCHED/AML
|
||||
UINT8 pad36[4];
|
||||
|
||||
//other
|
||||
UINT32 IntelMaxValue;
|
||||
// UINT32 AudioVolume;
|
||||
@ -910,11 +964,9 @@ public:
|
||||
UINT32 EFILoginHiDPI;
|
||||
UINT8 flagstate[32];
|
||||
|
||||
UINT8 pad37[4];
|
||||
DEV_PROPERTY *ArbProperties;
|
||||
|
||||
UINT32 QuirksMask;
|
||||
UINT8 pad38[4];
|
||||
UINTN MaxSlide;
|
||||
|
||||
OC_BOOTER_QUIRKS ocBooterQuirks;
|
||||
@ -923,23 +975,21 @@ public:
|
||||
|
||||
|
||||
SETTINGS_DATA() : VendorName(), RomVersion(), EfiVersion(), ReleaseDate(), ManufactureName(), ProductName(), VersionNr(), SerialNr(), SmUUID(),
|
||||
pad0{0}, FamilyName(), OEMProduct(), OEMVendor(), BoardManufactureName(), BoardSerialNumber(), BoardNumber(), LocationInChassis(),
|
||||
BoardVersion(), OEMBoard(), BoardType(0), pad1(0), Mobile(0), ChassisType(0), ChassisManufacturer(), ChassisAssetTag(),
|
||||
EnabledCores(0), SmbiosVersion(0), Attribute(0), pad17{0}, MemoryManufacturer(),
|
||||
FamilyName(), OEMProduct(), OEMVendor(), BoardManufactureName(), BoardSerialNumber(), BoardNumber(), LocationInChassis(),
|
||||
BoardVersion(), OEMBoard(), BoardType(0), Mobile(0), ChassisType(0), ChassisManufacturer(), ChassisAssetTag(),
|
||||
EnabledCores(0), SmbiosVersion(0), Attribute(0), MemoryManufacturer(),
|
||||
MemorySerialNumber(), MemoryPartNumber(), MemorySpeed(), InjectMemoryTables(0),
|
||||
PlatformFeature(0), NoRomInfo(0), Language(),
|
||||
IntelMaxBacklight(0), VendorEDID(0), ProductEDID(0), IntelBacklight(0), MemoryFix(0),
|
||||
FakeSMCFound(0), Debug(0), pad22{0}, DefaultBackgroundColor(0), StringInjector(0), NoDefaultProperties(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),
|
||||
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), pad41{0}, DualLink(0),
|
||||
IgPlatform(0), HDAInjection(0),
|
||||
IntelMaxBacklight(0), IntelBacklight(0), MemoryFix(0),
|
||||
FakeSMCFound(0), Debug(0), DefaultBackgroundColor(0), StringInjector(0), NoDefaultProperties(0),
|
||||
FakeATI(0), FakeNVidia(0), FakeIntel(0), FakeLAN(0), FakeWIFI(0), FakeSATA(0), FakeXHCI(0), FakeIMEI(0),
|
||||
LpcTune(0), DropOEM_DSM(0),
|
||||
HDAInjection(0),
|
||||
HDALayoutId(0), USBInjection(0), USBFixOwnership(0), InjectClockID(0), HighCurrent(0), NameEH00(0), NameXH00(0), LANInjection(0), HDMIInjection(0),
|
||||
KernelAndKextPatches(), KextPatchesAllowed(0),
|
||||
KextPatchesAllowed(0),
|
||||
KernelPatchesAllowed(0), AirportBridgeDeviceName(),
|
||||
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), DisableFunctions(0), SlpWak(0), UseIntelHDMI(0),
|
||||
ConfigName{0}, /*MainConfigName(0),*/ /*BlackListCount(0),*/ RPlt{0}, RBr{0}, EPCI{0}, REV{0},
|
||||
ForceHPET(0), DisableFunctions(0), SlpWak(0), UseIntelHDMI(0),
|
||||
AFGLowPowerState(0), NrAddProperties(0), AddProperties(0), BlockKexts{0},
|
||||
IntelMaxValue(0), OptionsBits(0), FlagsBits(0), UIScale(0), EFILoginHiDPI(0), flagstate{0},
|
||||
ArbProperties(0), QuirksMask(0), MaxSlide(0), ocBooterQuirks{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, mmioWhiteListArray()
|
||||
@ -1021,21 +1071,9 @@ public:
|
||||
~SIDELOAD_KEXT() { }
|
||||
};
|
||||
|
||||
class RT_VARIABLES
|
||||
{
|
||||
public:
|
||||
XStringW Name;
|
||||
EFI_GUID VarGuid;
|
||||
|
||||
RT_VARIABLES() : Name(), VarGuid{0,0,0,{0}} {};
|
||||
RT_VARIABLES(const RT_VARIABLES& other) = delete; // Can be defined if needed
|
||||
const RT_VARIABLES& operator = ( const RT_VARIABLES & ) = delete; // Can be defined if needed
|
||||
~RT_VARIABLES() { }
|
||||
};
|
||||
|
||||
|
||||
|
||||
extern XObjArray<RT_VARIABLES> BlockRtVariableArray;
|
||||
//extern XObjArray<RT_VARIABLES> gSettings.RtVariables.BlockRtVariableArray;
|
||||
extern XObjArray<HDA_OUTPUTS> AudioList;
|
||||
|
||||
extern XStringWArray ThemeNameArray;
|
||||
@ -1147,6 +1185,10 @@ public:
|
||||
bool KPKernelPm = bool();
|
||||
bool KPAppleIntelCPUPM = bool();
|
||||
|
||||
XBuffer<UINT8> RtROM = XBuffer<UINT8>();
|
||||
XString8 RtMLB = XString8();
|
||||
|
||||
bool Turbo;
|
||||
|
||||
REFIT_CONFIG() {};
|
||||
REFIT_CONFIG(const REFIT_CONFIG& other) = delete; // Can be defined if needed
|
||||
|
@ -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);
|
||||
DBG("Maximum control=0x%hX\n", maximum.Control.Control);
|
||||
if (gSettings.CPU.Turbo) {
|
||||
if (GlobalConfig.Turbo) {
|
||||
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;
|
||||
DBG("Maximum control=0x%hX\n", realMax);
|
||||
if (gSettings.CPU.Turbo) {
|
||||
if (GlobalConfig.Turbo) {
|
||||
realTurbo = (gCPUStructure.Turbo4 > gCPUStructure.Turbo1) ?
|
||||
(gCPUStructure.Turbo4 / 10) : (gCPUStructure.Turbo1 / 10);
|
||||
maximum.Control.Control = realTurbo;
|
||||
|
@ -1247,8 +1247,8 @@ BOOLEAN get_dual_link_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((gSettings.DualLink == 0) || (gSettings.DualLink == 1)) {
|
||||
v = gSettings.DualLink;
|
||||
if ((gSettings.Graphics.DualLink == 0) || (gSettings.Graphics.DualLink == 1)) {
|
||||
v = gSettings.Graphics.DualLink;
|
||||
} else {
|
||||
v = DualLink;
|
||||
}
|
||||
@ -1269,7 +1269,7 @@ BOOLEAN get_vrammemory_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
BOOLEAN get_edid_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
{
|
||||
static UINT32 v = 0;
|
||||
if (!gSettings.InjectEDID) {
|
||||
if (!gSettings.Graphics.EDID.InjectEDID) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -1277,13 +1277,13 @@ BOOLEAN get_edid_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
return FALSE;
|
||||
}
|
||||
//CustomEDID will point to user EDID if set else to EdidDiscovered
|
||||
if (!gSettings.CustomEDID) {
|
||||
if (gSettings.Graphics.EDID.CustomEDID.isEmpty()) {
|
||||
return FALSE;
|
||||
}
|
||||
v = 1;
|
||||
val->type = kPtr;
|
||||
val->size = 128;
|
||||
val->data = (__typeof__(val->data))AllocateCopyPool(val->size, gSettings.CustomEDID);
|
||||
val->data = (__typeof__(val->data))AllocateCopyPool(val->size, gSettings.Graphics.EDID.CustomEDID.data());
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1445,7 +1445,7 @@ BOOLEAN get_binimage_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
|
||||
BOOLEAN get_binimage_owr(value_t *val, INTN index, BOOLEAN Sier)
|
||||
{
|
||||
if (!gSettings.LoadVBios) {
|
||||
if (!gSettings.Graphics.LoadVBios) {
|
||||
return FALSE;
|
||||
}
|
||||
val->type = kCst;
|
||||
@ -1498,13 +1498,13 @@ BOOLEAN get_sclk_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
|
||||
BOOLEAN get_refclk_val(value_t *val, INTN index, BOOLEAN Sier)
|
||||
{
|
||||
if (!gSettings.RefCLK) {
|
||||
if (!gSettings.Graphics.RefCLK) {
|
||||
return FALSE;
|
||||
}
|
||||
//
|
||||
val->type = kCst;
|
||||
val->size = 4;
|
||||
val->data = (__typeof__(val->data))AllocateCopyPool(val->size, (UINT8 *)&gSettings.RefCLK);
|
||||
val->data = (__typeof__(val->data))AllocateCopyPool(val->size, (UINT8 *)&gSettings.Graphics.RefCLK);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1688,9 +1688,9 @@ void get_vram_size(void)
|
||||
ati_chip_family_t chip_family = card->info->chip_family;
|
||||
|
||||
card->vram_size = 128 << 20; //default 128Mb, this is minimum for OS
|
||||
if (gSettings.VRAM != 0) {
|
||||
card->vram_size = gSettings.VRAM << 20;
|
||||
DBG("Set VRAM from config=%lluMb\n", gSettings.VRAM);
|
||||
if (gSettings.Graphics.VRAM != 0) {
|
||||
card->vram_size = gSettings.Graphics.VRAM << 20;
|
||||
DBG("Set VRAM from config=%lluMb\n", gSettings.Graphics.VRAM);
|
||||
// WRITEREG32(card->mmio, RADEON_CONFIG_MEMSIZE, card->vram_size);
|
||||
} else {
|
||||
if (chip_family >= CHIP_FAMILY_CEDAR) {
|
||||
@ -1712,7 +1712,7 @@ void get_vram_size(void)
|
||||
DBG("Set VRAM for %s =%lluMb\n", chip_family_name[card->info->chip_family], (UINT64)RShiftU64(card->vram_size, 20));
|
||||
|
||||
}
|
||||
gSettings.VRAM = (UINT64)RShiftU64(card->vram_size, 20);
|
||||
gSettings.Graphics.VRAM = (UINT64)RShiftU64(card->vram_size, 20);
|
||||
DBG("ATI: get_vram_size returned 0x%llX\n", card->vram_size);
|
||||
}
|
||||
|
||||
@ -1924,7 +1924,7 @@ BOOLEAN devprop_add_pci_config_space(void)
|
||||
|
||||
static BOOLEAN init_card(pci_dt_t *pci_dev)
|
||||
{
|
||||
BOOLEAN add_vbios = gSettings.LoadVBios;
|
||||
BOOLEAN add_vbios = gSettings.Graphics.LoadVBios;
|
||||
CHAR8 *name;
|
||||
CHAR8 *name_parent;
|
||||
// CHAR8 *model;
|
||||
@ -2027,9 +2027,9 @@ static BOOLEAN init_card(pci_dt_t *pci_dev)
|
||||
|
||||
card->flags |= FLAGNOTFAKE;
|
||||
|
||||
NameLen = gSettings.FBName.length();
|
||||
NameLen = gSettings.Graphics.FBName.length();
|
||||
if (NameLen > 2) { //fool proof: cfg_name is 3 character or more.
|
||||
card->cfg_name = S8Printf("%ls", gSettings.FBName.wc_str()).forgetDataWithoutFreeing();
|
||||
card->cfg_name = S8Printf("%ls", gSettings.Graphics.FBName.wc_str()).forgetDataWithoutFreeing();
|
||||
DBG("Users config name %s\n", card->cfg_name);
|
||||
} else {
|
||||
// use cfg_name on radeon_cards, to retrive the default name from card_configs,
|
||||
@ -2040,8 +2040,8 @@ static BOOLEAN init_card(pci_dt_t *pci_dev)
|
||||
DBG(" N ports defaults to %lld\n", n_ports);
|
||||
}
|
||||
|
||||
if (gSettings.VideoPorts != 0) {
|
||||
n_ports = gSettings.VideoPorts;
|
||||
if (gSettings.Graphics.VideoPorts != 0) {
|
||||
n_ports = gSettings.Graphics.VideoPorts;
|
||||
DBG(" use N ports setting from config.plist: %lld\n", n_ports);
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
|
||||
#include "nvidia.h"
|
||||
|
||||
#include "../Platform/Settings.h"
|
||||
|
||||
/*
|
||||
injection for NVIDIA card usage e.g (to be placed in the config.plist, under graphics tag):
|
||||
@ -65,26 +65,25 @@
|
||||
#endif
|
||||
|
||||
//LIST_ENTRY gCardList = INITIALIZE_LIST_HEAD_VARIABLE (gCardList);
|
||||
XObjArray<CARDLIST> gCardList;
|
||||
|
||||
|
||||
void AddCard(CONST CHAR8* Model, UINT32 Id, UINT32 SubId, UINT64 VideoRam, UINTN VideoPorts, BOOLEAN LoadVBios)
|
||||
//void AddCard(CONST CHAR8* Model, UINT32 Id, UINT32 SubId, UINT64 VideoRam, UINTN VideoPorts, BOOLEAN LoadVBios)
|
||||
//{
|
||||
// CARDLIST* new_card = new CARDLIST;
|
||||
// new_card->Signature = CARDLIST_SIGNATURE;
|
||||
// new_card->Id = Id;
|
||||
// new_card->SubId = SubId;
|
||||
// new_card->VideoRam = VideoRam;
|
||||
// new_card->VideoPorts = VideoPorts;
|
||||
// new_card->LoadVBios = LoadVBios;
|
||||
// new_card->Model.takeValueFrom(Model);
|
||||
// gCardList.AddReference(new_card, true);
|
||||
//}
|
||||
|
||||
const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD* FindCardWithIds(UINT32 Id, UINT32 SubId)
|
||||
{
|
||||
CARDLIST* new_card = new CARDLIST;
|
||||
new_card->Signature = CARDLIST_SIGNATURE;
|
||||
new_card->Id = Id;
|
||||
new_card->SubId = SubId;
|
||||
new_card->VideoRam = VideoRam;
|
||||
new_card->VideoPorts = VideoPorts;
|
||||
new_card->LoadVBios = LoadVBios;
|
||||
new_card->Model.takeValueFrom(Model);
|
||||
gCardList.AddReference(new_card, true);
|
||||
}
|
||||
|
||||
const CARDLIST* FindCardWithIds(UINT32 Id, UINT32 SubId)
|
||||
{
|
||||
for ( size_t idx = 0; idx < gCardList._Len; ++idx ) {
|
||||
const CARDLIST& entry = gCardList[idx];
|
||||
for ( size_t idx = 0; idx < gSettings.Graphics.gCardList.size(); ++idx ) {
|
||||
const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD& entry = gSettings.Graphics.gCardList[idx];
|
||||
if(entry.Id == Id) {
|
||||
return &entry;
|
||||
}
|
||||
@ -94,7 +93,7 @@ const CARDLIST* FindCardWithIds(UINT32 Id, UINT32 SubId)
|
||||
|
||||
void FillCardList(const TagDict* CfgDict)
|
||||
{
|
||||
if (gCardList.isEmpty() && (CfgDict != NULL)) {
|
||||
if (gSettings.Graphics.gCardList.isEmpty() && (CfgDict != NULL)) {
|
||||
CONST CHAR8 *VEN[] = { "NVIDIA", "ATI" };
|
||||
size_t Count = sizeof(VEN) / sizeof(VEN[0]);
|
||||
|
||||
@ -109,13 +108,16 @@ void FillCardList(const TagDict* CfgDict)
|
||||
const TagStruct* prop2 = 0;
|
||||
const TagStruct* element = 0;
|
||||
count = prop->arrayContent().size();
|
||||
for (i = 0; i < count; i++) {
|
||||
CONST CHAR8 *model_name = NULL;
|
||||
UINT32 dev_id = 0;
|
||||
UINT32 subdev_id = 0;
|
||||
UINT64 VramSize = 0;
|
||||
UINTN VideoPorts = 0;
|
||||
BOOLEAN LoadVBios = FALSE;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD* new_card = new SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD;
|
||||
|
||||
// CONST CHAR8 *model_name = NULL;
|
||||
// UINT32 dev_id = 0;
|
||||
// UINT32 subdev_id = 0;
|
||||
// UINT64 VramSize = 0;
|
||||
// UINTN VideoPorts = 0;
|
||||
// BOOLEAN LoadVBios = FALSE;
|
||||
element = &prop->arrayContent()[i];
|
||||
if ( !element->isDict()) {
|
||||
MsgLog("MALFORMED PLIST in FillCardList() : element is not a dict");
|
||||
@ -125,31 +127,39 @@ void FillCardList(const TagDict* CfgDict)
|
||||
|
||||
prop2 = dictElement->propertyForKey("Model");
|
||||
if ( prop2->isString() && prop2->getString()->stringValue().notEmpty() ) {
|
||||
model_name = prop2->getString()->stringValue().c_str();
|
||||
new_card->Model = prop2->getString()->stringValue();
|
||||
} else {
|
||||
model_name = "VideoCard";
|
||||
new_card->Model = "VideoCard"_XS8;
|
||||
}
|
||||
|
||||
prop2 = dictElement->propertyForKey("IOPCIPrimaryMatch");
|
||||
dev_id = (UINT32)GetPropertyAsInteger(prop2, 0);
|
||||
new_card->Id = (UINT32)GetPropertyAsInteger(prop2, 0);
|
||||
|
||||
prop2 = dictElement->propertyForKey("IOPCISubDevId");
|
||||
subdev_id = (UINT32)GetPropertyAsInteger(prop2, 0);
|
||||
new_card->SubId = (UINT32)GetPropertyAsInteger(prop2, 0);
|
||||
|
||||
prop2 = dictElement->propertyForKey("VRAM");
|
||||
VramSize = LShiftU64((UINTN)GetPropertyAsInteger(prop2, (INTN)VramSize), 20); //Mb -> bytes
|
||||
new_card->VideoRam = LShiftU64((UINTN)GetPropertyAsInteger(prop2, 0), 20); //Mb -> bytes
|
||||
|
||||
prop2 = dictElement->propertyForKey("VideoPorts");
|
||||
VideoPorts = (UINT16)GetPropertyAsInteger(prop2, VideoPorts);
|
||||
new_card->VideoPorts = (UINT16)GetPropertyAsInteger(prop2, 0);
|
||||
|
||||
prop2 = dictElement->propertyForKey("LoadVBios");
|
||||
if (prop2 != NULL && IsPropertyNotNullAndTrue(prop2)) {
|
||||
LoadVBios = TRUE;
|
||||
new_card->LoadVBios = TRUE;
|
||||
}
|
||||
|
||||
DBG("FillCardList :: %s : \"%s\" (%08X, %08X)\n", key, model_name, dev_id, subdev_id);
|
||||
DBG("FillCardList :: %s : \"%s\" (%08X, %08X)\n", key, new_card->Model.c_str(), new_card->Id, new_card->SubId);
|
||||
|
||||
AddCard(model_name, dev_id, subdev_id, VramSize, VideoPorts, LoadVBios);
|
||||
// AddCard(model_name, dev_id, subdev_id, VramSize, VideoPorts, LoadVBios);
|
||||
new_card->Signature = CARDLIST_SIGNATURE;
|
||||
// new_card->Id = dev_id;
|
||||
// new_card->SubId = subdev_id;
|
||||
// new_card->VideoRam = VramSize;
|
||||
// new_card->VideoPorts = VideoPorts;
|
||||
// new_card->LoadVBios = LoadVBios;
|
||||
// new_card->Model.takeValueFrom(model_name);
|
||||
gSettings.Graphics.gCardList.AddReference(new_card, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,24 +9,7 @@
|
||||
#define PLATFORM_CARD_VLIST_H_
|
||||
|
||||
#include "../Platform/plist/plist.h"
|
||||
|
||||
|
||||
class CARDLIST {
|
||||
public:
|
||||
UINT32 Signature = 0;
|
||||
XString8 Model = XString8();
|
||||
UINT32 Id = 0;
|
||||
UINT32 SubId = 0;
|
||||
UINT64 VideoRam = 0;
|
||||
UINTN VideoPorts = 0;
|
||||
BOOLEAN LoadVBios = 0;
|
||||
|
||||
CARDLIST() {}
|
||||
CARDLIST(const CARDLIST& other) = delete; // Can be defined if needed
|
||||
const CARDLIST& operator = ( const CARDLIST & ) = delete; // Can be defined if needed
|
||||
~CARDLIST() {}
|
||||
};
|
||||
|
||||
#include "../Platform/Settings.h"
|
||||
|
||||
#define CARDLIST_SIGNATURE SIGNATURE_32('C','A','R','D')
|
||||
|
||||
@ -36,21 +19,21 @@ FillCardList (
|
||||
const TagDict* CfgDict
|
||||
);
|
||||
|
||||
const CARDLIST*
|
||||
const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD*
|
||||
FindCardWithIds (
|
||||
UINT32 Id,
|
||||
UINT32 SubId
|
||||
);
|
||||
|
||||
void
|
||||
AddCard (
|
||||
CONST CHAR8 *Model,
|
||||
UINT32 Id,
|
||||
UINT32 SubId,
|
||||
UINT64 VideoRam,
|
||||
UINTN VideoPorts,
|
||||
BOOLEAN LoadVBios
|
||||
);
|
||||
//void
|
||||
//AddCard (
|
||||
// CONST CHAR8 *Model,
|
||||
// UINT32 Id,
|
||||
// UINT32 SubId,
|
||||
// UINT64 VideoRam,
|
||||
// UINTN VideoPorts,
|
||||
// BOOLEAN LoadVBios
|
||||
// );
|
||||
|
||||
|
||||
|
||||
|
@ -1364,7 +1364,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
MsgLog(" IntelHDMI: used\n");
|
||||
}
|
||||
|
||||
if (gSettings.InjectEDID && gSettings.CustomEDID) {
|
||||
if (gSettings.Graphics.EDID.InjectEDID && gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
switch (gma_dev->device_id) {
|
||||
case 0x2772: // "Intel GMA 950"
|
||||
case 0x2776: // "Intel GMA 950"
|
||||
@ -1379,11 +1379,11 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
case 0x2A03: // "Intel GMA X3100"
|
||||
case 0x2A12: // "Intel GMA X3100"
|
||||
case 0x2A13: // "Intel GMA X3100"
|
||||
devprop_add_value(device, "AAPL01,override-no-connect", gSettings.CustomEDID, 128);
|
||||
devprop_add_value(device, "AAPL01,override-no-connect", gSettings.Graphics.EDID.CustomEDID.data(), 128);
|
||||
DBG(" AAPL01,override-no-connect: added\n");
|
||||
break;
|
||||
default:
|
||||
devprop_add_value(device, "AAPL00,override-no-connect", gSettings.CustomEDID, 128);
|
||||
devprop_add_value(device, "AAPL00,override-no-connect", gSettings.Graphics.EDID.CustomEDID.data(), 128);
|
||||
DBG(" AAPL00,override-no-connect: added\n");
|
||||
break;
|
||||
}
|
||||
@ -1407,10 +1407,10 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
case 0x2A03: // "Intel GMA X3100"
|
||||
case 0x2A12: // "Intel GMA X3100"
|
||||
case 0x2A13: // "Intel GMA X3100"
|
||||
if ((gSettings.DualLink == 0) || (gSettings.DualLink == 1)) {
|
||||
if (gSettings.DualLink == 1) {
|
||||
if ((gSettings.Graphics.DualLink == 0) || (gSettings.Graphics.DualLink == 1)) {
|
||||
if (gSettings.Graphics.DualLink == 1) {
|
||||
DBG(" DualLink: set to 1\n");
|
||||
devprop_add_value(device, "AAPL01,DualLink", (UINT8*)&gSettings.DualLink, 1);
|
||||
devprop_add_value(device, "AAPL01,DualLink", (UINT8*)&gSettings.Graphics.DualLink, 1);
|
||||
DBG(" AAPL01,DualLink = 1\n");
|
||||
} else {
|
||||
DBG(" DualLink: set to 0\n");
|
||||
@ -1435,10 +1435,10 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if ((gSettings.DualLink == 0) || (gSettings.DualLink == 1)) {
|
||||
if (gSettings.DualLink == 1) {
|
||||
if ((gSettings.Graphics.DualLink == 0) || (gSettings.Graphics.DualLink == 1)) {
|
||||
if (gSettings.Graphics.DualLink == 1) {
|
||||
DBG(" DualLink: set to 1\n");
|
||||
devprop_add_value(device, "AAPL00,DualLink", (UINT8*)&gSettings.DualLink, 1);
|
||||
devprop_add_value(device, "AAPL00,DualLink", (UINT8*)&gSettings.Graphics.DualLink, 1);
|
||||
DBG(" AAPL00,DualLink = 1\n");
|
||||
} else {
|
||||
DBG(" DualLink: set to 0\n");
|
||||
@ -1484,18 +1484,18 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
case 0x0116: // "Intel HD Graphics 3000"
|
||||
case 0x0122: // "Intel HD Graphics 3000"
|
||||
case 0x0126: // "Intel HD Graphics 3000"
|
||||
if (gSettings.IgPlatform != 0) {
|
||||
devprop_add_value(device, "AAPL,snb-platform-id", (UINT8*)&gSettings.IgPlatform, 4);
|
||||
MsgLog(" snb-platform-id = 0x%08x\n", gSettings.IgPlatform);
|
||||
if (gSettings.Graphics.IgPlatform != 0) {
|
||||
devprop_add_value(device, "AAPL,snb-platform-id", (UINT8*)&gSettings.Graphics.IgPlatform, 4);
|
||||
MsgLog(" snb-platform-id = 0x%08x\n", gSettings.Graphics.IgPlatform);
|
||||
SetSnb = TRUE;
|
||||
} else {
|
||||
DBG(" snb-platform-id: not set\n");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (gSettings.IgPlatform != 0) {
|
||||
devprop_add_value(device, "AAPL,ig-platform-id", (UINT8*)&gSettings.IgPlatform, 4);
|
||||
MsgLog(" ig-platform-id = 0x%08x\n", gSettings.IgPlatform);
|
||||
if (gSettings.Graphics.IgPlatform != 0) {
|
||||
devprop_add_value(device, "AAPL,ig-platform-id", (UINT8*)&gSettings.Graphics.IgPlatform, 4);
|
||||
MsgLog(" ig-platform-id = 0x%08x\n", gSettings.Graphics.IgPlatform);
|
||||
SetIg = TRUE;
|
||||
} else {
|
||||
DBG(" ig-platform-id: not set\n");
|
||||
@ -1912,7 +1912,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x00030030:
|
||||
case (UINT32)0x00050000:
|
||||
break;
|
||||
@ -2036,7 +2036,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x01620006:
|
||||
case (UINT32)0x01620007:
|
||||
break;
|
||||
@ -2197,7 +2197,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x04120004:
|
||||
case (UINT32)0x0412000B:
|
||||
break;
|
||||
@ -2514,7 +2514,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x19020001:
|
||||
case (UINT32)0x19120001:
|
||||
case (UINT32)0x19170001:
|
||||
@ -2872,7 +2872,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x59120003:
|
||||
case (UINT32)0x59180002:
|
||||
break;
|
||||
@ -3119,7 +3119,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (gSettings.IgPlatform) {
|
||||
switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x3E910003:
|
||||
case (UINT32)0x3E920003:
|
||||
case (UINT32)0x3E980003:
|
||||
@ -3287,7 +3287,7 @@ BOOLEAN setup_gma_devprop(LOADER_ENTRY *Entry, pci_dt_t *gma_dev)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
/*switch (gSettings.IgPlatform) {
|
||||
/*switch (gSettings.Graphics.IgPlatform) {
|
||||
case (UINT32)0x5A510003:
|
||||
case (UINT32)0x5A520003:
|
||||
break;
|
||||
|
@ -2012,14 +2012,14 @@ static INT32 patch_nvidia_rom(UINT8 *rom)
|
||||
return (has_lvds ? PATCH_ROM_SUCCESS_HAS_LVDS : PATCH_ROM_SUCCESS);
|
||||
}
|
||||
|
||||
CONST CHAR8 *get_nvidia_model(UINT32 device_id, UINT32 subsys_id, const CARDLIST * nvcard)
|
||||
CONST CHAR8 *get_nvidia_model(UINT32 device_id, UINT32 subsys_id, const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD * nvcard)
|
||||
{
|
||||
UINTN i, j;
|
||||
//DBG("get_nvidia_model for (%08X, %08X)\n", device_id, subsys_id);
|
||||
|
||||
//ErmaC added selector for nVidia "old" style in System Profiler
|
||||
//DBG("NvidiaGeneric = %ls\n", gSettings.NvidiaGeneric?L"YES":L"NO");
|
||||
if (gSettings.NvidiaGeneric == FALSE) {
|
||||
//DBG("NvidiaGeneric = %ls\n", gSettings.Graphics.NvidiaGeneric?L"YES":L"NO");
|
||||
if (gSettings.Graphics.NvidiaGeneric == FALSE) {
|
||||
// First check in the plist, (for e.g this can override any hardcoded devices)
|
||||
//CARDLIST * nvcard = FindCardWithIds(device_id, subsys_id);
|
||||
if (nvcard && (nvcard->Id == device_id) && (nvcard->SubId == subsys_id)) {
|
||||
@ -2042,7 +2042,7 @@ CONST CHAR8 *get_nvidia_model(UINT32 device_id, UINT32 subsys_id, const CARDLIST
|
||||
if (nvidia_card_generic[i].device == device_id) {
|
||||
//--
|
||||
//ErmaC added selector for nVidia "old" style in System Profiler
|
||||
if (gSettings.NvidiaGeneric) {
|
||||
if (gSettings.Graphics.NvidiaGeneric) {
|
||||
DBG("Apply NvidiaGeneric\n");
|
||||
snprintf(generic_name, 128, "NVIDIA %s", nvidia_card_generic[i].name_model);
|
||||
return &generic_name[0]; // generic_name;
|
||||
@ -2094,9 +2094,9 @@ static INT32 devprop_add_nvidia_template(DevPropDevice *device, INTN n_ports)
|
||||
|
||||
snprintf(nkey, 24, "@%lld,display-cfg", pnum);
|
||||
if (pnum == 0) {
|
||||
devprop_add_value(device, nkey, (gSettings.Dcfg[0] != 0) ? &gSettings.Dcfg[0] : default_dcfg_0, DCFG0_LEN);
|
||||
devprop_add_value(device, nkey, (gSettings.Graphics.Dcfg[0] != 0) ? &gSettings.Graphics.Dcfg[0] : default_dcfg_0, DCFG0_LEN);
|
||||
} else {
|
||||
devprop_add_value(device, nkey, (gSettings.Dcfg[1] != 0) ? &gSettings.Dcfg[4] : default_dcfg_1, DCFG1_LEN);
|
||||
devprop_add_value(device, nkey, (gSettings.Graphics.Dcfg[1] != 0) ? &gSettings.Graphics.Dcfg[4] : default_dcfg_1, DCFG1_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2182,7 +2182,7 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
EFI_STATUS Status = EFI_NOT_FOUND;
|
||||
DevPropDevice *device = NULL;
|
||||
XString8 devicepath;
|
||||
BOOLEAN load_vbios = gSettings.LoadVBios;
|
||||
BOOLEAN load_vbios = gSettings.Graphics.LoadVBios;
|
||||
BOOLEAN Injected = FALSE;
|
||||
UINT8 *rom = NULL;
|
||||
UINT16 nvCardType = 0;
|
||||
@ -2201,7 +2201,7 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
XString8 version_str;
|
||||
BOOLEAN RomAssigned = FALSE;
|
||||
UINT32 device_id, subsys_id;
|
||||
const CARDLIST *nvcard;
|
||||
const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD *nvcard;
|
||||
|
||||
devicepath = get_pci_dev_path(nvda_dev);
|
||||
bar[0] = pci_config_read32(nvda_dev, PCI_BASE_ADDRESS_0);
|
||||
@ -2229,14 +2229,14 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
} else {
|
||||
|
||||
// Amount of VRAM in Mb
|
||||
if (gSettings.VRAM != 0) {
|
||||
videoRam = gSettings.VRAM << 20;
|
||||
if (gSettings.Graphics.VRAM != 0) {
|
||||
videoRam = gSettings.Graphics.VRAM << 20;
|
||||
} else {
|
||||
videoRam = mem_detect(nvCardType, nvda_dev);
|
||||
}
|
||||
}
|
||||
|
||||
if (gSettings.NvidiaGeneric) {
|
||||
if (gSettings.Graphics.NvidiaGeneric) {
|
||||
// Get Model from the PCI
|
||||
// model = get_nvidia_model(((nvda_dev->vendor_id << 16) | nvda_dev->device_id), subsystem);
|
||||
if (model == NULL) { // !nvcard->Model
|
||||
@ -2409,20 +2409,20 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
DBG("Nvidia: VideoPorts:");
|
||||
if (n_ports > 0) {
|
||||
DBG(" user defined (GUI-menu): %llu\n", n_ports);
|
||||
} else if (gSettings.VideoPorts > 0) {
|
||||
n_ports = gSettings.VideoPorts;
|
||||
} else if (gSettings.Graphics.VideoPorts > 0) {
|
||||
n_ports = gSettings.Graphics.VideoPorts;
|
||||
DBG(" user defined from config.plist: %llu\n", n_ports);
|
||||
} else {
|
||||
n_ports = 2; //default
|
||||
DBG(" undefined, default to: %llu\n", n_ports);
|
||||
}
|
||||
|
||||
if (gSettings.NvidiaNoEFI) {
|
||||
if (gSettings.Graphics.NvidiaNoEFI) {
|
||||
devprop_add_value(device, "NVDA,noEFI", (UINT8*)"true", 5);
|
||||
}
|
||||
|
||||
//There are custom properties, injected if set by user
|
||||
if (gSettings.NvidiaSingle && (devices_number >=1)) {
|
||||
if (gSettings.Graphics.NvidiaSingle && (devices_number >=1)) {
|
||||
DBG("NVidia: NvidiaSingle :: skip injecting other then first card\n");
|
||||
goto done;
|
||||
}
|
||||
@ -2458,26 +2458,26 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4);
|
||||
}
|
||||
|
||||
if (gSettings.NVCAP[0] != 0) {
|
||||
devprop_add_value(device, "NVCAP", &gSettings.NVCAP[0], NVCAP_LEN);
|
||||
if (gSettings.Graphics.NVCAP[0] != 0) {
|
||||
devprop_add_value(device, "NVCAP", &gSettings.Graphics.NVCAP[0], NVCAP_LEN);
|
||||
DBG("set NVCAP: %02hhX%02hhX%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX\n",
|
||||
gSettings.NVCAP[0], gSettings.NVCAP[1], gSettings.NVCAP[2], gSettings.NVCAP[3],
|
||||
gSettings.NVCAP[4], gSettings.NVCAP[5], gSettings.NVCAP[6], gSettings.NVCAP[7],
|
||||
gSettings.NVCAP[8], gSettings.NVCAP[9], gSettings.NVCAP[10], gSettings.NVCAP[11],
|
||||
gSettings.NVCAP[12], gSettings.NVCAP[13], gSettings.NVCAP[14], gSettings.NVCAP[15],
|
||||
gSettings.NVCAP[16], gSettings.NVCAP[17], gSettings.NVCAP[18], gSettings.NVCAP[19]);
|
||||
gSettings.Graphics.NVCAP[0], gSettings.Graphics.NVCAP[1], gSettings.Graphics.NVCAP[2], gSettings.Graphics.NVCAP[3],
|
||||
gSettings.Graphics.NVCAP[4], gSettings.Graphics.NVCAP[5], gSettings.Graphics.NVCAP[6], gSettings.Graphics.NVCAP[7],
|
||||
gSettings.Graphics.NVCAP[8], gSettings.Graphics.NVCAP[9], gSettings.Graphics.NVCAP[10], gSettings.Graphics.NVCAP[11],
|
||||
gSettings.Graphics.NVCAP[12], gSettings.Graphics.NVCAP[13], gSettings.Graphics.NVCAP[14], gSettings.Graphics.NVCAP[15],
|
||||
gSettings.Graphics.NVCAP[16], gSettings.Graphics.NVCAP[17], gSettings.Graphics.NVCAP[18], gSettings.Graphics.NVCAP[19]);
|
||||
}
|
||||
|
||||
if (gSettings.InjectEDID && gSettings.CustomEDID) {
|
||||
devprop_add_value(device, "AAPL00,override-no-connect", gSettings.CustomEDID, 128);
|
||||
if (gSettings.Graphics.EDID.InjectEDID && gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
devprop_add_value(device, "AAPL00,override-no-connect", gSettings.Graphics.EDID.CustomEDID.data(), 128);
|
||||
}
|
||||
|
||||
if ((devices_number == 1) &&
|
||||
((gSettings.BootDisplay >= 0) && (gSettings.BootDisplay < (INT8)n_ports))) {
|
||||
((gSettings.Graphics.BootDisplay >= 0) && (gSettings.Graphics.BootDisplay < (INT8)n_ports))) {
|
||||
CHAR8 nkey[24];
|
||||
snprintf(nkey, 24, "@%d,AAPL,boot-display", gSettings.BootDisplay);
|
||||
snprintf(nkey, 24, "@%d,AAPL,boot-display", gSettings.Graphics.BootDisplay);
|
||||
devprop_add_value(device, nkey, (UINT8*)&boot_display, 4);
|
||||
DBG("Nvidia: BootDisplay: %d\n", gSettings.BootDisplay);
|
||||
DBG("Nvidia: BootDisplay: %d\n", gSettings.Graphics.BootDisplay);
|
||||
}
|
||||
|
||||
//there are default or calculated properties, can be skipped
|
||||
@ -2486,11 +2486,11 @@ BOOLEAN setup_nvidia_devprop(pci_dt_t *nvda_dev)
|
||||
// goto done;
|
||||
//}
|
||||
|
||||
if (gSettings.BootDisplay < 0) {
|
||||
if (gSettings.Graphics.BootDisplay < 0) {
|
||||
// if not set this is default property
|
||||
devprop_add_value(device, "@0,AAPL,boot-display", (UINT8*)&boot_display, 4);
|
||||
}/* else {
|
||||
DBG("Nvidia: BootDisplay: %hhX\n", gSettings.BootDisplay);
|
||||
DBG("Nvidia: BootDisplay: %hhX\n", gSettings.Graphics.BootDisplay);
|
||||
}*/
|
||||
|
||||
if (gSettings.UseIntelHDMI) {
|
||||
|
@ -186,7 +186,7 @@ CONST CHAR8
|
||||
*get_nvidia_model (
|
||||
UINT32 device_id,
|
||||
UINT32 subsys_id,
|
||||
const CARDLIST * nvcard
|
||||
const SETTINGS_DATA::GraphicsClass::GRAPHIC_CARD * nvcard
|
||||
);
|
||||
|
||||
#endif /* !__LIBSAIO_NVIDIA_H */
|
||||
|
@ -1400,20 +1400,20 @@ void GetDefaultSettings()
|
||||
//default values will be overritten by config.plist
|
||||
//use explicitly settings TRUE or FALSE (Yes or No)
|
||||
|
||||
gSettings.InjectIntel = (gGraphics[0].Vendor == Intel) || (gGraphics[1].Vendor == Intel);
|
||||
gSettings.Graphics.InjectAsDict.InjectIntel = (gGraphics[0].Vendor == Intel) || (gGraphics[1].Vendor == Intel);
|
||||
|
||||
gSettings.InjectATI = (((gGraphics[0].Vendor == Ati) && ((gGraphics[0].DeviceID & 0xF000) != 0x6000)) ||
|
||||
gSettings.Graphics.InjectAsDict.InjectATI = (((gGraphics[0].Vendor == Ati) && ((gGraphics[0].DeviceID & 0xF000) != 0x6000)) ||
|
||||
((gGraphics[1].Vendor == Ati) && ((gGraphics[1].DeviceID & 0xF000) != 0x6000)));
|
||||
|
||||
gSettings.InjectNVidia = (((gGraphics[0].Vendor == Nvidia) && (gGraphics[0].Family < 0xE0)) ||
|
||||
gSettings.Graphics.InjectAsDict.InjectNVidia = (((gGraphics[0].Vendor == Nvidia) && (gGraphics[0].Family < 0xE0)) ||
|
||||
((gGraphics[1].Vendor == Nvidia) && (gGraphics[1].Family < 0xE0)));
|
||||
|
||||
gSettings.GraphicsInjector = gSettings.InjectATI || gSettings.InjectNVidia;
|
||||
CopyMem(gSettings.NVCAP, default_NVCAP, 20);
|
||||
CopyMem(gSettings.Dcfg, default_dcfg_0, 4);
|
||||
CopyMem(&gSettings.Dcfg[4], default_dcfg_1, 4);
|
||||
//gSettings.CustomEDID = NULL; //no sense to assign 0 as the structure is zeroed
|
||||
gSettings.DualLink = 0xA; // A(auto): DualLink auto-detection
|
||||
// gSettings.GraphicsInjector = gSettings.InjectATI || gSettings.InjectNVidia;
|
||||
CopyMem(gSettings.Graphics.NVCAP, default_NVCAP, 20);
|
||||
CopyMem(gSettings.Graphics.Dcfg, default_dcfg_0, 4);
|
||||
CopyMem(&gSettings.Graphics.Dcfg[4], default_dcfg_1, 4);
|
||||
//gSettings.Graphics.EDID.CustomEDID = NULL; //no sense to assign 0 as the structure is zeroed
|
||||
gSettings.Graphics.DualLink = 0xA; // A(auto): DualLink auto-detection
|
||||
gSettings.HDAInjection = FALSE;
|
||||
//gSettings.HDALayoutId = 0;
|
||||
gSettings.USBInjection = TRUE; // enabled by default to have the same behavior as before
|
||||
@ -1424,14 +1424,14 @@ void GetDefaultSettings()
|
||||
|
||||
gSettings.SmUUID = nullGuid;
|
||||
gSettings.DefaultBackgroundColor = 0x80000000; //the value to delete the variable
|
||||
gSettings.RtROM.setEmpty();
|
||||
gSettings.CsrActiveConfig = 0xFFFF;
|
||||
gSettings.BooterConfig = 0;
|
||||
// MemSet(gSettings.BooterCfgStr, 64, 0);
|
||||
// AsciiStrCpyS(gSettings.BooterCfgStr, 64, "log=0");
|
||||
GlobalConfig.RtROM.setEmpty();
|
||||
gSettings.RtVariables.CsrActiveConfig = 0xFFFF;
|
||||
gSettings.RtVariables.BooterConfig = 0;
|
||||
// MemSet(gSettings.RtVariables.BooterCfgStr, 64, 0);
|
||||
// AsciiStrCpyS(gSettings.RtVariables.BooterCfgStr, 64, "log=0");
|
||||
CHAR8 *OldCfgStr = (__typeof__(OldCfgStr))GetNvramVariable(L"bootercfg", &gEfiAppleBootGuid, NULL, NULL);
|
||||
if (OldCfgStr) {
|
||||
gSettings.BooterCfgStr.takeValueFrom(OldCfgStr);
|
||||
gSettings.RtVariables.BooterCfgStr.takeValueFrom(OldCfgStr);
|
||||
FreePool(OldCfgStr);
|
||||
}
|
||||
gSettings.Boot.DisableCloverHotkeys = FALSE;
|
||||
@ -1468,7 +1468,7 @@ void GetDefaultCpuSettings()
|
||||
//gSettings.ACPI.SSDT.DropSSDT = TRUE; //why drop all???
|
||||
gSettings.ACPI.SSDT._C3Latency = 0x00FA;
|
||||
}
|
||||
gSettings.CPU.Turbo = gCPUStructure.Turbo;
|
||||
// gSettings.CPU.Turbo = gCPUStructure.Turbo;
|
||||
gSettings.CPU.SavingMode = 0xFF; //means not set
|
||||
|
||||
if (gCPUStructure.Model >= CPU_MODEL_SKYLAKE_D) {
|
||||
|
@ -12,6 +12,7 @@
|
||||
#define __XARRAY_H__
|
||||
|
||||
#include <XToolsConf.h>
|
||||
#include "XToolsCommon.h"
|
||||
|
||||
|
||||
#if 0
|
||||
@ -57,19 +58,27 @@ class XArray
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
const TYPE& ElementAt(size_t nIndex) const;
|
||||
TYPE& ElementAt(size_t nIndex);
|
||||
const TYPE& ElementAt(int nIndex) const;
|
||||
TYPE& ElementAt(int nIndex);
|
||||
template<typename IntegralType, enable_if(is_integral(IntegralType))>
|
||||
const TYPE& ElementAt(IntegralType index) const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( index < 0 ) {
|
||||
panic("XArray::ElementAt(int) -> Operator [] : index < 0");
|
||||
}
|
||||
if ( (unsigned int)index >= m_len ) { // cast safe, index > 0
|
||||
panic("XArray::ElementAt(int) -> Operator [] : index > m_len");
|
||||
}
|
||||
#endif
|
||||
return m_data[index];
|
||||
}
|
||||
template<typename IntegralType, enable_if(is_integral(IntegralType))>
|
||||
TYPE& ElementAt(IntegralType index) { return const_cast<TYPE&>(const_cast<const XArray<TYPE>*>(this)->ElementAt(index)); }
|
||||
|
||||
template<typename IntegralType, enable_if(is_integral(IntegralType))>
|
||||
const TYPE &operator[](IntegralType nIndex) const { return ElementAt(nIndex); }
|
||||
template<typename IntegralType, enable_if(is_integral(IntegralType))>
|
||||
TYPE &operator[](IntegralType nIndex) { return ElementAt(nIndex); }
|
||||
|
||||
// const TYPE& operator[](size_t nIndex) const { return ElementAt(nIndex); }
|
||||
// TYPE& operator[](size_t nIndex) { return ElementAt(nIndex); }
|
||||
// const TYPE& operator[]( int nIndex) const { return ElementAt(nIndex); }
|
||||
TYPE& operator[]( int nIndex) { return ElementAt(nIndex); }
|
||||
// const TYPE& operator[]( unsigned long long nIndex) const { return ElementAt((size_t)nIndex); }
|
||||
// const TYPE& operator[]( long long nIndex) const { return ElementAt((size_t)nIndex); }
|
||||
TYPE& operator[]( unsigned long long nIndex) { return ElementAt((size_t)nIndex); }
|
||||
TYPE& operator[]( long long nIndex) { return ElementAt((size_t)nIndex); }
|
||||
|
||||
operator const void *() const { return m_data; };
|
||||
operator void *() { return m_data; };
|
||||
@ -214,60 +223,6 @@ void XArray<TYPE>::setSize(size_t l)
|
||||
}
|
||||
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
TYPE &XArray<TYPE>::ElementAt(size_t index)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( index >= m_len ) {
|
||||
panic("XArray::ElementAt(size_t) -> Operator [] : index > m_len");
|
||||
}
|
||||
#endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
const TYPE& XArray<TYPE>::ElementAt(size_t index) const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( index >= m_len ) {
|
||||
panic("XArray::ElementAt(size_t) const -> Operator [] : index > m_len");
|
||||
}
|
||||
#endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
TYPE &XArray<TYPE>::ElementAt(int index)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( index < 0 ) {
|
||||
panic("XArray::ElementAt(int) -> Operator [] : index < 0");
|
||||
}
|
||||
if ( (unsigned int)index >= m_len ) { // cast safe, index > 0
|
||||
panic("XArray::ElementAt(int) -> Operator [] : index > m_len");
|
||||
}
|
||||
#endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
const TYPE& XArray<TYPE>::ElementAt(int index) const
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( index < 0 ) {
|
||||
panic("XArray::ElementAt(int) const -> Operator [] : index < 0");
|
||||
}
|
||||
if ( (unsigned int)index >= m_len ) { // cast ok as index > 0. Ideally cast would be like '(unsigned __typeof__(index))'
|
||||
panic("XArray::ElementAt(int) const -> Operator [] : index > m_len");
|
||||
}
|
||||
#endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* Add(size_t) */
|
||||
template<class TYPE>
|
||||
size_t XArray<TYPE>::AddUninitialized(size_t count)
|
||||
|
@ -34,7 +34,7 @@ class XObjArrayEntry
|
||||
template<class TYPE>
|
||||
class XObjArrayNC
|
||||
{
|
||||
public:
|
||||
protected:
|
||||
XObjArrayEntry<TYPE> *_Data;
|
||||
size_t _Len;
|
||||
size_t m_allocatedSize;
|
||||
|
@ -28,7 +28,7 @@ public:
|
||||
}
|
||||
const T& dgetValue() const { return m_value; } // if !m_defined, m_value = T()
|
||||
|
||||
operator const T&() const {
|
||||
explicit operator const T&() const {
|
||||
if ( !isDefined() ) panic("get value of an undefined undefinable type");
|
||||
return m_value;
|
||||
}
|
||||
@ -43,6 +43,8 @@ class undefinable_bool : public undefinable<bool>
|
||||
{
|
||||
using super = undefinable<bool>;
|
||||
public:
|
||||
undefinable_bool() { }
|
||||
undefinable_bool(bool newValue) { super::operator=(newValue); }
|
||||
undefinable_bool& operator = (bool newValue) { super::operator=(newValue); return *this; }
|
||||
};
|
||||
|
||||
@ -50,6 +52,8 @@ class undefinable_uint16 : public undefinable<uint16_t>
|
||||
{
|
||||
using super = undefinable<uint16_t>;
|
||||
public:
|
||||
undefinable_uint16() { }
|
||||
undefinable_uint16(uint32_t newValue) { super::operator=(newValue); }
|
||||
undefinable_uint16& operator = (uint16_t newValue) { super::operator=(newValue); return *this; }
|
||||
};
|
||||
|
||||
@ -57,6 +61,8 @@ class undefinable_uint32 : public undefinable<uint32_t>
|
||||
{
|
||||
using super = undefinable<uint32_t>;
|
||||
public:
|
||||
undefinable_uint32() { }
|
||||
undefinable_uint32(uint32_t newValue) { super::operator=(newValue); }
|
||||
undefinable_uint32& operator = (uint32_t newValue) { super::operator=(newValue); return *this; }
|
||||
};
|
||||
|
||||
|
@ -898,7 +898,7 @@ void LOADER_ENTRY::AddDefaultMenu()
|
||||
// SubScreen->AddMenuCheck("Disable AppleALC (-alcoff)", OPT_APPLEALC, 68);
|
||||
// SubScreen->AddMenuCheck("Disable Shiki (-shikioff)", OPT_SHIKI, 68);
|
||||
|
||||
if (gSettings.CsrActiveConfig == 0) {
|
||||
if (gSettings.RtVariables.CsrActiveConfig == 0) {
|
||||
SubScreen->AddMenuCheck("No SIP", OSFLAG_NOSIP, 69);
|
||||
}
|
||||
|
||||
|
@ -735,16 +735,16 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS
|
||||
OldRow = 0;
|
||||
OldTimeoutTextWidth = 0;
|
||||
|
||||
if (AllowGraphicsMode) {
|
||||
// Style = &REFIT_MENU_SCREEN::GraphicsMenuStyle;
|
||||
if (ThemeX.VerticalLayout) {
|
||||
m_MainStyle = &REFIT_MAINMENU_SCREEN::MainMenuVerticalStyle;
|
||||
} else {
|
||||
m_MainStyle = &REFIT_MAINMENU_SCREEN::MainMenuStyle;
|
||||
}
|
||||
}else{
|
||||
m_MainStyle = &REFIT_MAINMENU_SCREEN::TextMenuStyle;
|
||||
}
|
||||
// if (AllowGraphicsMode) {
|
||||
//// Style = &REFIT_MENU_SCREEN::GraphicsMenuStyle;
|
||||
// if (ThemeX.VerticalLayout) {
|
||||
// m_MainStyle = &REFIT_MAINMENU_SCREEN::MainMenuVerticalStyle;
|
||||
// } else {
|
||||
// m_MainStyle = &REFIT_MAINMENU_SCREEN::MainMenuStyle;
|
||||
// }
|
||||
// }else{
|
||||
// m_MainStyle = &REFIT_MAINMENU_SCREEN::TextMenuStyle;
|
||||
// }
|
||||
|
||||
while (!MenuExit) {
|
||||
GetAnime();
|
||||
@ -752,121 +752,129 @@ UINTN REFIT_MAINMENU_SCREEN::RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABS
|
||||
MenuExit = RunGenericMenu(&DefaultEntryIndex, &MainChosenEntry);
|
||||
TimeoutSeconds = 0;
|
||||
|
||||
if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL && MainChosenEntry->SubScreen->Entries.size() > 0) { // if MainChosenEntry->SubScreen->Entries.size() == 0, we got a crash in GraphicsMenuStyle
|
||||
XString8Array TmpArgs;
|
||||
if ( gSettings.Boot.BootArgs.length() > 0) {
|
||||
TmpArgs = Split<XString8Array>(gSettings.Boot.BootArgs, " ");
|
||||
}
|
||||
SubMenuIndex = -1;
|
||||
if (MenuExit == MENU_EXIT_DETAILS && MainChosenEntry->SubScreen != NULL) {
|
||||
if ( MainChosenEntry->SubScreen->Entries.size() > 0 ) { // if MainChosenEntry->SubScreen->Entries.size() == 0, we got a crash in GraphicsMenuStyle
|
||||
XString8Array TmpArgs;
|
||||
if ( gSettings.Boot.BootArgs.length() > 0) {
|
||||
TmpArgs = Split<XString8Array>(gSettings.Boot.BootArgs, " ");
|
||||
}
|
||||
SubMenuIndex = -1;
|
||||
|
||||
gSettings.OptionsBits = EncodeOptions(TmpArgs);
|
||||
DBG("main OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
gSettings.OptionsBits = EncodeOptions(TmpArgs);
|
||||
// DBG("main OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
|
||||
if (MainChosenEntry->getLOADER_ENTRY()) {
|
||||
gSettings.OptionsBits |= EncodeOptions(MainChosenEntry->getLOADER_ENTRY()->LoadOptions);
|
||||
DBG("add OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
}
|
||||
|
||||
if (MainChosenEntry->getREFIT_MENU_ITEM_BOOTNUM()) {
|
||||
DecodeOptions(MainChosenEntry->getREFIT_MENU_ITEM_BOOTNUM());
|
||||
}
|
||||
// DBG(" enter menu with LoadOptions: %s\n", ((LOADER_ENTRY*)MainChosenEntry)->LoadOptions.c_str());
|
||||
DBG(" enter menu with LoadOptions: \n");
|
||||
if (MainChosenEntry->getLOADER_ENTRY()) {
|
||||
// Only for non-legacy entries, as LEGACY_ENTRY doesn't have Flags
|
||||
gSettings.FlagsBits = MainChosenEntry->getLOADER_ENTRY()->Flags;
|
||||
}
|
||||
DBG(" MainChosenEntry with FlagsBits = 0x%X\n", gSettings.FlagsBits);
|
||||
|
||||
SubMenuExit = 0;
|
||||
while (!SubMenuExit) {
|
||||
//
|
||||
//running details menu
|
||||
//
|
||||
SubMenuExit = MainChosenEntry->SubScreen->RunGenericMenu(&SubMenuIndex, &TempChosenEntry);
|
||||
DBG("SubMenuExit=%lld\n", SubMenuExit);
|
||||
if (SubMenuExit == MENU_EXIT_ESCAPE || TempChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
SubMenuExit = MENU_EXIT_ENTER;
|
||||
MenuExit = 0;
|
||||
break;
|
||||
if (MainChosenEntry->getLOADER_ENTRY()) {
|
||||
gSettings.OptionsBits |= EncodeOptions(MainChosenEntry->getLOADER_ENTRY()->LoadOptions);
|
||||
// DBG("add OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
}
|
||||
|
||||
if (MainChosenEntry->getREFIT_MENU_ENTRY_CLOVER()) {
|
||||
MainChosenEntry->getREFIT_MENU_ENTRY_CLOVER()->LoadOptions = (((REFIT_MENU_ENTRY_CLOVER*)TempChosenEntry)->LoadOptions);
|
||||
if (MainChosenEntry->getREFIT_MENU_ITEM_BOOTNUM()) {
|
||||
DecodeOptions(MainChosenEntry->getREFIT_MENU_ITEM_BOOTNUM());
|
||||
}
|
||||
DBG("got options\n");
|
||||
if (SubMenuExit == MENU_EXIT_DETAILS) {
|
||||
SubMenuExit = 0;
|
||||
continue;
|
||||
// DBG(" enter menu with LoadOptions: %ls\n", ((LOADER_ENTRY*)MainChosenEntry)->LoadOptions);
|
||||
|
||||
if (MainChosenEntry->getLOADER_ENTRY()) {
|
||||
// Only for non-legacy entries, as LEGACY_ENTRY doesn't have Flags
|
||||
gSettings.FlagsBits = MainChosenEntry->getLOADER_ENTRY()->Flags;
|
||||
}
|
||||
// DBG(" exit menu with LoadOptions: %s\n", ((LOADER_ENTRY*)MainChosenEntry)->LoadOptions.c_str());
|
||||
DBG(" exit menu with LoadOptions: \n");
|
||||
if (SubMenuExit == MENU_EXIT_ENTER && MainChosenEntry->getLOADER_ENTRY() && TempChosenEntry->getLOADER_ENTRY()) {
|
||||
// Only for non-legacy entries, as LEGACY_ENTRY doesn't have Flags/Options
|
||||
MainChosenEntry->getLOADER_ENTRY()->Flags = TempChosenEntry->getLOADER_ENTRY()->Flags;
|
||||
DBG(" get MainChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)MainChosenEntry)->Flags);
|
||||
if (OSFLAG_ISUNSET(TempChosenEntry->getLOADER_ENTRY()->Flags, OSFLAG_NODEFAULTARGS)) {
|
||||
DecodeOptions(TempChosenEntry->getLOADER_ENTRY());
|
||||
DBG("get OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
DBG(" TempChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)TempChosenEntry)->Flags);
|
||||
// DBG(" MainChosenEntry with FlagsBits = 0x%X\n", gSettings.FlagsBits);
|
||||
|
||||
SubMenuExit = 0;
|
||||
while (!SubMenuExit) {
|
||||
//
|
||||
//running details menu
|
||||
//
|
||||
SubMenuExit = MainChosenEntry->SubScreen->RunGenericMenu(&SubMenuIndex, &TempChosenEntry);
|
||||
|
||||
if (SubMenuExit == MENU_EXIT_ESCAPE || TempChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
SubMenuExit = MENU_EXIT_ENTER;
|
||||
MenuExit = 0;
|
||||
break;
|
||||
}
|
||||
// copy also loadoptions from subentry to mainentry
|
||||
MainChosenEntry->getLOADER_ENTRY()->LoadOptions = TempChosenEntry->getLOADER_ENTRY()->LoadOptions;
|
||||
}
|
||||
|
||||
if (/*MenuExit == MENU_EXIT_ENTER &&*/ TempChosenEntry->getLOADER_ENTRY()) {
|
||||
if (TempChosenEntry->getLOADER_ENTRY()->LoadOptions.notEmpty()) {
|
||||
gSettings.Boot.BootArgs = TempChosenEntry->getLOADER_ENTRY()->LoadOptions.ConcatAll(" "_XS8);
|
||||
} else {
|
||||
gSettings.Boot.BootArgs.setEmpty();
|
||||
if (MainChosenEntry->getREFIT_MENU_ENTRY_CLOVER()) {
|
||||
MainChosenEntry->getREFIT_MENU_ENTRY_CLOVER()->LoadOptions = (((REFIT_MENU_ENTRY_CLOVER*)TempChosenEntry)->LoadOptions);
|
||||
}
|
||||
DBG(" boot with args: %s\n", gSettings.Boot.BootArgs.c_str());
|
||||
}
|
||||
|
||||
//---- Details submenu (kexts disabling etc)
|
||||
if (SubMenuExit == MENU_EXIT_ENTER /*|| MenuExit == MENU_EXIT_DETAILS*/) {
|
||||
if (TempChosenEntry->SubScreen != NULL) {
|
||||
UINTN NextMenuExit = 0;
|
||||
INTN NextEntryIndex = -1;
|
||||
while (!NextMenuExit) {
|
||||
//
|
||||
// running submenu
|
||||
//
|
||||
NextMenuExit = TempChosenEntry->SubScreen->RunGenericMenu(&NextEntryIndex, &NextChosenEntry);
|
||||
if (NextMenuExit == MENU_EXIT_ESCAPE || NextChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
SubMenuExit = 0;
|
||||
NextMenuExit = MENU_EXIT_ENTER;
|
||||
break;
|
||||
}
|
||||
DBG(" get NextChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)NextChosenEntry)->Flags);
|
||||
//---- Details submenu (kexts disabling etc) second level
|
||||
if (NextMenuExit == MENU_EXIT_ENTER /*|| MenuExit == MENU_EXIT_DETAILS*/) {
|
||||
if (NextChosenEntry->SubScreen != NULL) {
|
||||
UINTN DeepMenuExit = 0;
|
||||
INTN DeepEntryIndex = -1;
|
||||
REFIT_ABSTRACT_MENU_ENTRY *DeepChosenEntry = NULL;
|
||||
while (!DeepMenuExit) {
|
||||
//
|
||||
// run deep submenu
|
||||
//
|
||||
DeepMenuExit = NextChosenEntry->SubScreen->RunGenericMenu(&DeepEntryIndex, &DeepChosenEntry);
|
||||
if (DeepMenuExit == MENU_EXIT_ESCAPE || DeepChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
DeepMenuExit = MENU_EXIT_ENTER;
|
||||
NextMenuExit = 0;
|
||||
break;
|
||||
}
|
||||
DBG(" get DeepChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)DeepChosenEntry)->Flags);
|
||||
} //while(!DeepMenuExit)
|
||||
if (SubMenuExit == MENU_EXIT_DETAILS) {
|
||||
SubMenuExit = 0;
|
||||
continue;
|
||||
}
|
||||
// DBG(" exit menu with LoadOptions: %ls\n", ((LOADER_ENTRY*)MainChosenEntry)->LoadOptions);
|
||||
|
||||
if (SubMenuExit == MENU_EXIT_ENTER && MainChosenEntry->getLOADER_ENTRY() && TempChosenEntry->getLOADER_ENTRY()) {
|
||||
// Only for non-legacy entries, as LEGACY_ENTRY doesn't have Flags/Options
|
||||
MainChosenEntry->getLOADER_ENTRY()->Flags = TempChosenEntry->getLOADER_ENTRY()->Flags;
|
||||
DBG(" get MainChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)MainChosenEntry)->Flags);
|
||||
if (OSFLAG_ISUNSET(TempChosenEntry->getLOADER_ENTRY()->Flags, OSFLAG_NODEFAULTARGS)) {
|
||||
DecodeOptions(TempChosenEntry->getLOADER_ENTRY());
|
||||
// DBG("get OptionsBits = 0x%X\n", gSettings.OptionsBits);
|
||||
// DBG(" TempChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)TempChosenEntry)->Flags);
|
||||
}
|
||||
// copy also loadoptions from subentry to mainentry
|
||||
MainChosenEntry->getLOADER_ENTRY()->LoadOptions = TempChosenEntry->getLOADER_ENTRY()->LoadOptions;
|
||||
}
|
||||
|
||||
if (/*MenuExit == MENU_EXIT_ENTER &&*/ TempChosenEntry->getLOADER_ENTRY()) {
|
||||
if (TempChosenEntry->getLOADER_ENTRY()->LoadOptions.notEmpty()) {
|
||||
gSettings.Boot.BootArgs = TempChosenEntry->getLOADER_ENTRY()->LoadOptions.ConcatAll(" "_XS8);
|
||||
} else {
|
||||
gSettings.Boot.BootArgs.setEmpty();
|
||||
}
|
||||
DBG(" boot with args: %s\n", gSettings.Boot.BootArgs.c_str());
|
||||
}
|
||||
|
||||
//---- Details submenu (kexts disabling etc)
|
||||
if (SubMenuExit == MENU_EXIT_ENTER /*|| MenuExit == MENU_EXIT_DETAILS*/) {
|
||||
if (TempChosenEntry->SubScreen != NULL) {
|
||||
UINTN NextMenuExit = 0;
|
||||
INTN NextEntryIndex = -1;
|
||||
while (!NextMenuExit) {
|
||||
//
|
||||
// running submenu
|
||||
//
|
||||
NextMenuExit = TempChosenEntry->SubScreen->RunGenericMenu(&NextEntryIndex, &NextChosenEntry);
|
||||
if (NextMenuExit == MENU_EXIT_ESCAPE || NextChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
SubMenuExit = 0;
|
||||
NextMenuExit = MENU_EXIT_ENTER;
|
||||
break;
|
||||
}
|
||||
DBG(" get NextChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)NextChosenEntry)->Flags);
|
||||
//---- Details submenu (kexts disabling etc) second level
|
||||
if (NextMenuExit == MENU_EXIT_ENTER /*|| MenuExit == MENU_EXIT_DETAILS*/) {
|
||||
if (NextChosenEntry->SubScreen != NULL) {
|
||||
UINTN DeepMenuExit = 0;
|
||||
INTN DeepEntryIndex = -1;
|
||||
REFIT_ABSTRACT_MENU_ENTRY *DeepChosenEntry = NULL;
|
||||
while (!DeepMenuExit) {
|
||||
//
|
||||
// run deep submenu
|
||||
//
|
||||
DeepMenuExit = NextChosenEntry->SubScreen->RunGenericMenu(&DeepEntryIndex, &DeepChosenEntry);
|
||||
if (DeepMenuExit == MENU_EXIT_ESCAPE || DeepChosenEntry->getREFIT_MENU_ITEM_RETURN() ) {
|
||||
DeepMenuExit = MENU_EXIT_ENTER;
|
||||
NextMenuExit = 0;
|
||||
break;
|
||||
}
|
||||
DBG(" get DeepChosenEntry FlagsBits = 0x%X\n", ((LOADER_ENTRY*)DeepChosenEntry)->Flags);
|
||||
} //while(!DeepMenuExit)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} //while(!NextMenuExit)
|
||||
} //while(!NextMenuExit)
|
||||
}
|
||||
}
|
||||
//---------
|
||||
}
|
||||
//---------
|
||||
}else{
|
||||
// Here, it means MainChosenEntry->SubScreen != null, but MainChosenEntry->SubScreen->Entries.size() == 0.
|
||||
// This is a technical bug. GraphicsMenuStyle would crash.
|
||||
#ifdef DEBUG
|
||||
panic("A sub menu doesn't have any entries");
|
||||
#else
|
||||
MenuExit = 0; // loop on main menu
|
||||
#endif
|
||||
}
|
||||
}else{
|
||||
MenuExit = 0; // loop on main menu
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
#define __REFIT_MAINMENU_SCREEN_H__
|
||||
|
||||
#include "REFIT_MENU_SCREEN.h"
|
||||
|
||||
#include "../libeg/XTheme.h"
|
||||
//#include "../Platform/Settings.h"
|
||||
//#include "../libeg/libegint.h"
|
||||
////#include "../libeg/libeg.h"
|
||||
@ -60,7 +60,7 @@ class REFIT_MAINMENU_SCREEN : public REFIT_MENU_SCREEN
|
||||
{
|
||||
public:
|
||||
typedef void (REFIT_MAINMENU_SCREEN::*MAINMENU_STYLE_FUNC)(IN UINTN Function, IN CONST CHAR16 *ParamText);
|
||||
MAINMENU_STYLE_FUNC m_MainStyle = NULL;
|
||||
// MAINMENU_STYLE_FUNC m_MainStyle = NULL;
|
||||
|
||||
REFIT_MAINMENU_SCREEN(UINTN ID, XStringW TTitle, XStringW TTimeoutText);
|
||||
|
||||
@ -69,15 +69,26 @@ public:
|
||||
virtual void TextMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText) { REFIT_MENU_SCREEN::TextMenuStyle(Function, ParamText); }
|
||||
virtual void MainMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText); // cannot remove from here because the use of pointer to member function
|
||||
virtual void MainMenuVerticalStyle(IN UINTN Function, IN CONST CHAR16 *ParamText); // cannot remove from here because the use of pointer to member function
|
||||
virtual void MenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText) {
|
||||
if (AllowGraphicsMode) {
|
||||
if (ThemeX.VerticalLayout) {
|
||||
MainMenuVerticalStyle(Function, ParamText);
|
||||
} else {
|
||||
MainMenuStyle(Function, ParamText);
|
||||
}
|
||||
}else {
|
||||
TextMenuStyle(Function, ParamText);
|
||||
}
|
||||
}
|
||||
|
||||
void DrawMainMenuEntry(REFIT_ABSTRACT_MENU_ENTRY *Entry, BOOLEAN selected, INTN XPos, INTN YPos);
|
||||
void DrawMainMenuLabel(IN CONST XStringW& Text, IN INTN XPos, IN INTN YPos);
|
||||
|
||||
virtual void call_MENU_FUNCTION_INIT(IN CONST CHAR16 *ParamText) { ((*this).*(m_MainStyle))(MENU_FUNCTION_INIT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_ALL(IN CONST CHAR16 *ParamText) { ((*this).*(m_MainStyle))(MENU_FUNCTION_PAINT_ALL, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_SELECTION(IN CONST CHAR16 *ParamText) { ((*this).*(m_MainStyle))(MENU_FUNCTION_PAINT_SELECTION, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_TIMEOUT(IN CONST CHAR16 *ParamText) { ((*this).*(m_MainStyle))(MENU_FUNCTION_PAINT_TIMEOUT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_CLEANUP(IN CONST CHAR16 *ParamText) { ((*this).*(m_MainStyle))(MENU_FUNCTION_CLEANUP, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_INIT(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_INIT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_ALL(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_ALL, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_SELECTION(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_SELECTION, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_TIMEOUT(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_TIMEOUT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_CLEANUP(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_CLEANUP, ParamText); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -360,8 +360,6 @@ public:
|
||||
|
||||
|
||||
void common_init() {
|
||||
if (AllowGraphicsMode) m_StyleFunc = &REFIT_MENU_SCREEN::GraphicsMenuStyle;
|
||||
else m_StyleFunc = &REFIT_MENU_SCREEN::TextMenuStyle;
|
||||
#ifdef CLOVER_BUILD
|
||||
EFI_TIME Now;
|
||||
gRT->GetTime(&Now, NULL);
|
||||
@ -446,14 +444,18 @@ public:
|
||||
|
||||
virtual void GraphicsMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
|
||||
virtual void TextMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
|
||||
virtual void MenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText) {
|
||||
if (AllowGraphicsMode) GraphicsMenuStyle(Function, ParamText);
|
||||
else TextMenuStyle(Function, ParamText);
|
||||
}
|
||||
|
||||
MENU_STYLE_FUNC m_StyleFunc = NULL;
|
||||
// MENU_STYLE_FUNC m_StyleFunc = NULL;
|
||||
|
||||
virtual void call_MENU_FUNCTION_INIT(IN CONST CHAR16 *ParamText) { ((*this).*(m_StyleFunc))(MENU_FUNCTION_INIT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_ALL(IN CONST CHAR16 *ParamText) { ((*this).*(m_StyleFunc))(MENU_FUNCTION_PAINT_ALL, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_SELECTION(IN CONST CHAR16 *ParamText) { ((*this).*(m_StyleFunc))(MENU_FUNCTION_PAINT_SELECTION, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_TIMEOUT(IN CONST CHAR16 *ParamText) { ((*this).*(m_StyleFunc))(MENU_FUNCTION_PAINT_TIMEOUT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_CLEANUP(IN CONST CHAR16 *ParamText) { ((*this).*(m_StyleFunc))(MENU_FUNCTION_CLEANUP, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_INIT(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_INIT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_ALL(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_ALL, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_SELECTION(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_SELECTION, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_PAINT_TIMEOUT(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_PAINT_TIMEOUT, ParamText); }
|
||||
virtual void call_MENU_FUNCTION_CLEANUP(IN CONST CHAR16 *ParamText) { MenuStyle(MENU_FUNCTION_CLEANUP, ParamText); }
|
||||
|
||||
virtual ~REFIT_MENU_SCREEN() {};
|
||||
};
|
||||
|
@ -1295,7 +1295,7 @@ static unsigned int nsvg__parseColorHex(const char* str)
|
||||
while(str[n] && IsHexDigit(str[n]))
|
||||
n++;
|
||||
if (n == 6) {
|
||||
n = hex2bin((CHAR8*)str, 6, (UINT8*)&c, 3); //big endian
|
||||
hex2bin((CHAR8*)str, 6, (UINT8*)&c, 3); //big endian
|
||||
b = (c >> 16) & 0xff;
|
||||
g = (c >> 8) & 0xff;
|
||||
r = c & 0xff;
|
||||
|
@ -512,7 +512,7 @@ void LOADER_ENTRY::FilterBootPatches()
|
||||
/*
|
||||
void ReadSIPCfg()
|
||||
{
|
||||
UINT32 csrCfg = gSettings.CsrActiveConfig & CSR_VALID_FLAGS;
|
||||
UINT32 csrCfg = gSettings.RtVariables.CsrActiveConfig & CSR_VALID_FLAGS;
|
||||
CHAR16 *csrLog = (__typeof__(csrLog))AllocateZeroPool(SVALUE_MAX_SIZE);
|
||||
|
||||
if (csrCfg & CSR_ALLOW_UNTRUSTED_KEXTS)
|
||||
@ -559,12 +559,12 @@ NullConOutOutputString(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *, IN CONST CHAR16 *)
|
||||
|
||||
void CheckEmptyFB()
|
||||
{
|
||||
BOOLEAN EmptyFB = (gSettings.IgPlatform == 0x00050000) ||
|
||||
(gSettings.IgPlatform == 0x01620007) ||
|
||||
(gSettings.IgPlatform == 0x04120004) ||
|
||||
(gSettings.IgPlatform == 0x19120001) ||
|
||||
(gSettings.IgPlatform == 0x59120003) ||
|
||||
(gSettings.IgPlatform == 0x3E910003);
|
||||
BOOLEAN EmptyFB = (gSettings.Graphics.IgPlatform == 0x00050000) ||
|
||||
(gSettings.Graphics.IgPlatform == 0x01620007) ||
|
||||
(gSettings.Graphics.IgPlatform == 0x04120004) ||
|
||||
(gSettings.Graphics.IgPlatform == 0x19120001) ||
|
||||
(gSettings.Graphics.IgPlatform == 0x59120003) ||
|
||||
(gSettings.Graphics.IgPlatform == 0x3E910003);
|
||||
if (EmptyFB) {
|
||||
gPlatformFeature |= PT_FEATURE_HAS_HEADLESS_GPU;
|
||||
} else {
|
||||
@ -1329,8 +1329,8 @@ void LOADER_ENTRY::StartLoader()
|
||||
|
||||
if ( macOSVersion >= MacOsVersion("10.11"_XS8) ) {
|
||||
if (OSFLAG_ISSET(Flags, OSFLAG_NOSIP)) {
|
||||
gSettings.CsrActiveConfig = (UINT32)0xB7F;
|
||||
gSettings.BooterConfig = 0x28;
|
||||
gSettings.RtVariables.CsrActiveConfig = (UINT32)0xB7F;
|
||||
gSettings.RtVariables.BooterConfig = 0x28;
|
||||
}
|
||||
// ReadSIPCfg();
|
||||
}
|
||||
@ -2083,11 +2083,11 @@ void DisconnectSomeDevices(void)
|
||||
void PatchVideoBios(UINT8 *Edid)
|
||||
{
|
||||
|
||||
if (gSettings.PatchVBiosBytesCount > 0 && gSettings.PatchVBiosBytes != NULL) {
|
||||
VideoBiosPatchBytes(gSettings.PatchVBiosBytes, gSettings.PatchVBiosBytesCount);
|
||||
if ( gSettings.Graphics.PatchVBiosBytesNew.notEmpty() ) {
|
||||
VideoBiosPatchBytes(gSettings.Graphics.PatchVBiosBytesNew.getVBIOS_PATCH_BYTES(), gSettings.Graphics.PatchVBiosBytesNew.getVBIOS_PATCH_BYTES_count());
|
||||
}
|
||||
|
||||
if (gSettings.PatchVBios) {
|
||||
if (gSettings.Graphics.PatchVBios) {
|
||||
VideoBiosPatchNativeFromEdid(Edid);
|
||||
}
|
||||
}
|
||||
@ -2122,7 +2122,7 @@ static void LoadDrivers(void)
|
||||
ScanDriverDir(L"drivers32", &DriversToConnect, &DriversToConnectNum);
|
||||
#endif
|
||||
|
||||
VBiosPatchNeeded = gSettings.PatchVBios || (gSettings.PatchVBiosBytesCount > 0 && gSettings.PatchVBiosBytes != NULL);
|
||||
VBiosPatchNeeded = gSettings.Graphics.PatchVBios || gSettings.Graphics.PatchVBiosBytesNew.getVBIOS_PATCH_BYTES_count() > 0;
|
||||
if (VBiosPatchNeeded) {
|
||||
// check if it is already done in CloverEFI BiosVideo
|
||||
Status = gRT->GetVariable (
|
||||
@ -2138,7 +2138,7 @@ static void LoadDrivers(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (((gSettings.CustomEDID != NULL) && gFirmwareClover) || (VBiosPatchNeeded && !gDriversFlags.VideoLoaded)) {
|
||||
if ( (gSettings.Graphics.EDID.CustomEDID.notEmpty() && gFirmwareClover) || (VBiosPatchNeeded && !gDriversFlags.VideoLoaded)) {
|
||||
// we have video bios patch - force video driver reconnect
|
||||
DBG("Video bios patch requested or CustomEDID - forcing video reconnect\n");
|
||||
gDriversFlags.VideoLoaded = TRUE;
|
||||
@ -2152,14 +2152,14 @@ static void LoadDrivers(void)
|
||||
// will use DriversToConnect - do not release it
|
||||
RegisterDriversToHighestPriority(DriversToConnect);
|
||||
if (VBiosPatchNeeded) {
|
||||
if (gSettings.CustomEDID != NULL) {
|
||||
Edid = gSettings.CustomEDID;
|
||||
if (gSettings.Graphics.EDID.CustomEDID.notEmpty()) {
|
||||
Edid = gSettings.Graphics.EDID.CustomEDID.data();
|
||||
} else {
|
||||
Edid = getCurrentEdid();
|
||||
}
|
||||
DisconnectSomeDevices();
|
||||
PatchVideoBios(Edid);
|
||||
if (gSettings.CustomEDID == NULL) {
|
||||
if (gSettings.Graphics.EDID.CustomEDID.isEmpty()) {
|
||||
FreePool(Edid);
|
||||
}
|
||||
} else {
|
||||
@ -2623,7 +2623,7 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings)
|
||||
GlobalConfig.HWP = TRUE;
|
||||
AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1);
|
||||
if ( gSettings.CPU.HWPValue.isDefined() ) {
|
||||
AsmWriteMsr64 (MSR_IA32_HWP_REQUEST, gSettings.CPU.HWPValue);
|
||||
AsmWriteMsr64 (MSR_IA32_HWP_REQUEST, gSettings.CPU.HWPValue.value());
|
||||
}
|
||||
}
|
||||
|
||||
@ -2686,9 +2686,9 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings)
|
||||
GlobalConfig.CodepageSize = 0x100;
|
||||
}
|
||||
|
||||
if (gSettings.InjectEDID){
|
||||
if (gSettings.Graphics.EDID.InjectEDID){
|
||||
//DBG("Inject EDID\n");
|
||||
if ( gSettings.CustomEDIDsize > 0 && gSettings.CustomEDIDsize % 128 == 0 ) {
|
||||
if ( gSettings.Graphics.EDID.CustomEDID.size() > 0 && gSettings.Graphics.EDID.CustomEDID.size() % 128 == 0 ) {
|
||||
InitializeEdidOverride();
|
||||
}
|
||||
}
|
||||
@ -2696,6 +2696,32 @@ void afterGetUserSettings(const SETTINGS_DATA& gSettings)
|
||||
GlobalConfig.KPKernelPm = gSettings.KernelAndKextPatches._KPKernelPm || GlobalConfig.NeedPMfix;
|
||||
GlobalConfig.KPAppleIntelCPUPM = gSettings.KernelAndKextPatches._KPAppleIntelCPUPM || GlobalConfig.NeedPMfix;
|
||||
|
||||
if ( gSettings.RtVariables.RtROMAsString.equalIC("UseMacAddr0") ) {
|
||||
GlobalConfig.RtROM.ncpy(&gLanMac[0][0], 6);
|
||||
} else if ( gSettings.RtVariables.RtROMAsString.equalIC("UseMacAddr1") ) {
|
||||
GlobalConfig.RtROM.ncpy(&gLanMac[1][0], 6);
|
||||
}else{
|
||||
GlobalConfig.RtROM = gSettings.RtVariables.RtROMAsData;
|
||||
}
|
||||
if ( GlobalConfig.RtROM.isEmpty() ) {
|
||||
EFI_GUID uuid;
|
||||
StrToGuidLE(gSettings.SmUUID, &uuid);
|
||||
GlobalConfig.RtROM.ncpy(&uuid.Data4[2], 6);
|
||||
}
|
||||
GlobalConfig.RtMLB = gSettings.RtVariables.RtMLBSetting;
|
||||
if ( GlobalConfig.RtMLB.isEmpty() ) {
|
||||
GlobalConfig.RtMLB = gSettings.BoardSerialNumber;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < NGFX; i++) {
|
||||
gGraphics[i].LoadVBios = gSettings.Graphics.LoadVBios; //default
|
||||
}
|
||||
|
||||
if ( gSettings.CPU.TurboDisabled ) {
|
||||
GlobalConfig.Turbo = false;
|
||||
}else{
|
||||
GlobalConfig.Turbo = gCPUStructure.Turbo;
|
||||
}
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
|
@ -177,7 +177,7 @@ void FillInputs(BOOLEAN New)
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //15
|
||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.PatchNMI;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //16
|
||||
InputItems[InputItemsCount++].BValue = gSettings.PatchVBios;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.PatchVBios;
|
||||
InputItems[InputItemsCount].ItemType = Decimal; //17
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%llX", gPlatformFeature);
|
||||
InputItems[InputItemsCount].ItemType = Hex; //18
|
||||
@ -195,35 +195,35 @@ void FillInputs(BOOLEAN New)
|
||||
|
||||
if (gGraphics[i].Vendor == Ati) {
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //21+i*6
|
||||
InputItems[InputItemsCount++].BValue = gSettings.InjectATI;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.InjectAsDict.InjectATI;
|
||||
InputItems[InputItemsCount].ItemType = ASString; //22+6i
|
||||
if ( gSettings.FBName.length() > 2 ) { //fool proof: cfg_name is 3 character or more.
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%ls", gSettings.FBName.wc_str());
|
||||
if ( gSettings.Graphics.FBName.length() > 2 ) { //fool proof: cfg_name is 3 character or more.
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%ls", gSettings.Graphics.FBName.wc_str());
|
||||
} else {
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gGraphics[i].Config);
|
||||
}
|
||||
} else if (gGraphics[i].Vendor == Nvidia) {
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //21+i*6
|
||||
InputItems[InputItemsCount++].BValue = gSettings.InjectNVidia;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.InjectAsDict.InjectNVidia;
|
||||
InputItems[InputItemsCount].ItemType = ASString; //22+6i
|
||||
for (j=0; j<8; j++) {
|
||||
snprintf((CHAR8*)&tmp[2*j], 3, "%02hhX", gSettings.Dcfg[j]);
|
||||
snprintf((CHAR8*)&tmp[2*j], 3, "%02hhX", gSettings.Graphics.Dcfg[j]);
|
||||
}
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", tmp);
|
||||
|
||||
//InputItems[InputItemsCount++].SValue = P__oolPrint(L"%08x",*(UINT64*)&gSettings.Dcfg[0]);
|
||||
//InputItems[InputItemsCount++].SValue = P__oolPrint(L"%08x",*(UINT64*)&gSettings.Graphics.Dcfg[0]);
|
||||
} else /*if (gGraphics[i].Vendor == Intel) */ {
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //21+i*6
|
||||
InputItems[InputItemsCount++].BValue = gSettings.InjectIntel;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.InjectAsDict.InjectIntel;
|
||||
InputItems[InputItemsCount].ItemType = Hex; //22+6i
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%08X", gSettings.IgPlatform);
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%08X", gSettings.Graphics.IgPlatform);
|
||||
// InputItemsCount += 3;
|
||||
// continue;
|
||||
}
|
||||
|
||||
InputItems[InputItemsCount].ItemType = Decimal; //23+6i
|
||||
if (gSettings.VideoPorts > 0) {
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.VideoPorts);
|
||||
if (gSettings.Graphics.VideoPorts > 0) {
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gSettings.Graphics.VideoPorts);
|
||||
} else {
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%02d", gGraphics[i].Ports);
|
||||
}
|
||||
@ -231,7 +231,7 @@ void FillInputs(BOOLEAN New)
|
||||
if (gGraphics[i].Vendor == Nvidia) {
|
||||
InputItems[InputItemsCount].ItemType = ASString; //24+6i
|
||||
for (j=0; j<20; j++) {
|
||||
snprintf((CHAR8*)&tmp[2*j], 3, "%02hhX", gSettings.NVCAP[j]);
|
||||
snprintf((CHAR8*)&tmp[2*j], 3, "%02hhX", gSettings.Graphics.NVCAP[j]);
|
||||
}
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", tmp);
|
||||
} else { //ATI and others there will be connectors
|
||||
@ -259,27 +259,27 @@ void FillInputs(BOOLEAN New)
|
||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.FixMCFG;
|
||||
|
||||
InputItems[InputItemsCount].ItemType = Decimal; //50
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.RefCLK);
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%06d", gSettings.Graphics.RefCLK);
|
||||
|
||||
InputItems[InputItemsCount].ItemType = ASString; //51 OS version if non-detected
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s ", NonDetected.c_str());
|
||||
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //52
|
||||
InputItems[InputItemsCount++].BValue = gSettings.InjectEDID;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.EDID.InjectEDID;
|
||||
|
||||
//VendorEDID & ProductEDID 53, 54
|
||||
InputItems[InputItemsCount].ItemType = Decimal; //53
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", gSettings.VendorEDID);
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", gSettings.Graphics.EDID.VendorEDID);
|
||||
InputItems[InputItemsCount].ItemType = Decimal; //54
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", gSettings.ProductEDID);
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04hX", gSettings.Graphics.EDID.ProductEDID);
|
||||
|
||||
// ErmaC: NvidiaGeneric menu selector y/n
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //55
|
||||
InputItems[InputItemsCount++].BValue = gSettings.NvidiaGeneric;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.NvidiaGeneric;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //56
|
||||
InputItems[InputItemsCount++].BValue = gSettings.SystemParameters.NvidiaWeb;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //57
|
||||
InputItems[InputItemsCount++].BValue = gSettings.ResetHDA;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Devices.Audio.ResetHDA;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //58
|
||||
InputItems[InputItemsCount++].BValue = gSettings.AFGLowPowerState;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //59
|
||||
@ -305,9 +305,9 @@ void FillInputs(BOOLEAN New)
|
||||
|
||||
// CSR - aka System Integrity Protection configuration
|
||||
InputItems[InputItemsCount].ItemType = CheckBit; //65
|
||||
InputItems[InputItemsCount++].IValue = gSettings.BooterConfig;
|
||||
InputItems[InputItemsCount++].IValue = gSettings.RtVariables.BooterConfig;
|
||||
InputItems[InputItemsCount].ItemType = CheckBit; //66
|
||||
InputItems[InputItemsCount++].IValue = gSettings.CsrActiveConfig;
|
||||
InputItems[InputItemsCount++].IValue = gSettings.RtVariables.CsrActiveConfig;
|
||||
|
||||
|
||||
InputItems[InputItemsCount].ItemType = CheckBit; //67
|
||||
@ -410,12 +410,12 @@ void FillInputs(BOOLEAN New)
|
||||
InputItems[InputItemsCount++].BValue = gSettings.KernelPatchesAllowed;
|
||||
|
||||
InputItems[InputItemsCount].ItemType = Hex; //109
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%01X", gSettings.DualLink);
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%01X", gSettings.Graphics.DualLink);
|
||||
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //110
|
||||
InputItems[InputItemsCount++].BValue = gSettings.NvidiaNoEFI;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.NvidiaNoEFI;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //111
|
||||
InputItems[InputItemsCount++].BValue = gSettings.NvidiaSingle;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.NvidiaSingle;
|
||||
|
||||
InputItems[InputItemsCount].ItemType = Hex; //112
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("0x%04X", gSettings.IntelMaxValue);
|
||||
@ -423,7 +423,7 @@ void FillInputs(BOOLEAN New)
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //113
|
||||
InputItems[InputItemsCount++].BValue = gSettings.ACPI.AutoMerge;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //114
|
||||
InputItems[InputItemsCount++].BValue = gSettings.DeInit;
|
||||
InputItems[InputItemsCount++].BValue = gSettings.Graphics.RadeonDeInit;
|
||||
InputItems[InputItemsCount].ItemType = BoolValue; //115
|
||||
InputItems[InputItemsCount++].BValue = gSettings.SystemParameters.NoCaches;
|
||||
InputItems[InputItemsCount].ItemType = RadioSwitch; //116 - DSDT chooser
|
||||
@ -432,7 +432,7 @@ void FillInputs(BOOLEAN New)
|
||||
InputItems[InputItemsCount].ItemType = ASString; //117
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gSettings.EfiVersion.c_str());
|
||||
InputItems[InputItemsCount].ItemType = ASString; //118
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gSettings.BooterCfgStr.c_str());
|
||||
InputItems[InputItemsCount++].SValue.SWPrintf("%s", gSettings.RtVariables.BooterCfgStr.c_str());
|
||||
|
||||
InputItems[InputItemsCount].ItemType = RadioSwitch; //119 - Audio chooser
|
||||
InputItems[InputItemsCount++].IValue = 119;
|
||||
@ -551,7 +551,7 @@ void ApplyInputs(void)
|
||||
}
|
||||
i++; //16
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.PatchVBios = InputItems[i].BValue;
|
||||
gSettings.Graphics.PatchVBios = InputItems[i].BValue;
|
||||
}
|
||||
i++; //17
|
||||
if (InputItems[i].Valid) {
|
||||
@ -578,23 +578,23 @@ void ApplyInputs(void)
|
||||
i++; //21
|
||||
if (InputItems[i].Valid) {
|
||||
if (gGraphics[j].Vendor == Ati) {
|
||||
gSettings.InjectATI = InputItems[i].BValue;
|
||||
gSettings.Graphics.InjectAsDict.InjectATI = InputItems[i].BValue;
|
||||
} else if (gGraphics[j].Vendor == Nvidia) {
|
||||
gSettings.InjectNVidia = InputItems[i].BValue;
|
||||
gSettings.Graphics.InjectAsDict.InjectNVidia = InputItems[i].BValue;
|
||||
} else if (gGraphics[j].Vendor == Intel) {
|
||||
gSettings.InjectIntel = InputItems[i].BValue;
|
||||
gSettings.Graphics.InjectAsDict.InjectIntel = InputItems[i].BValue;
|
||||
}
|
||||
}
|
||||
i++; //22
|
||||
if (InputItems[i].Valid) {
|
||||
if (gGraphics[j].Vendor == Ati) {
|
||||
gSettings.FBName = InputItems[i].SValue;
|
||||
gSettings.Graphics.FBName = InputItems[i].SValue;
|
||||
} else if (gGraphics[j].Vendor == Nvidia) {
|
||||
hex2bin(InputItems[i].SValue, (UINT8*)&gSettings.Dcfg[0], sizeof(gSettings.Dcfg));
|
||||
hex2bin(InputItems[i].SValue, (UINT8*)&gSettings.Graphics.Dcfg[0], sizeof(gSettings.Graphics.Dcfg));
|
||||
} else if (gGraphics[j].Vendor == Intel) {
|
||||
//ig-platform-id for Ivy+ and snb-platform-id for Sandy
|
||||
gSettings.IgPlatform = (UINT32)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
DBG("applied *-platform-id=0x%X\n", gSettings.IgPlatform);
|
||||
gSettings.Graphics.IgPlatform = (UINT32)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
DBG("applied *-platform-id=0x%X\n", gSettings.Graphics.IgPlatform);
|
||||
}
|
||||
}
|
||||
|
||||
@ -611,7 +611,7 @@ void ApplyInputs(void)
|
||||
if (InputItems[i].Valid) {
|
||||
if (gGraphics[j].Vendor == Nvidia) {
|
||||
if ( InputItems[i].SValue.notEmpty() ) {
|
||||
hex2bin(InputItems[i].SValue, (UINT8*)&gSettings.NVCAP[0], sizeof(gSettings.NVCAP));
|
||||
hex2bin(InputItems[i].SValue, (UINT8*)&gSettings.Graphics.NVCAP[0], sizeof(gSettings.Graphics.NVCAP));
|
||||
}
|
||||
} else {
|
||||
gGraphics[j].Connectors = (UINT32)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
@ -657,7 +657,7 @@ void ApplyInputs(void)
|
||||
|
||||
i++; //50
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.RefCLK = (UINT32)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
||||
gSettings.Graphics.RefCLK = (UINT32)StrDecimalToUintn(InputItems[i].SValue.wc_str());
|
||||
}
|
||||
|
||||
i++; //51
|
||||
@ -667,20 +667,20 @@ void ApplyInputs(void)
|
||||
|
||||
i++; //52
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.InjectEDID = InputItems[i].BValue;
|
||||
gSettings.Graphics.EDID.InjectEDID = InputItems[i].BValue;
|
||||
}
|
||||
i++; //53
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.VendorEDID = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
gSettings.Graphics.EDID.VendorEDID = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
}
|
||||
i++; //54
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.ProductEDID = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
gSettings.Graphics.EDID.ProductEDID = (UINT16)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
}
|
||||
i++; //55
|
||||
// ErmaC: NvidiaGeneric bool(Y/N)
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.NvidiaGeneric = InputItems[i].BValue;
|
||||
gSettings.Graphics.NvidiaGeneric = InputItems[i].BValue;
|
||||
}
|
||||
i++; //56
|
||||
if (InputItems[i].Valid) {
|
||||
@ -688,7 +688,7 @@ void ApplyInputs(void)
|
||||
}
|
||||
i++; //57
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.ResetHDA = InputItems[i].BValue;
|
||||
gSettings.Devices.Audio.ResetHDA = InputItems[i].BValue;
|
||||
}
|
||||
i++; //58
|
||||
if (InputItems[i].Valid) {
|
||||
@ -728,11 +728,11 @@ void ApplyInputs(void)
|
||||
// CSR
|
||||
i = 65;
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.BooterConfig = InputItems[i].IValue & 0x7F;
|
||||
gSettings.RtVariables.BooterConfig = InputItems[i].IValue & 0x7F;
|
||||
}
|
||||
i++; //66
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.CsrActiveConfig = InputItems[i].IValue;
|
||||
gSettings.RtVariables.CsrActiveConfig = InputItems[i].IValue;
|
||||
}
|
||||
|
||||
i++; //67
|
||||
@ -967,18 +967,18 @@ void ApplyInputs(void)
|
||||
|
||||
i++; //109
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.DualLink = (UINT32)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
DBG("applied DualLink=%X\n", gSettings.DualLink);
|
||||
gSettings.Graphics.DualLink = (UINT32)StrHexToUint64(InputItems[i].SValue.wc_str());
|
||||
DBG("applied DualLink=%X\n", gSettings.Graphics.DualLink);
|
||||
}
|
||||
|
||||
i++; //110
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.NvidiaNoEFI = InputItems[i].BValue;
|
||||
gSettings.Graphics.NvidiaNoEFI = InputItems[i].BValue;
|
||||
}
|
||||
|
||||
i++; //111
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.NvidiaSingle = InputItems[i].BValue;
|
||||
gSettings.Graphics.NvidiaSingle = InputItems[i].BValue;
|
||||
}
|
||||
i++; //112
|
||||
if (InputItems[i].Valid) {
|
||||
@ -990,7 +990,7 @@ void ApplyInputs(void)
|
||||
}
|
||||
i++; //114
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.DeInit = InputItems[i].BValue;
|
||||
gSettings.Graphics.RadeonDeInit = InputItems[i].BValue;
|
||||
}
|
||||
i++; //115
|
||||
if (InputItems[i].Valid) {
|
||||
@ -1010,7 +1010,7 @@ void ApplyInputs(void)
|
||||
}
|
||||
i++; //118
|
||||
if (InputItems[i].Valid) {
|
||||
gSettings.BooterCfgStr = InputItems[i].SValue;
|
||||
gSettings.RtVariables.BooterCfgStr = InputItems[i].SValue;
|
||||
}
|
||||
i++; //119
|
||||
if (InputItems[i].Valid) {
|
||||
@ -1550,14 +1550,14 @@ void ModifyTitles(REFIT_ABSTRACT_MENU_ENTRY *ChosenEntry)
|
||||
//MsgLog("@ESC: %ls\n", (*ChosenEntry)->Title);
|
||||
} else if (ChosenEntry->SubScreen->ID == SCREEN_CSR) {
|
||||
// CSR
|
||||
ChosenEntry->Title.SWPrintf("System Integrity Protection [0x%04x]->", gSettings.CsrActiveConfig);
|
||||
ChosenEntry->Title.SWPrintf("System Integrity Protection [0x%04x]->", gSettings.RtVariables.CsrActiveConfig);
|
||||
// check for the right booter flag to allow the application
|
||||
// of the new System Integrity Protection configuration.
|
||||
if (gSettings.CsrActiveConfig != 0 && gSettings.BooterConfig == 0) {
|
||||
gSettings.BooterConfig = 0x28;
|
||||
if (gSettings.RtVariables.CsrActiveConfig != 0 && gSettings.RtVariables.BooterConfig == 0) {
|
||||
gSettings.RtVariables.BooterConfig = 0x28;
|
||||
}
|
||||
} else if (ChosenEntry->SubScreen->ID == SCREEN_BLC) {
|
||||
ChosenEntry->Title.SWPrintf("boot_args->flags [0x%04hx]->", gSettings.BooterConfig);
|
||||
ChosenEntry->Title.SWPrintf("boot_args->flags [0x%04hx]->", gSettings.RtVariables.BooterConfig);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2369,7 +2369,7 @@ REFIT_ABSTRACT_MENU_ENTRY* SubMenuBLC()
|
||||
|
||||
// create the entry in the main menu
|
||||
Entry = newREFIT_MENU_ITEM_OPTIONS(&SubScreen, ActionEnter, SCREEN_BLC, NullXString8);
|
||||
// Entry->Title.SPrintf("boot_args->flags [0x%02hhx]->", gSettings.BooterConfig);
|
||||
// Entry->Title.SPrintf("boot_args->flags [0x%02hhx]->", gSettings.RtVariables.BooterConfig);
|
||||
|
||||
// submenu description
|
||||
SubScreen->AddMenuInfoLine_f("Modify flags for boot.efi");
|
||||
|
Loading…
Reference in New Issue
Block a user