␉#define DEBUG_GMA 0␊ |
#endif␊ |
␊ |
#ifndef REPLACE_DEVICE_ID␊ |
␉#define REPLACE_DEVICE_ID 0␊ |
#endif␊ |
␊ |
#if DEBUG_GMA␊ |
␉#define DBG(x...)␉printf(x)␊ |
#else␊ |
|
static uint8_t default_aapl_broadwell[]␉␉=␉{ 0x00,0x00,0x1e,0x16 }; // broadwell_ig_vals[2]␊ |
#define AAPL_LEN_BDW ( sizeof(default_aapl_broadwell) / sizeof(uint8_t) )␊ |
␊ |
static uint8_t default_aapl_skylake[]␉␉=␉{ 0x00,0x00,0x16,0x19 }; // skylike_ig_vals[2]␊ |
#define AAPL_LEN_SKL ( sizeof(default_aapl_skylake) / sizeof(uint8_t) )␊ |
␊ |
uint8_t GMAX3100_vals[23][4] = {␊ |
␉{ 0x01,0x00,0x00,0x00 },␉//0 "AAPL,HasPanel"␊ |
␉{ 0x01,0x00,0x00,0x00 },␉//1 "AAPL,SelfRefreshSupported"␊ |
|
␉{ 0x08,0x00,0x26,0x0a },␉// 14 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3␊ |
␉{ 0x08,0x00,0x2e,0x0a },␉// 15 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT reserved GT3␊ |
␉{ 0x04,0x00,0x12,0x04 }␉␉// 16 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3␊ |
␉//0x0412000b␊ |
␉//0x0d260009␊ |
};␊ |
␊ |
uint8_t broadwell_ig_vals[19][4] = {␊ |
uint8_t broadwell_ig_vals[20][4] = {␊ |
␉{ 0x00,0x00,0x06,0x16 },␉// 0 - 16060000 Broadwell GT1 (Intel HD Graphics)␊ |
␉{ 0x00,0x00,0x0e,0x16 },␉// 1 - 160e0000 Broadwell GT1 (Intel HD Graphics)␊ |
␉{ 0x00,0x00,0x16,0x16 },␉// 2 - 16160000 Broadwell GT2 (Intel HD Graphics 5500)␊ |
|
␉{ 0x04,0x00,0x2b,0x16 },␉// 15 - 162b0004 Broadwell GT3 (MacBook Pro) (Intel Iris Graphics 6100)␊ |
␉{ 0x04,0x00,0x26,0x16 },␉// 16 - 16260004 Broadwell GT3 (MacBook Air) (Intel HD Graphics 6000)␊ |
␉{ 0x05,0x00,0x26,0x16 },␉// 17 - 16260005 Broadwell GT3 (MacBook Air) (Intel HD Graphics 6000)␊ |
␉{ 0x06,0x00,0x26,0x16 }␉␉// 18 - 16260006 Broadwell GT3 (MacBook Air) (Intel HD Graphics 6000)␊ |
␉{ 0x06,0x00,0x26,0x16 },␉// 18 - 16260006 Broadwell GT3 (MacBook Air) (Intel HD Graphics 6000)␊ |
␉{ 0x07,0x00,0x22,0x16 }␉␉// 19 - 16260006 Broadwell GT3 (iMac Retina 21") (Intel Iris Pro 6200)␊ |
};␊ |
␊ |
uint8_t skylake_ig_vals[12][4] = {␊ |
␉{ 0x00,0x00,0xe0,0x19 }, // 0 - 191e0000 – Skylake ULX GT2␊ |
␉{ 0x00,0x00,0x16,0x19 }, // 1 - 19160000 – Skylake ULT GT2␊ |
␉{ 0x00,0x00,0x26,0x19 }, // 2 - 19260000 – Skylake ULT GT3␊ |
␉{ 0x00,0x00,0x1b,0x19 }, // 3 - 191b0000 – Skylake HALO GT2␊ |
␉{ 0x00,0x00,0x12,0x19 }, // 4 - 19120000 – Skylake Desktop GT2␊ |
␉{ 0x01,0x00,0x02,0x19 }, // 5 - 19020001 – Skylake Desktop GT1␊ |
␉{ 0x01,0x00,0x17,0x19 }, // 6 - 19170001 – Skylake Desktop GT1.5␊ |
␉{ 0x01,0x00,0x12,0x19 }, // 7 - 19120001 – Skylake Desktop GT2␊ |
␉{ 0x01,0x00,0x32,0x19 }, // 8 - 19320001 – Skylake Desktop GT4␊ |
␉{ 0x02,0x00,0x16,0x19 }, // 9 - 19160002 – Skylake ULT GT2␊ |
␉{ 0x02,0x00,0x26,0x19 }, // 10 - 19260002 – Skylake ULT GT3␊ |
␉{ 0x03,0x00,0x1e,0x19 } // 11 - 191e0003 – Skylake ULX GT2␊ |
};␊ |
␊ |
uint8_t HD2000_vals[16][4] = {␊ |
␉{ 0x00,0x00,0x00,0x00 }, //0 "AAPL00,PixelFormat"␊ |
␉{ 0x00,0x00,0x00,0x00 }, //1 "AAPL00,T1"␊ |
|
␉{GMA_SANDYBRIDGE_M_GT1,␉␉HD_GRAPHICS_2000 },␊ |
␉{GMA_SANDYBRIDGE_M_GT2,␉␉HD_GRAPHICS_3000 },␊ |
␉{GMA_SANDYBRIDGE_M_GT2_PLUS,␉HD_GRAPHICS_3000 },␊ |
␉{GMA_SANDYBRIDGE_S_GT,␉␉HD_GRAPHICS },␊ |
␉{GMA_SANDYBRIDGE_S_GT,␉␉"HD Graphics P3000" }, /* 010a */␊ |
␉// 010B /* ??? */␊ |
␉// 010E /* ??? */␊ |
␊ |
|
␉{GMA_BROADWELL_BDW_163B,␉␉HD_GRAPHICS },␉␉/* 163b */␊ |
␉{GMA_BROADWELL_BDW_163A,␉␉HD_GRAPHICS },␉␉/* 163a */␊ |
␉{GMA_BROADWELL_BDW_163D,␉␉HD_GRAPHICS },␉␉/* 163d */␊ |
␉{GMA_BROADWELL_BDW_163E,␉␉HD_GRAPHICS }␉␉/* 163e */␊ |
␉{GMA_BROADWELL_BDW_163E,␉␉HD_GRAPHICS },␉␉/* 163e */␊ |
␊ |
␉/* Skylake */␊ |
␉{GMA_SKYLAKE_ULT_GT1,␉␉␉HD_GRAPHICS_510 },␉/* 1906 */␊ |
␉{GMA_SKYLAKE_ULT_GT15,␉␉␉HD_GRAPHICS_510 },␉/* 1913 */␊ |
␉{GMA_SKYLAKE_ULT_GT2,␉␉␉HD_GRAPHICS_520 },␉/* 1916 */␊ |
␉{GMA_SKYLAKE_ULX_GT1,␉␉␉HD_GRAPHICS },␉␉/* 190E */␊ |
␉{GMA_SKYLAKE_ULX_GT2,␉␉␉HD_GRAPHICS_515 },␉/* 191E */␊ |
␉{GMA_SKYLAKE_DT_GT2,␉␉␉HD_GRAPHICS_530 },␉/* 1912 */␊ |
␉{GMA_SKYLAKE_1921,␉␉␉␉HD_GRAPHICS_520 },␉/* 1921 */␊ |
␉{GMA_SKYLAKE_ULT_GT3_E,␉␉␉IRIS_540 },␉␉/* 1926 */␊ |
␉{GMA_SKYLAKE_ULT_GT3,␉␉␉HD_GRAPHICS_535 },␉/* 1923 */␊ |
␉{GMA_SKYLAKE_ULT_GT3_28W,␉␉HD_GRAPHICS_550 },␉/* 1927 */␊ |
␉{GMA_SKYLAKE_DT_GT15,␉␉␉HD_GRAPHICS_530 },␉/* 1917 */␊ |
␉{GMA_SKYLAKE_DT_GT1,␉␉␉HD_GRAPHICS_510 },␉/* 1902 */␊ |
␉{GMA_SKYLAKE_DT_GT4,␉␉␉IRIS_570_580 },␉␉/* 1932 */␊ |
␉{GMA_SKYLAKE_GT4,␉␉␉IRIS_580 },␉␉/* 193B */␊ |
␉{GMA_SKYLAKE_GT3_FE,␉␉␉IRIS },␉␉␉/* 192B */␊ |
␉{GMA_SKYLAKE_GT2,␉␉␉HD_GRAPHICS_530 },␉/* 191B */␊ |
␉{GMA_SKYLAKE_192A,␉␉␉IRIS_P580 },␉␉/* 192A */␊ |
␉{GMA_SKYLAKE_SRW_GT4,␉␉␉IRIS_P580 },␉␉/* 193A */␊ |
␉{GMA_SKYLAKE_WS_GT2,␉␉␉HD_GRAPHICS_P530 },␉/* 191D */␊ |
␉{GMA_SKYLAKE_WS_GT4,␉␉␉IRIS_P580 }␉␉/* 193D */␊ |
};␊ |
␊ |
#define GFX_DEVICES_LEN (sizeof(intel_gfx_chipsets) / sizeof(intel_gfx_chipsets[0]))␊ |
|
␉␉␉devprop_add_value(device, "built-in",␉␉␉&BuiltIn, 1);␊ |
␉␉␉devprop_add_value(device, "class-code",␉␉␉ClassFix, 4);␊ |
␊ |
␉␉␉devprop_add_value(device, "vendor-id",␉␉␉(uint8_t *)INTEL_VENDORID, 4);␊ |
␉␉␉// patch by ikunikun for i3-2125 and i5-2500K to enable HD3000.␊ |
␉␉␉if(((device_id << 16) | vendor_id) != GMA_SANDYBRIDGE_GT2)␊ |
␉␉␉{␊ |
␉␉␉␉devprop_add_value(device, "vendor-id",␉(uint8_t *)INTEL_VENDORID, 4);␊ |
␉␉␉}␊ |
␉␉␉else␊ |
␉␉␉{␊ |
␉␉␉␉device_id = 0x00000126;␊ |
␉␉␉␉devprop_add_value(device, "device-id", (uint8_t *)&device_id, sizeof(device_id));␊ |
␉␉␉␉verbose("\tInjeting done: was [%04x:%04x] now is [%04x:%04x]\n", gma_dev->vendor_id, gma_dev->device_id, gma_dev->vendor_id, device_id);␊ |
␉␉␉}␊ |
␊ |
␊ |
␉␉␉devprop_add_value(device, "AAPL,tbl-info",␉␉HD3000_tbl_info, 18);␊ |
␉␉␉devprop_add_value(device, "AAPL,os-info",␉␉HD3000_os_info, 20);␊ |
␊ |
|
␉␉case GMA_HASWELL_E_GT2: // 041e␊ |
␉␉case GMA_HASWELL_ULT_M_GT2: // 0a16␊ |
␉␉case GMA_HASWELL_ULT_E_GT2: // 0a1e␊ |
␊ |
#if REPLACE_DEVICE_ID␊ |
␉␉␉verbose("\tInjecting a valid desktop GPU device id (0x0412) instead of patching kexts.\n");␊ |
␉␉␉device_id = 0x00000412;␉␉// Inject a valid desktop GPU device id (0x0412) instead of patching kexts␊ |
␉␉␉devprop_add_value(device, "vendor-id",␉(uint8_t *)INTEL_VENDORID, 4);␊ |
␉␉␉devprop_add_value(device, "device-id",␉(uint8_t *)&device_id, sizeof(device_id));␊ |
␉␉␉verbose("\tInjeting done: was [%04x:%04x] now is [%04x:%04x]\n", gma_dev->vendor_id, gma_dev->device_id, gma_dev->vendor_id, device_id);␊ |
␊ |
#endif // REPLACE_DEVICE_ID␊ |
␉␉case GMA_HASWELL_D_GT1: // 0402␊ |
␉␉case GMA_HASWELL_M_GT1: // 0406␊ |
␉␉case GMA_HASWELL_S_GT1: // 040a␊ |
|
␉␉case GMA_BROADWELL_BDW_161A: // 161a␊ |
␉␉case GMA_BROADWELL_BDW_161D: // 161d␊ |
␉␉case GMA_BROADWELL_BDW_Y_GT2: // 161e (MacBook) Intel HD Graphics 5300␊ |
␉␉case GMA_BROADWELL_BDW_1622: // 1622␊ |
␉␉case GMA_BROADWELL_BDW_1622: // 1622 (iMac 21") Intel Iris Pro 6200␊ |
␉␉case GMA_BROADWELL_BDW_U_GT3: // 1626 (MacBook Air) Intel HD Graphics 6000␊ |
␉␉case GMA_BROADWELL_BDW_162A: // 162a␊ |
␉␉case GMA_BROADWELL_BDW_U_GT3_2: // 162b (MacBook Pro) Intel Iris Graphics 6100␊ |
|
␉␉␉}␊ |
␉␉␉else if (getIntForKey(kIntelBdwFB, &n_igs, &bootInfo->chameleonConfig))␊ |
␉␉␉{␊ |
␉␉␉␉if ((n_igs >= 0) || (n_igs <= 19))␊ |
␉␉␉␉if ((n_igs >= 0) || (n_igs <= 20))␊ |
␉␉␉␉{␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with value %d\n", n_igs);␊ |
␉␉␉␉␉devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[n_igs], 4);␊ |
␉␉␉␉}␊ |
␉␉␉␉else␊ |
␉␉␉␉{␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with bad value please choose a number between 0 and 18.\n");␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with bad value please choose a number between 0 and 19.\n");␊ |
␉␉␉␉}␊ |
␉␉␉}␊ |
␉␉␉else␊ |
␉␉␉{␊ |
␉␉␉␉uint32_t ig_platform_id = 0x16160000; // set the default platform ig␊ |
␉␉␉␉uint32_t ig_platform_id;␊ |
␉␉␉␉if ( ( (device_id << 16) | vendor_id ) == GMA_BROADWELL_BDW_1622 )␊ |
␉␉␉␉{␊ |
␉␉␉␉␉ig_platform_id = 0x16220007; // Iris Pro 6200 (i5 5675C & i7 5775C)␊ |
␉␉␉␉}␊ |
␉␉␉␉else␊ |
␉␉␉␉{␊ |
␉␉␉␉␉ig_platform_id = 0x16160000; // set the default platform ig␊ |
␉␉␉␉}␊ |
␉␉␉␉devprop_add_value(device, "AAPL,ig-platform-id", (uint8_t *)&ig_platform_id, 4);␊ |
␉␉␉}␊ |
␊ |
|
␊ |
␉␉␉break;␊ |
␊ |
␉␉/* Skylake */␊ |
␉␉/* HD Graphics */␊ |
␉␉case GMA_SKYLAKE_ULT_GT1:␉// 1906␊ |
␉␉case GMA_SKYLAKE_ULT_GT15:␉// 1913␊ |
␉␉case GMA_SKYLAKE_ULT_GT2:␉// 1916 *␊ |
␉␉case GMA_SKYLAKE_ULX_GT1:␉// 190E␊ |
␉␉case GMA_SKYLAKE_ULX_GT2:␉// 191E *␊ |
␉␉case GMA_SKYLAKE_DT_GT2:␉// 1912 *␊ |
␉␉case GMA_SKYLAKE_1921:␉␉// 1921␊ |
␉␉case GMA_SKYLAKE_ULT_GT3_E:␉// 1926 *␊ |
␉␉case GMA_SKYLAKE_ULT_GT3:␉// 1923␊ |
␉␉case GMA_SKYLAKE_ULT_GT3_28W:␉// 1927␊ |
␉␉case GMA_SKYLAKE_DT_GT15:␉// 1917 *␊ |
␉␉case GMA_SKYLAKE_DT_GT1:␉// 1902 *␊ |
␉␉case GMA_SKYLAKE_DT_GT4:␉// 1932␊ |
␉␉case GMA_SKYLAKE_GT4:␉␉// 193B␊ |
␉␉case GMA_SKYLAKE_GT3_FE:␉// 192B␊ |
␉␉case GMA_SKYLAKE_GT2:␉␉// 191B *␊ |
␉␉case GMA_SKYLAKE_192A:␉␉// 192A␊ |
␉␉case GMA_SKYLAKE_SRW_GT4:␉// 193A␊ |
␉␉case GMA_SKYLAKE_WS_GT2:␉// 191D␊ |
␉␉case GMA_SKYLAKE_WS_GT4:␉// 193D␊ |
␊ |
␉␉␉if (getValueForKey(kAAPLCustomIG, &value, &len, &bootInfo->chameleonConfig) && len == AAPL_LEN_SKL * 2)␊ |
␉␉␉{␊ |
␉␉␉␉uint8_t new_aapl0[AAPL_LEN_SKL];␊ |
␊ |
␉␉␉␉if (hex2bin(value, new_aapl0, AAPL_LEN_SKL) == 0)␊ |
␉␉␉␉{␊ |
␉␉␉␉␉memcpy(default_aapl_skylake, new_aapl0, AAPL_LEN_SKL);␊ |
␊ |
␉␉␉␉␉verbose("\tUsing user supplied AAPL,ig-platform-id\n");␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id: %02x%02x%02x%02x\n",␊ |
␉␉␉␉␉␉default_aapl_skylake[0], default_aapl_skylake[1], default_aapl_skylake[2], default_aapl_skylake[3]);␊ |
␉␉␉␉}␊ |
␉␉␉␉devprop_add_value(device, "AAPL,ig-platform-id", default_aapl_skylake, AAPL_LEN_SKL);␊ |
␉␉␉}␊ |
␉␉␉else if (getIntForKey(kIntelSklFB, &n_igs, &bootInfo->chameleonConfig))␊ |
␉␉␉{␊ |
␉␉␉␉if ((n_igs >= 0) || (n_igs <= 12))␊ |
␉␉␉␉{␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with value %d\n", n_igs);␊ |
␉␉␉␉␉devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[n_igs], 4);␊ |
␉␉␉␉}␊ |
␉␉␉␉else␊ |
␉␉␉␉{␊ |
␉␉␉␉␉verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with bad value please choose a number between 0 and 12.\n");␊ |
␉␉␉␉}␊ |
␉␉␉}␊ |
␉␉␉else␊ |
␉␉␉{␊ |
␉␉␉␉uint32_t ig_platform_id = 0x19260000; // set the default platform ig␊ |
␉␉␉␉devprop_add_value(device, "AAPL,ig-platform-id", (uint8_t *)&ig_platform_id, 4);␊ |
␉␉␉}␊ |
␊ |
␉␉␉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);␊ |
␊ |
␉␉␉break;␊ |
␊ |
␉␉default:␊ |
␉␉␉break;␊ |
␉}␊ |