Index: branches/ErmaC/Enoch/i386/libsaio/gma.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/gma.c (revision 2505) +++ branches/ErmaC/Enoch/i386/libsaio/gma.c (revision 2506) @@ -53,6 +53,7 @@ #define DBG(x...) #endif +static bool doit = false; static uint8_t default_aapl_ivy[] = { 0x05,0x00,0x62,0x01 }; // ivy_bridge_ig_vals[5] #define AAPL_LEN_IVY ( sizeof(default_aapl_ivy) / sizeof(uint8_t) ) static uint8_t default_aapl_haswell[] = { 0x00,0x00,0x26,0x0c }; // haswell_ig_vals[7] @@ -403,6 +404,14 @@ devprop_add_value(device, "model", (uint8_t *)model, (strlen(model) + 1)); devprop_add_value(device, "device_type", (uint8_t *)"display", 8); + if (getBoolForKey(kUseIntelHDMI, &doit, &bootInfo->chameleonConfig) && doit) + { + devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + } + else + { + devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-2", 10); + } switch ((device_id << 16) | vendor_id) { @@ -410,7 +419,7 @@ case GMA_IRONLAKE_M_G: // 0046 devprop_add_value(device, "built-in", &BuiltIn, 1); devprop_add_value(device, "class-code", ClassFix, 4); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); devprop_add_value(device, "AAPL,os-info", HDx000_os_info, 20); break; /* 27A2, 27AE, 27A6, A001, A011, A012, */ @@ -469,7 +478,7 @@ /* 0106 */ case GMA_SANDYBRIDGE_M_GT1: // HD Graphics 2000 Mobile devprop_add_value(device, "class-code", ClassFix, 4); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); devprop_add_value(device, "AAPL00,PixelFormat", HD2000_vals[0], 4); devprop_add_value(device, "AAPL00,T1", HD2000_vals[1], 4); devprop_add_value(device, "AAPL00,T2", HD2000_vals[2], 4); @@ -492,7 +501,7 @@ case GMA_SANDYBRIDGE_M_GT2: // HD Graphics 3000 Mobile case GMA_SANDYBRIDGE_M_GT2_PLUS: devprop_add_value(device, "class-code", ClassFix, 4); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); devprop_add_value(device, "AAPL00,PixelFormat", HD3000_vals[0], 4); devprop_add_value(device, "AAPL00,T1", HD3000_vals[1], 4); devprop_add_value(device, "AAPL00,T2", HD3000_vals[2], 4); @@ -519,7 +528,7 @@ devprop_add_value(device, "built-in", &BuiltIn, 1); devprop_add_value(device, "class-code", ClassFix, 4); devprop_add_value(device, "device-id", (uint8_t *)&device_id, sizeof(device_id)); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); devprop_add_value(device, "AAPL,tbl-info", HD2000_tbl_info, 18); devprop_add_value(device, "AAPL,os-info", HD2000_os_info, 20); break; @@ -532,7 +541,7 @@ devprop_add_value(device, "class-code", ClassFix, 4); device_id = 0x00000126; // Inject a valid mobile GPU device id instead of patching kexts devprop_add_value(device, "device-id", (uint8_t *)&device_id, sizeof(device_id)); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); devprop_add_value(device, "AAPL,tbl-info", HD3000_tbl_info, 18); devprop_add_value(device, "AAPL,os-info", HD3000_os_info, 20); break; @@ -606,7 +615,7 @@ devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4); devprop_add_value(device, "built-in", &BuiltIn, 1); devprop_add_value(device, "class-code", ClassFix, 4); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); break; /* Haswell */ @@ -697,7 +706,7 @@ devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4); devprop_add_value(device, "built-in", &BuiltIn, 1); devprop_add_value(device, "class-code", ClassFix, 4); - devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + //devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); break; default: Index: branches/ErmaC/Enoch/i386/libsaio/nvidia.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/nvidia.c (revision 2505) +++ branches/ErmaC/Enoch/i386/libsaio/nvidia.c (revision 2506) @@ -77,7 +77,8 @@ #define WRITE_LE_SHORT(data) (((data) << 8 & 0xff00) | ((data) >> 8 & 0x00ff )) #define WRITE_LE_INT(data) (WRITE_LE_SHORT(data) << 16 | WRITE_LE_SHORT(data >> 16)) -static bool showGeneric = false; +static bool showGeneric = false; +static bool doit = false; char generic_name[128]; extern uint32_t devices_number; @@ -1760,10 +1761,14 @@ default_NVCAP[8] = channel2; // patching HEADS - for (i = 0; i < num_outputs; i++) { - if (channel1 & (1 << i)) { + for (i = 0; i < num_outputs; i++) + { + if (channel1 & (1 << i)) + { *entries[i].heads = 1; - } else if(channel2 & (1 << i)) { + } + else if(channel2 & (1 << i)) + { *entries[i].heads = 2; } } @@ -1776,18 +1781,23 @@ // First check in the plist, (for e.g this can override any hardcoded devices) cardList_t * nvcard = FindCardWithIds(device_id, subsys_id); - if (nvcard) { - if (nvcard->model) { + if (nvcard) + { + if (nvcard->model) + { return nvcard->model; } } //ErmaC added selector for Chameleon "old" style in System Profiler - if (getBoolForKey(kNvidiaGeneric, &showGeneric, &bootInfo->chameleonConfig)) { + if (getBoolForKey(kNvidiaGeneric, &showGeneric, &bootInfo->chameleonConfig)) + { verbose("NvidiaGeneric = Yes\n"); - for (i = 1; i < (sizeof(nvidia_card_generic) / sizeof(nvidia_card_generic[0])); i++) { - if (nvidia_card_generic[i].device == device_id) { + for (i = 1; i < (sizeof(nvidia_card_generic) / sizeof(nvidia_card_generic[0])); i++) + { + if (nvidia_card_generic[i].device == device_id) + { return nvidia_card_generic[i].name; } } @@ -1795,20 +1805,28 @@ } // Then check the exceptions table - if (subsys_id) { - for (i = 0; i < (sizeof(nvidia_card_exceptions) / sizeof(nvidia_card_exceptions[0])); i++) { - if ((nvidia_card_exceptions[i].device == device_id) && (nvidia_card_exceptions[i].subdev == subsys_id)) { + if (subsys_id) + { + for (i = 0; i < (sizeof(nvidia_card_exceptions) / sizeof(nvidia_card_exceptions[0])); i++) + { + if ((nvidia_card_exceptions[i].device == device_id) && (nvidia_card_exceptions[i].subdev == subsys_id)) + { return nvidia_card_exceptions[i].name; } } } // At last try the generic names - for (i = 1; i < (sizeof(nvidia_card_generic) / sizeof(nvidia_card_generic[0])); i++) { - if (nvidia_card_generic[i].device == device_id) { - if (subsys_id) { - for (j = 0; j < (sizeof(nvidia_card_vendors) / sizeof(nvidia_card_vendors[0])); j++) { - if (nvidia_card_vendors[j].device == (subsys_id & 0xffff0000)) { + for (i = 1; i < (sizeof(nvidia_card_generic) / sizeof(nvidia_card_generic[0])); i++) + { + if (nvidia_card_generic[i].device == device_id) + { + if (subsys_id) + { + for (j = 0; j < (sizeof(nvidia_card_vendors) / sizeof(nvidia_card_vendors[0])); j++) + { + if (nvidia_card_vendors[j].device == (subsys_id & 0xffff0000)) + { snprintf(generic_name, 128, "%s %s", // sizeof(generic_name), "%s %s", nvidia_card_vendors[j].name, nvidia_card_generic[i].name); return &generic_name[0]; @@ -1826,13 +1844,15 @@ int fd; int size; - if ((fd = open_bvdev("bt(0,0)", filename, 0)) < 0) { + if ((fd = open_bvdev("bt(0,0)", filename, 0)) < 0) + { return 0; } size = file_size(fd); - if (size) { + if (size) + { *buf = malloc(size); size = read(fd, (char *)buf, size); } @@ -1849,23 +1869,48 @@ return 0; if (!DP_ADD_TEMP_VAL(device, nvidia_compatible_0)) + { return 0; + } + if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_0)) + { return 0; + } + if (!DP_ADD_TEMP_VAL(device, nvidia_name_0)) + { return 0; + } + if (!DP_ADD_TEMP_VAL(device, nvidia_compatible_1)) + { return 0; + } + if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_1)) + { return 0; + } + if (!DP_ADD_TEMP_VAL(device, nvidia_name_1)) + { return 0; - if (devices_number == 1) { + } + + if (devices_number == 1) + { if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_parent)) + { return 0; - } else { + } + } + else + { if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_child)) + { return 0; + } } // Rek : Dont use sprintf return, it does not WORK !! our custom sprintf() always return 0! @@ -1928,7 +1973,7 @@ // 10DE0F0014583544 2GB VRAM //if (((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id) == 0x14583544 ) //{ - vram_size = -2147483648UL;//2147483648; + vram_size = -2147483648UL; // 2147483648; //} break; case 0x11C6: // GTX650TI 11C6 @@ -1945,15 +1990,21 @@ break; } - if (!vram_size) { // Finally, if vram_size still not set do the calculation with our own method - if (nvCardType < NV_ARCH_50) { + if (!vram_size) + { // Finally, if vram_size still not set do the calculation with our own method + if (nvCardType < NV_ARCH_50) + { vram_size = REG32(NV04_PFB_FIFO_DATA); vram_size &= NV10_PFB_FIFO_DATA_RAM_AMOUNT_MB_MASK; - } else if (nvCardType < NV_ARCH_C0) { + } + else if (nvCardType < NV_ARCH_C0) + { vram_size = REG32(NV04_PFB_FIFO_DATA); vram_size |= (vram_size & 0xff) << 32; vram_size &= 0xffffffff00ll; - } else { // >= NV_ARCH_C0 + } + else + { // >= NV_ARCH_C0 vram_size = REG32(NVC0_MEM_CTRLR_RAM_AMOUNT) << 20; vram_size *= REG32(NVC0_MEM_CTRLR_COUNT); } @@ -1985,7 +2036,6 @@ char kNVCAP[12]; char *model = NULL; const char *value; - bool doit; fill_card_list(); @@ -2008,15 +2058,20 @@ verbose("Looking for nvidia video bios file %s\n", nvFilename); nvBiosOveride = load_nvidia_bios_file(nvFilename, &rom); - if (nvBiosOveride > 0) { + if (nvBiosOveride > 0) + { verbose("Using nVidia Video BIOS File %s (%d Bytes)\n", nvFilename, nvBiosOveride); DBG("%s Signature 0x%02x%02x %d bytes\n", nvFilename, rom[0], rom[1], nvBiosOveride); - } else { + } + else + { printf("ERROR: unable to open nVidia Video BIOS File %s\n", nvFilename); free(rom); return false; } - } else { + } + else + { uint8_t *nvRom; rom = malloc(NVIDIA_ROM_SIZE); // Otherwise read bios from card @@ -2029,10 +2084,13 @@ nvRom = (uint8_t*)®s[NV_PROM_OFFSET]; // Valid Signature ? - if (checkNvRomSig(nvRom)) { + if (checkNvRomSig(nvRom)) + { bcopy((uint8_t *)nvRom, rom, NVIDIA_ROM_SIZE); DBG("PROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]); - } else { + } + else + { // disable PROM access (REG32(NV_PBUS_PCI_NV_20)) = NV_PBUS_PCI_NV_20_ROM_SHADOW_ENABLED; @@ -2040,25 +2098,32 @@ //PRAM next nvRom = (uint8_t*)®s[NV_PRAMIN_OFFSET]; - if(checkNvRomSig(nvRom)) { + if(checkNvRomSig(nvRom)) + { bcopy((uint32_t *)nvRom, rom, NVIDIA_ROM_SIZE); DBG("PRAM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]); - } else { + } + else + { // 0xC0000 last bcopy((char *)0xc0000, rom, NVIDIA_ROM_SIZE); // Valid Signature ? - if (!checkNvRomSig(rom)) { + if (!checkNvRomSig(rom)) + { printf("ERROR: Unable to locate nVidia Video BIOS\n"); return false; - } else { + } + else + { DBG("ROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]); } }//end PRAM check }//end PROM check }//end load rom from bios - if ((nvPatch = patch_nvidia_rom(rom)) == PATCH_ROM_FAILED) { + if ((nvPatch = patch_nvidia_rom(rom)) == PATCH_ROM_FAILED) + { printf("ERROR: nVidia ROM Patching Failed!\n"); free(rom); return false; @@ -2067,15 +2132,19 @@ rom_pci_header = (option_rom_pci_header_t*)(rom + *(uint16_t *)&rom[24]); // check for 'PCIR' sig - if (rom_pci_header->signature == 0x50434952) { - if (rom_pci_header->device_id != nvda_dev->device_id) { + if (rom_pci_header->signature == 0x50434952) + { + if (rom_pci_header->device_id != nvda_dev->device_id) + { // Get Model from the OpROM model = get_nvidia_model(((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), 0); // Get VRAM again videoRam = mem_detect(regs, nvCardType, nvda_dev, ((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), 0); - } else { + } + else + { printf("nVidia incorrect PCI ROM signature: 0x%x\n", rom_pci_header->signature); } } @@ -2086,18 +2155,30 @@ nvda_dev->subsys_id.subsys.vendor_id, nvda_dev->subsys_id.subsys.device_id, devicepath, devices_number); - if (!string) { + if (!string) + { string = devprop_create_string(); } device = devprop_add_device(string, devicepath); /* FIXME: for primary graphics card only */ boot_display = 1; - if (devices_number == 1) { - devprop_add_value(device, "@0,AAPL,boot-display", (uint8_t*)&boot_display, 4); + if (devices_number == 1) + { + devprop_add_value(device, "@0,AAPL,boot-display", (uint8_t *)&boot_display, 4); } - if (nvPatch == PATCH_ROM_SUCCESS_HAS_LVDS) { + if (getBoolForKey(kUseIntelHDMI, &doit, &bootInfo->chameleonConfig) && doit) + { + devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-2", 10); + } + else + { + devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10); + } + + if (nvPatch == PATCH_ROM_SUCCESS_HAS_LVDS) + { uint8_t built_in = 0x01; devprop_add_value(device, "@0,built-in", &built_in, 1); } @@ -2112,20 +2193,26 @@ int crlf_count = 0; // only search the first 384 bytes - for (i = 0; i < 0x180; i++) { - if (rom[i] == 0x0D && rom[i+1] == 0x0A) { + for (i = 0; i < 0x180; i++) + { + if (rom[i] == 0x0D && rom[i+1] == 0x0A) + { crlf_count++; // second 0x0D0A was found, extract bios version - if (crlf_count == 2) { + if (crlf_count == 2) + { if (rom[i-1] == 0x20) i--; // strip last " " - for (version_start = i; version_start > (i-MAX_BIOS_VERSION_LENGTH); version_start--) { + for (version_start = i; version_start > (i-MAX_BIOS_VERSION_LENGTH); version_start--) + { // find start - if (rom[version_start] == 0x00) { + if (rom[version_start] == 0x00) + { version_start++; // strip "Version " - if (strncmp((const char*)rom+version_start, "Version ", 8) == 0) { + if (strncmp((const char*)rom+version_start, "Version ", 8) == 0) + { version_start += 8; } @@ -2141,19 +2228,23 @@ snprintf(biosVersion, sizeof(biosVersion), "%s", (nvBiosOveride > 0) ? nvFilename : version_str); snprintf(kNVCAP, sizeof(kNVCAP), "NVCAP_%04x", nvda_dev->device_id); - if (getValueForKey(kNVCAP, &value, &len, &bootInfo->chameleonConfig) && len == NVCAP_LEN * 2) { + if (getValueForKey(kNVCAP, &value, &len, &bootInfo->chameleonConfig) && len == NVCAP_LEN * 2) + { uint8_t new_NVCAP[NVCAP_LEN]; - if (hex2bin(value, new_NVCAP, NVCAP_LEN) == 0) { + if (hex2bin(value, new_NVCAP, NVCAP_LEN) == 0) + { verbose("Using user supplied NVCAP for %s :: %s\n", model, devicepath); memcpy(default_NVCAP, new_NVCAP, NVCAP_LEN); } } - if (getValueForKey(kDcfg0, &value, &len, &bootInfo->chameleonConfig) && len == DCFG0_LEN * 2) { + if (getValueForKey(kDcfg0, &value, &len, &bootInfo->chameleonConfig) && len == DCFG0_LEN * 2) + { uint8_t new_dcfg0[DCFG0_LEN]; - if (hex2bin(value, new_dcfg0, DCFG0_LEN) == 0) { + if (hex2bin(value, new_dcfg0, DCFG0_LEN) == 0) + { memcpy(default_dcfg_0, new_dcfg0, DCFG0_LEN); verbose("Using user supplied @0,display-cfg\n"); @@ -2162,10 +2253,12 @@ } } - if (getValueForKey(kDcfg1, &value, &len, &bootInfo->chameleonConfig) && len == DCFG1_LEN * 2) { + if (getValueForKey(kDcfg1, &value, &len, &bootInfo->chameleonConfig) && len == DCFG1_LEN * 2) + { uint8_t new_dcfg1[DCFG1_LEN]; - if (hex2bin(value, new_dcfg1, DCFG1_LEN) == 0) { + if (hex2bin(value, new_dcfg1, DCFG1_LEN) == 0) + { memcpy(default_dcfg_1, new_dcfg1, DCFG1_LEN); verbose("Using user supplied @1,display-cfg\n"); @@ -2195,7 +2288,8 @@ /******************** Added Marchrius.**********************/ // For the AppleBacklightDisplay // /***********************************************************/ - if (getBoolForKey(kEnableBacklight, &doit, &bootInfo->chameleonConfig) && doit) { + if (getBoolForKey(kEnableBacklight, &doit, &bootInfo->chameleonConfig) && doit) + { uint8_t AAPL_value[] = {0x01, 0x00, 0x00, 0x00}; //Is the same for all devprop_add_value(device, "AAPL,HasPanel", AAPL_value, 4); devprop_add_value(device, "AAPL,Haslid", AAPL_value, 4); @@ -2207,7 +2301,8 @@ /***********************************************************/ // For the DualLink // /***********************************************************/ - if (getBoolForKey(kEnableDualLink, &doit, &bootInfo->chameleonConfig) && doit) { + if (getBoolForKey(kEnableDualLink, &doit, &bootInfo->chameleonConfig) && doit) + { uint8_t AAPL00_value[] = {0x01, 0x00, 0x00, 0x00}; devprop_add_value(device, "AAPL00,DualLink", AAPL00_value, 4); } @@ -2216,16 +2311,18 @@ /************************ HDMI Audio ***********************/ doit = false; //http://forge.voodooprojects.org/p/chameleon/issues/67/ - if(getBoolForKey(kEnableHDMIAudio, &doit, &bootInfo->chameleonConfig) && doit) { + if(getBoolForKey(kEnableHDMIAudio, &doit, &bootInfo->chameleonConfig) && doit) + { static uint8_t connector_type_1[]= {0x00, 0x08, 0x00, 0x00}; - devprop_add_value(device, "@0,connector-type",connector_type_1, 4); + //devprop_add_value(device, "@0,connector-type",connector_type_1, 4); devprop_add_value(device, "@1,connector-type",connector_type_1, 4); - devprop_add_value(device, "@2,connector-type",connector_type_1, 4); - devprop_add_value(device, "@3,connector-type",connector_type_1, 4); + //devprop_add_value(device, "@2,connector-type",connector_type_1, 4); + //devprop_add_value(device, "@3,connector-type",connector_type_1, 4); } /************************ End Audio *************************/ - if (getBoolForKey(kVBIOS, &doit, &bootInfo->chameleonConfig) && doit) { + if (getBoolForKey(kVBIOS, &doit, &bootInfo->chameleonConfig) && doit) + { devprop_add_value(device, "vbios", rom, (nvBiosOveride > 0) ? nvBiosOveride : (rom[2] * 512)); } Index: branches/ErmaC/Enoch/i386/libsaio/ati.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/ati.c (revision 2505) +++ branches/ErmaC/Enoch/i386/libsaio/ati.c (revision 2506) @@ -9,6 +9,7 @@ static value_t aty_name; static value_t aty_nameparent; +static bool doit = false; card_t *card; card_config_t card_configs[] = { @@ -1567,6 +1568,15 @@ } // ------------------------------------------------- + if (getBoolForKey(kUseIntelHDMI, &doit, &bootInfo->chameleonConfig) && doit) + { + devprop_add_value(card->device, "hda-gfx", (uint8_t *)"onboard-2", 10); + } + else + { + devprop_add_value(card->device, "hda-gfx", (uint8_t *)"onboard-1", 10); + } + #if 0 uint64_t fb = (uint32_t)card->fb; uint64_t mmio = (uint32_t)card->mmio; Index: branches/ErmaC/Enoch/i386/boot2/boot.h =================================================================== --- branches/ErmaC/Enoch/i386/boot2/boot.h (revision 2505) +++ branches/ErmaC/Enoch/i386/boot2/boot.h (revision 2506) @@ -124,8 +124,9 @@ /* Slice: added this */ #define kPS2RestartFix "PS2RestartFix" /* acpi_patcher.c */ -#define kInjectEDID "InjectEDID" /* ati.c*/ -#define kCustomEDID "CustomEDID" /* ati.c*/ +//#define kInjectEDID "InjectEDID" /* ati.c */ +//#define kCustomEDID "CustomEDID" /* ati.c */ +#define kUseIntelHDMI "UseIntelHDMI" /* ati.c && nvidia.c && gma.c */ /* Signal64: added this key */ #define kLegacyOff "USBLegacyOff" /* usb.c */ Index: branches/ErmaC/Enoch/package/OptionalSettings/Audio.txt =================================================================== --- branches/ErmaC/Enoch/package/OptionalSettings/Audio.txt (revision 2505) +++ branches/ErmaC/Enoch/package/OptionalSettings/Audio.txt (revision 2506) @@ -26,4 +26,5 @@ # Note: There must be a carriage return at end of last line # --------------------------------------------- #Bool@HDAEnabler:HDAEnabler=Yes +#Bool@UseIntelHDMI:UseIntelHDMI=Yes Bool@EnableHDMIAudio:EnableHDMIAudio=Yes Index: branches/ErmaC/Enoch/CHANGES =================================================================== --- branches/ErmaC/Enoch/CHANGES (revision 2505) +++ branches/ErmaC/Enoch/CHANGES (revision 2506) @@ -1,4 +1,7 @@ +- ErmaC : Add UseIntelHDMI for hda-gfx = onboard-1 or 2 that vale will be injected into the GFX0 and HDEF devices. credits Clover Team +- ErmaC : Improve gma detection for HD4600 - cparm : Merge (security, stability, bugs fixes) improvements. +- ErmaC : C6 & C7 States credits to Clover Team. - Zenith432 : Completed patch for ExFAT support ( http://www.insanelymac.com/forum/topic/302938-exfat-volume-boot-record-for-chameleon ) - Zenith432 : add EXFAT boot support by Zenith432 - zenith432 : Merge patch from issue 386 (boot2 does not know how to read files from FAT partitions on GPT)