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

Function AddHDMI

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:2791–2947  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2789}
2790
2791UINT32 AddHDMI (UINT8 *dsdt, UINT32 len)
2792{
2793 UINT32 i, j, k;
2794 INT32 sizeoffset = 0;
2795 UINT32 PCIADR = 0, PCISIZE = 0, Size;
2796 CHAR8 *hdmi = NULL;
2797 UINT32 devadr=0, BridgeSize=0, devadr1=0; //, devsize1=0;
2798 BOOLEAN BridgeFound = FALSE;
2799 BOOLEAN HdauFound = FALSE;
2800 AML_CHUNK* brd = NULL;
2801 AML_CHUNK *root = NULL;
2802 AML_CHUNK *met, *met2;
2803 AML_CHUNK *pack;
2804
2805 if (!HDMIADR1) return len;
2806
2807 PCIADR = GetPciDevice(dsdt, len);
2808 if (PCIADR) {
2809 PCISIZE = get_size(dsdt, PCIADR);
2810 }
2811 if (!PCISIZE) return len; //what is the bad DSDT ?!
2812
2813 DBG("Start HDMI Fix\n");
2814 // Device Address
2815 for (i=0x20; len >= 10 && i < len - 10; i++) {
2816 if (CmpAdr(dsdt, i, HDMIADR1)) {
2817 devadr = devFind(dsdt, i);
2818 if (!devadr) {
2819 continue;
2820 }
2821 BridgeSize = get_size(dsdt, devadr);
2822 if (!BridgeSize) {
2823 continue;
2824 }
2825 BridgeFound = TRUE;
2826 if (HDMIADR2 != 0xFFFE){
2827 for (k = devadr + 9; k < devadr + BridgeSize; k++) {
2828 if (CmpAdr(dsdt, k, HDMIADR2))
2829 {
2830 devadr1 = devFind(dsdt, k);
2831 if (!devadr1) {
2832 continue;
2833 }
2834 device_name[11] = (__typeof_am__(device_name[11]))AllocateZeroPool(5);
2835 CopyMem(device_name[11], dsdt+k, 4);
2836 DBG("found HDMI device [0x%08X:%X] at %X and Name is %s\n",
2837 HDMIADR1, HDMIADR2, devadr1, device_name[11]);
2838 ReplaceName(dsdt + devadr, BridgeSize, device_name[11], "HDAU");
2839 HdauFound = TRUE;
2840 break;
2841 }
2842 }
2843 if (!HdauFound) {
2844 DBG("have no HDMI device while HDMIADR2=%X\n", HDMIADR2);
2845 devadr1 = devadr;
2846 }
2847 } else {
2848 devadr1 = devadr;

Callers 1

FixBiosDsdtFunction · 0.85

Calls 15

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

Tested by

no test coverage detected