MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / FIXDisplay

Function FIXDisplay

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:2496–2789  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2494UINT8 VenATI[] = {0x02, 0x10};
2495
2496UINT32 FIXDisplay (UINT8 *dsdt, UINT32 len, INT32 VCard)
2497{
2498 UINT32 i = 0, j, k;
2499 INT32 sizeoffset = 0;
2500 UINT32 PCIADR = 0, PCISIZE = 0, Size;
2501 CHAR8 *display;
2502 UINT32 devadr=0, devsize=0, devadr1=0, devsize1=0;
2503 BOOLEAN DISPLAYFIX = FALSE;
2504 BOOLEAN NonUsable = FALSE;
2505 BOOLEAN DsmFound = FALSE;
2506 BOOLEAN NeedHDMI = !!(gSettings.FixDsdt & FIX_HDMI);
2507 AML_CHUNK *root = NULL;
2508 AML_CHUNK *gfx0, *peg0;
2509 AML_CHUNK *met, *met2;
2510 AML_CHUNK *pack;
2511 UINT32 FakeID = 0;
2512 UINT32 FakeVen = 0;
2513 DisplayName1 = FALSE;
2514
2515 if (!DisplayADR1[VCard]) return len;
2516
2517 PCIADR = GetPciDevice(dsdt, len);
2518 if (PCIADR) {
2519 PCISIZE = get_size(dsdt, PCIADR);
2520 }
2521 if (!PCISIZE) return len; //what is the bad DSDT ?!
2522
2523 MsgLog("Start Display%d Fix\n", VCard);
2524 root = aml_create_node(NULL);
2525
2526 //search DisplayADR1[0]
2527 for (j=0x20; len >= 10 && j < len - 10; j++) {
2528 if (CmpAdr(dsdt, j, DisplayADR1[VCard])) { //for example 0x00020000=2,0
2529 devadr = devFind(dsdt, j); //PEG0@2,0
2530 if (!devadr) {
2531 continue;
2532 }
2533 devsize = get_size(dsdt, devadr); //sizeof PEG0 0x35
2534 if (devsize) {
2535 DisplayName1 = TRUE;
2536 break;
2537 }
2538 } // End Display1
2539 }
2540
2541 //what if PEG0 is not found?
2542 if (devadr) {
2543 for (j=devadr; j<devadr+devsize; j++) { //search card inside PEG0@0
2544 if (CmpAdr(dsdt, j, DisplayADR2[VCard])) { //else DISPLAYFIX==false
2545 devadr1 = devFind(dsdt, j); //found PEGP
2546 if (!devadr1) {
2547 continue;
2548 }
2549 devsize1 = get_size(dsdt, devadr1);
2550 if (devsize1) {
2551 MsgLog("Found internal video device %X @%X\n", DisplayADR2[VCard], devadr1);
2552 DISPLAYFIX = TRUE;
2553 break;

Callers 1

FixBiosDsdtFunction · 0.85

Calls 15

GetPciDeviceFunction · 0.85
get_sizeFunction · 0.85
aml_create_nodeFunction · 0.85
CmpAdrFunction · 0.85
devFindFunction · 0.85
FindMethodFunction · 0.85
move_dataFunction · 0.85
CorrectOutersFunction · 0.85
aml_add_deviceFunction · 0.85
aml_add_nameFunction · 0.85
aml_add_dwordFunction · 0.85
aml_add_byteFunction · 0.85

Tested by

no test coverage detected