Index: trunk/i386/libsaio/gma.c =================================================================== --- trunk/i386/libsaio/gma.c (revision 2517) +++ trunk/i386/libsaio/gma.c (revision 2518) @@ -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] @@ -400,9 +401,17 @@ return false; } - devprop_add_value(device, "model", (uint8_t*)model, (strlen(model) + 1)); - devprop_add_value(device, "device_type", (uint8_t*)"display", 8); + 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); @@ -518,8 +527,8 @@ device_id = 0x00000102; // Inject a valid mobile GPU device id instead of patching kexts 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, "device-id", (uint8_t *)&device_id, sizeof(device_id)); + //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; @@ -531,8 +540,8 @@ devprop_add_value(device, "built-in", &BuiltIn, 1); 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, "device-id", (uint8_t *)&device_id, sizeof(device_id)); + //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 */ @@ -692,7 +701,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: @@ -708,7 +717,7 @@ } verbose("---------------------------------------------\n"); - memcpy(stringdata, (uint8_t*)devprop_generate_string(string), string->length); + memcpy(stringdata, (uint8_t *)devprop_generate_string(string), string->length); stringlength = string->length; return true; Index: trunk/i386/libsaio/nvidia.c =================================================================== --- trunk/i386/libsaio/nvidia.c (revision 2517) +++ trunk/i386/libsaio/nvidia.c (revision 2518) @@ -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; @@ -2035,7 +2036,6 @@ char kNVCAP[12]; char *model = NULL; const char *value; - bool doit; fill_card_list(); @@ -2168,6 +2168,15 @@ devprop_add_value(device, "@0,AAPL,boot-display", (uint8_t *)&boot_display, 4); } + 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; Index: trunk/i386/libsaio/ati.c =================================================================== --- trunk/i386/libsaio/ati.c (revision 2517) +++ trunk/i386/libsaio/ati.c (revision 2518) @@ -7,6 +7,7 @@ #include "ati.h" +static bool doit = false; static const char *chip_family_name[] = { "UNKNOW", @@ -1705,39 +1706,39 @@ }; dev_prop_t ati_devprop_list[] = { - {FLAGTRUE, false, "@0,AAPL,boot-display", get_bootdisplay_val, NULVAL }, -// {FLAGTRUE, false, "@0,ATY,EFIDisplay", NULL, STRVAL("TMDSA") }, + {FLAGTRUE, false, "@0,AAPL,boot-display", get_bootdisplay_val, NULVAL }, +// {FLAGTRUE, false, "@0,ATY,EFIDisplay", NULL, STRVAL("TMDSA") }, -// {FLAGTRUE, true, "@0,AAPL,vram-memory", get_vrammemory_val, NULVAL }, -// {FLAGTRUE, true, "@0,compatible", get_name_val, NULVAL }, -// {FLAGTRUE, true, "@0,connector-type", get_conntype_val, NULVAL }, -// {FLAGTRUE, true, "@0,device_type", NULL, STRVAL("display") }, -// {FLAGTRUE, false, "@0,display-connect-flags", NULL, DWRVAL((uint32_t)0) }, -// {FLAGTRUE, true, "@0,display-type", NULL, STRVAL("NONE") }, - {FLAGTRUE, true, "@0,name", get_name_val, NULVAL }, -// {FLAGTRUE, true, "@0,VRAM,memsize", get_vrammemsize_val, NULVAL }, +// {FLAGTRUE, true, "@0,AAPL,vram-memory", get_vrammemory_val, NULVAL }, +// {FLAGTRUE, true, "@0,compatible", get_name_val, NULVAL }, +// {FLAGTRUE, true, "@0,connector-type", get_conntype_val, NULVAL }, +// {FLAGTRUE, true, "@0,device_type", NULL, STRVAL("display") }, +// {FLAGTRUE, false, "@0,display-connect-flags", NULL, DWRVAL((uint32_t)0) }, +// {FLAGTRUE, true, "@0,display-type", NULL, STRVAL("NONE") }, + {FLAGTRUE, true, "@0,name", get_name_val, NULVAL }, +// {FLAGTRUE, true, "@0,VRAM,memsize", get_vrammemsize_val, NULVAL }, -// {FLAGTRUE, false, "AAPL,aux-power-connected", NULL, DWRVAL((uint32_t)1) }, -// {FLAGTRUE, false, "AAPL,backlight-control", NULL, DWRVAL((uint32_t)0) }, - {FLAGTRUE, false, "ATY,bin_image", get_binimage_val, NULVAL }, - {FLAGTRUE, false, "ATY,Copyright", NULL, STRVAL("Copyright AMD Inc. All Rights Reserved. 2005-2010") }, - {FLAGTRUE, false, "ATY,Card#", get_romrevision_val, NULVAL }, - {FLAGTRUE, false, "ATY,VendorID", NULL, WRDVAL((uint16_t)0x1002) }, - {FLAGTRUE, false, "ATY,DeviceID", get_deviceid_val, NULVAL }, +// {FLAGTRUE, false, "AAPL,aux-power-connected", NULL, DWRVAL((uint32_t)1) }, +// {FLAGTRUE, false, "AAPL,backlight-control", NULL, DWRVAL((uint32_t)0) }, + {FLAGTRUE, false, "ATY,bin_image", get_binimage_val, NULVAL }, + {FLAGTRUE, false, "ATY,Copyright", NULL, STRVAL("Copyright AMD Inc. All Rights Reserved. 2005-2010") }, + {FLAGTRUE, false, "ATY,Card#", get_romrevision_val, NULVAL }, + {FLAGTRUE, false, "ATY,VendorID", NULL, WRDVAL((uint16_t)0x1002) }, + {FLAGTRUE, false, "ATY,DeviceID", get_deviceid_val, NULVAL }, -// {FLAGTRUE, false, "ATY,MCLK", get_mclk_val, NULVAL }, -// {FLAGTRUE, false, "ATY,SCLK", get_sclk_val, NULVAL }, -// {FLAGTRUE, false, "ATY,RefCLK", get_refclk_val, DWRVAL((uint32_t)0x0a8c) }, +// {FLAGTRUE, false, "ATY,MCLK", get_mclk_val, NULVAL }, +// {FLAGTRUE, false, "ATY,SCLK", get_sclk_val, NULVAL }, +// {FLAGTRUE, false, "ATY,RefCLK", get_refclk_val, DWRVAL((uint32_t)0x0a8c) }, -// {FLAGTRUE, false, "ATY,PlatformInfo", get_platforminfo_val, NULVAL }, +// {FLAGTRUE, false, "ATY,PlatformInfo", get_platforminfo_val, NULVAL }, - {FLAGTRUE, false, "name", get_nameparent_val, NULVAL }, - {FLAGTRUE, false, "device_type", get_nameparent_val, NULVAL }, - {FLAGTRUE, false, "model", get_model_val, STRVAL("ATI Radeon") }, -// {FLAGTRUE, false, "VRAM,totalsize", get_vramtotalsize_val, NULVAL }, - {FLAGTRUE, false, "hda-gfx", get_hdmiaudio, NULVAL}, + {FLAGTRUE, false, "name", get_nameparent_val, NULVAL }, + {FLAGTRUE, false, "device_type", get_nameparent_val, NULVAL }, + {FLAGTRUE, false, "model", get_model_val, STRVAL("ATI Radeon") }, +// {FLAGTRUE, false, "VRAM,totalsize", get_vramtotalsize_val, NULVAL }, + {FLAGTRUE, false, "hda-gfx", get_hdmiaudio, NULVAL }, - {FLAGTRUE, false, NULL, NULL, NULVAL } + {FLAGTRUE, false, NULL, NULL, NULVAL } }; bool get_hdmiaudio(value_t * val) @@ -1866,7 +1867,7 @@ val->type = kPtr; val->size = strlen((char *)rev); val->data = malloc(val->size); - + if (!val->data) { return false; @@ -2328,7 +2329,7 @@ card->posted = radeon_card_posted(); verbose("ATI card %s, ", card->posted ? "POSTed" : "non-POSTed"); - + verbose("\n"); get_vram_size(); getBoolForKey(kATYbinimage, &add_vbios, &bootInfo->chameleonConfig); @@ -2434,6 +2435,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; @@ -2460,6 +2470,8 @@ ati_dev->subsys_id.subsys.vendor_id, ati_dev->subsys_id.subsys.device_id, devicepath); + verbose("---------------------------------------------\n"); + free(card); return true; Index: trunk/i386/boot2/boot.h =================================================================== --- trunk/i386/boot2/boot.h (revision 2517) +++ trunk/i386/boot2/boot.h (revision 2518) @@ -124,6 +124,7 @@ /* Slice: added this */ #define kPS2RestartFix "PS2RestartFix" /* acpi_patcher.c */ +#define kUseIntelHDMI "UseIntelHDMI" /* ati.c && nvidia.c && gma.c */ /* Signal64: added this key */ #define kLegacyOff "USBLegacyOff" /* usb.c */ Index: trunk/package/OptionalSettings/Audio.txt =================================================================== --- trunk/package/OptionalSettings/Audio.txt (revision 2517) +++ trunk/package/OptionalSettings/Audio.txt (revision 2518) @@ -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