/* * gma.c * * * Created by Slice * Fully reworked by Sherlocks, 2017-2019 * * Original patch by Nawcom * http://forum.voodooprojects.org/index.php/topic,1029.0.html * * IntelFramebuffer info by vit9696 * https://github.com/acidanthera/WhateverGreen/blob/master/Manual/IntelFramebuffer.bt */ #define WILL_WORK 0 #include "device_inject.h" /* ============== Information =============== https://en.wikipedia.org/wiki/List_of_Intel_chipsets https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units https://github.com/Igalia/intel-osrc-gfx-prm https://github.com/intel/external-mesa/blob/master/include/pci_ids/i965_pci_ids.h https://github.com/intel/intel-graphics-compiler/blob/master/inc/common/igfxfmid.h https://fossies.org/linux/mesa/include/pci_ids/i965_pci_ids.h https://software.intel.com/en-us/articles/intel-graphics-developers-guides https://www.intel.com/content/www/us/en/support/graphics-drivers/000005526.html#core https://01.org/linuxgraphics/documentation/hardware-specification-prms http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/gma.c ============== 1st generation ============ ============== 2nd generation ============ ============== 3rd generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/000_g35 ============== 4th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/001_g45 ============== 5th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/002_ilk_-_2010 http://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics-qeci/ ============== 6th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/003_snb_-_2011 https://software.intel.com/sites/default/files/m/d/4/1/d/8/Sandy_Bridge_Intel_HD_Graphics_DirectX_Developer_s_Guide_2dot9dot6.pdf ============== 7th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/004_ivb_-_2012 https://applelife.ru/threads/intel-hd-2500-ivybridge-zavod-tolko-hdmi.40629/ http://blog.stuffedcow.net/2012/07/intel-hd4000-qeci-acceleration/ ============== 7.5th generation ========== https://github.com/Igalia/intel-osrc-gfx-prm/blob/master/005_hsw_-_2013/vol04_intel-gfx-prm-osrc-hsw-configurations.pdf https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/006_vvw_-_2014 http://www.insanelymac.com/forum/topic/290783-intel-hd-graphics-4600-haswell-working-displayport/ http://www.insanelymac.com/forum/topic/328567-intel-hd-graphics-haswell-gt1-qeci-patch/ ============== 8th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/blob/master/007_bdw_-_2014-2015/intel-gfx-prm-osrc-bdw-vol04-configurations_1.pdf https://github.com/Igalia/intel-osrc-gfx-prm/tree/master/008_chv-bsw_-_2014-2015 ============== 9th generation ============ https://github.com/Igalia/intel-osrc-gfx-prm/blob/master/009_skl_-_2015-2016/intel-gfx-prm-osrc-skl-vol04-configurations.pdf ============== 9.5th generation ========== https://github.com/Igalia/intel-osrc-gfx-prm/blob/master/010_kbl_-_2016-2017/intel-gfx-prm-osrc-kbl-vol04-configurations.pdf ============== 10th generation =========== https://github.com/Igalia/release-mesa/blob/ecd8f8580288361f6c4d532ba964a744dd62a9dd/include/pci_ids/i965_pci_ids.h ============== 11th generation =========== https://github.com/Igalia/release-mesa/blob/ad7ed86bf7831d03c1c6115c37e11a47745e5a5a/include/pci_ids/i965_pci_ids.h */ #include // Only use angled for Platform, else, xcode project won't compile #include "gma.h" #include "platformdata.h" #include "FixBiosDsdt.h" #include "../include/Devices.h" #include "../Platform/Settings.h" #ifndef DEBUG_GMA #ifndef DEBUG_ALL #define DEBUG_GMA 0 #else #define DEBUG_GMA DEBUG_ALL #endif #endif #if DEBUG_GMA == 0 #define DBG(...) #else #define DBG(...) DebugLog(DEBUG_GMA, __VA_ARGS__) #endif CONST CHAR16 *CFLFBPath = L"/System/Library/Extensions/AppleIntelCFLGraphicsFramebuffer.kext"; extern CHAR8* gDeviceProperties; CONST UINT8 ClassFix[] = { 0x00, 0x00, 0x03, 0x00 }; UINT8 common_vals[3][4] = { { 0x00, 0x00, 0x00, 0x00 }, //0 reg_FALSE { 0x01, 0x00, 0x00, 0x00 }, //1 reg_TRUE { 0x6B, 0x10, 0x00, 0x00 }, //2 "subsystem-vendor-id" }; UINT8 calistoga_gma_vals[30][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,HasLid" { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,HasPanel" { 0x04, 0x00, 0x00, 0x00 }, //2 "AAPL,NumDisplays" { 0x02, 0x00, 0x00, 0x00 }, //3 "AAPL,NumFramebuffers" { 0x3f, 0x00, 0x00, 0x08 }, //4 "AAPL01,BacklightIntensity" { 0x01, 0x00, 0x00, 0x00 }, //5 "AAPL01,BootDisplay" { 0x00, 0x00, 0x00, 0x00 }, //6 "AAPL01,CurrentDisplay" { 0x01, 0x00, 0x00, 0x00 }, //7 "AAPL01,DataJustify" { 0x00, 0x00, 0x00, 0x00 }, //8 "AAPL01,Depth" { 0x00, 0x00, 0x00, 0x00 }, //9 "AAPL01,Dither" { 0x20, 0x03, 0x00, 0x00 }, //10 "AAPL01,Height" { 0x00, 0x00, 0x00, 0x00 }, //11 "AAPL01,Interlace" { 0x00, 0x00, 0x00, 0x00 }, //12 "AAPL01,Inverter" { 0x00, 0x00, 0x00, 0x00 }, //13 "AAPL01,InverterCurrent" { 0xc8, 0x52, 0x00, 0x00 }, //14 "AAPL01,InverterFrequency" { 0x00, 0x10, 0x00, 0x00 }, //15 "AAPL01,IODisplayMode" { 0x00, 0x00, 0x00, 0x00 }, //16 "AAPL01,LinkFormat" { 0x00, 0x00, 0x00, 0x00 }, //17 "AAPL01,LinkType" { 0x01, 0x00, 0x00, 0x00 }, //18 "AAPL01,Pipe" { 0x00, 0x00, 0x00, 0x00 }, //19 "AAPL01,PixelFormat" { 0x3b, 0x00, 0x00, 0x00 }, //20 "AAPL01,Refresh" { 0x00, 0x00, 0x00, 0x00 }, //21 "AAPL01,Stretch" { 0x00, 0x00, 0x00, 0x00 }, //22 "AAPL01,T1" { 0x01, 0x00, 0x00, 0x00 }, //23 "AAPL01,T2" { 0xc8, 0x00, 0x00, 0x00 }, //24 "AAPL01,T3" { 0xc8, 0x01, 0x00, 0x00 }, //25 "AAPL01,T4" { 0x01, 0x00, 0x00, 0x00 }, //26 "AAPL01,T5" { 0x00, 0x00, 0x00, 0x00 }, //27 "AAPL01,T6" { 0x90, 0x01, 0x00, 0x00 }, //28 "AAPL01,T7" { 0x00, 0x05, 0x00, 0x00 }, //29 "AAPL01,Width" }; UINT8 crestline_gma_vals[34][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,HasLid" { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,HasPanel" { 0x04, 0x00, 0x00, 0x00 }, //2 "AAPL,NumDisplays" { 0x02, 0x00, 0x00, 0x00 }, //3 "AAPL,NumFramebuffers" { 0x01, 0x00, 0x00, 0x00 }, //4 "AAPL,SelfRefreshSupported" { 0x01, 0x00, 0x00, 0x00 }, //5 "AAPL,aux-power-connected" { 0x01, 0x00, 0x00, 0x08 }, //6 "AAPL,backlight-control" { 0x00, 0x00, 0x00, 0x08 }, //7 "AAPL00,blackscreen-preferences" { 0x01, 0x00, 0x00, 0x00 }, //8 "AAPL01,BootDisplay" { 0x38, 0x00, 0x00, 0x08 }, //9 "AAPL01,BacklightIntensity" { 0x00, 0x00, 0x00, 0x00 }, //10 "AAPL01,blackscreen-preferences" { 0x00, 0x00, 0x00, 0x00 }, //11 "AAPL01,CurrentDisplay" { 0x01, 0x00, 0x00, 0x00 }, //12 "AAPL01,DataJustify" { 0x20, 0x00, 0x00, 0x00 }, //13 "AAPL01,Depth" { 0x00, 0x00, 0x00, 0x00 }, //14 "AAPL01,Dither" { 0x20, 0x03, 0x00, 0x00 }, //15 "AAPL01,Height" { 0x00, 0x00, 0x00, 0x00 }, //16 "AAPL01,Interlace" { 0x00, 0x00, 0x00, 0x00 }, //17 "AAPL01,Inverter" { 0x08, 0x52, 0x00, 0x00 }, //18 "AAPL01,InverterCurrent" { 0xaa, 0x01, 0x00, 0x00 }, //19 "AAPL01,InverterFrequency" { 0x00, 0x00, 0x00, 0x00 }, //20 "AAPL01,LinkFormat" { 0x00, 0x00, 0x00, 0x00 }, //21 "AAPL01,LinkType" { 0x01, 0x00, 0x00, 0x00 }, //22 "AAPL01,Pipe" { 0x00, 0x00, 0x00, 0x00 }, //23 "AAPL01,PixelFormat" { 0x3d, 0x00, 0x00, 0x00 }, //24 "AAPL01,Refresh" { 0x00, 0x00, 0x00, 0x00 }, //25 "AAPL01,Stretch" { 0x00, 0x00, 0x00, 0x00 }, //26 "AAPL01,T1" { 0x01, 0x00, 0x00, 0x00 }, //27 "AAPL01,T2" { 0xc8, 0x00, 0x00, 0x00 }, //28 "AAPL01,T3" { 0xc8, 0x01, 0x00, 0x00 }, //29 "AAPL01,T4" { 0x01, 0x00, 0x00, 0x00 }, //30 "AAPL01,T5" { 0x00, 0x00, 0x00, 0x00 }, //31 "AAPL01,T6" { 0x90, 0x01, 0x00, 0x00 }, //32 "AAPL01,T7" { 0x00, 0x05, 0x00, 0x00 }, //33 "AAPL01,Width" }; UINT8 ironlake_hd_vals[10][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,aux-power-connected" { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,backlight-control" { 0x00, 0x00, 0x00, 0x00 }, //2 "AAPL00,T1" { 0x01, 0x00, 0x00, 0x00 }, //3 "AAPL00,T2" { 0xc8, 0x00, 0x00, 0x00 }, //4 "AAPL00,T3" { 0xc8, 0x01, 0x00, 0x00 }, //5 "AAPL00,T4" { 0x01, 0x00, 0x00, 0x00 }, //6 "AAPL00,T5" { 0x00, 0x00, 0x00, 0x00 }, //7 "AAPL00,T6" { 0x90, 0x01, 0x00, 0x00 }, //8 "AAPL00,T7" { 0x00, 0x00, 0x00, 0x12 }, //9 "VRAM,totalsize" }; UINT8 sandy_bridge_snb_vals[7][4] = { { 0x00, 0x00, 0x01, 0x00 }, //0 *MacBookPro8,1/MacBookPro8,2/MacBookPro8,3 - Intel HD Graphics 3000 - SNB0: 0x10000, Mobile: 1, PipeCount: 2, PortCount: 4, Connector: LVDS1/DP3, BL: 0x0710 { 0x00, 0x00, 0x02, 0x00 }, //1 Intel HD Graphics 3000 - SNB1: 0x20000, Mobile: 1, PipeCount: 2, PortCount: 1, Connector: LVDS1, BL: 0x0710 { 0x10, 0x00, 0x03, 0x00 }, //2 *Macmini5,1/Macmini5,3 - Intel HD Graphics 3000 - SNB2: 0x30010, Mobile: 0, PipeCount: 2, PortCount: 3, Connector: DP2/HDMI1, BL: { 0x20, 0x00, 0x03, 0x00 }, //3 *Macmini5,1/Macmini5,3 - Intel HD Graphics 3000 - SNB2: 0x30020, Mobile: 0, PipeCount: 2, PortCount: 3, Connector: DP2/HDMI1, BL: { 0x30, 0x00, 0x03, 0x00 }, //4 *Macmini5,2 - Intel HD Graphics 3000 - SNB3: 0x30030, Mobile: 0, PipeCount: 0, PortCount: 0, Connector:, BL: { 0x00, 0x00, 0x04, 0x00 }, //5 *MacBookAir4,1/MacBookAir4,2 - Intel HD Graphics 3000 - SNB4: 0x40000, Mobile: 1, PipeCount: 2, PortCount: 3, Connector: LVDS1/DP2, BL: 0x0710 { 0x00, 0x00, 0x05, 0x00 }, //6 *iMac12,1/iMac12,2 - Intel HD Graphics 3000 - SNB5: 0x50000, Mobile: 0, PipeCount: 0, PortCount: 0, Connector:, BL: }; UINT8 sandy_bridge_hd_vals[13][4] = { { 0x00, 0x00, 0x00, 0x00 }, //0 "AAPL00,DataJustify" { 0x00, 0x00, 0x00, 0x00 }, //1 "AAPL00,Dither" { 0x00, 0x00, 0x00, 0x00 }, //2 "AAPL00,LinkFormat" { 0x00, 0x00, 0x00, 0x00 }, //3 "AAPL00,LinkType" { 0x00, 0x00, 0x00, 0x00 }, //4 "AAPL00,PixelFormat" { 0x00, 0x00, 0x00, 0x00 }, //5 "AAPL00,T1" { 0x14, 0x00, 0x00, 0x00 }, //6 "AAPL00,T2" { 0xfa, 0x00, 0x00, 0x00 }, //7 "AAPL00,T3" { 0x2c, 0x01, 0x00, 0x00 }, //8 "AAPL00,T4" { 0x00, 0x00, 0x00, 0x00 }, //9 "AAPL00,T5" { 0x14, 0x00, 0x00, 0x00 }, //10 "AAPL00,T6" { 0xf4, 0x01, 0x00, 0x00 }, //11 "AAPL00,T7" { 0x04, 0x00, 0x00, 0x00 }, //12 "graphic-options" }; UINT8 ivy_bridge_ig_vals[12][4] = { { 0x05, 0x00, 0x62, 0x01 }, //0 Intel HD Graphics 4000 - Mobile: 0, PipeCount: 2, PortCount: 3, STOLEN: 32MB, FBMEM: 16MB, VRAM: 1536MB, Connector: DP3, BL: 0x0710 { 0x06, 0x00, 0x62, 0x01 }, //1 *iMac13,1 - Intel HD Graphics 4000 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 256MB, Connector:, BL: 0x0710 { 0x07, 0x00, 0x62, 0x01 }, //2 *iMac13,2 - Intel HD Graphics 4000 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 256MB, Connector:, BL: 0x0710 { 0x00, 0x00, 0x66, 0x01 }, //3 Intel HD Graphics 4000 - Mobile: 0, PipeCount: 3, PortCount: 4, STOLEN: 96MB, FBMEM: 24MB, VRAM: 1024MB, Connector: LVDS1/DP3, BL: 0x0710 { 0x01, 0x00, 0x66, 0x01 }, //4 *MacBookPro10,2 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 3, PortCount: 4, STOLEN: 96MB, FBMEM: 24MB, VRAM: 1536MB, Connector: LVDS1/HDMI1/DP2, BL: 0x0710 { 0x02, 0x00, 0x66, 0x01 }, //5 *MacBookPro10,1 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 3, PortCount: 1, STOLEN: 64MB, FBMEM: 24MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x0710 { 0x03, 0x00, 0x66, 0x01 }, //6 *MacBookPro9,2 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 2, PortCount: 4, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1536MB, Connector: LVDS1/DP3, BL: 0x0710 { 0x04, 0x00, 0x66, 0x01 }, //7 *MacBookPro9,1 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 3, PortCount: 1, STOLEN: 32MB, FBMEM: 16MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x0710 { 0x08, 0x00, 0x66, 0x01 }, //8 *MacBookAir5,1 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0710 { 0x09, 0x00, 0x66, 0x01 }, //9 *MacBookAir5,2 - Intel HD Graphics 4000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0710 { 0x0a, 0x00, 0x66, 0x01 }, //10 *Macmini6,1 - Intel HD Graphics 4000 - Mobile: 0, PipeCount: 2, PortCount: 3, STOLEN: 32MB, FBMEM: 16MB, VRAM: 1536MB, Connector: DP2/HDMI1, BL: 0x0710 { 0x0b, 0x00, 0x66, 0x01 }, //11 *Macmini6,2 - Intel HD Graphics 4000 - Mobile: 0, PipeCount: 2, PortCount: 3, STOLEN: 32MB, FBMEM: 16MB, VRAM: 1536MB, Connector: DP2/HDMI1, BL: 0x0710 }; UINT8 ivy_bridge_hd_vals[1][4] = { { 0x0c, 0x00, 0x00, 0x00 }, //0 "graphics-options" }; UINT8 haswell_ig_vals[24][4] = { { 0x00, 0x00, 0x06, 0x04 }, //0 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x04, 0x00, 0x12, 0x04 }, //1 Intel HD Graphics 4600 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 32MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x0b, 0x00, 0x12, 0x04 }, //2 *iMac15,1 - Intel HD Graphics 4600 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 32MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x00, 0x00, 0x16, 0x04 }, //3 Intel HD Graphics 4600 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x00, 0x00, 0x26, 0x04 }, //4 Intel HD Graphics 5000 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x00, 0x00, 0x16, 0x0a }, //5 Intel HD Graphics 4400 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x0AD9 { 0x0c, 0x00, 0x16, 0x0a }, //6 Intel HD Graphics 4400 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 1388 { 0x00, 0x00, 0x26, 0x0a }, //7 Intel HD Graphics 5000 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x0AD9 { 0x05, 0x00, 0x26, 0x0a }, //8 Intel HD Graphics 5000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 32MB, FBMEM: 19MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0AD9 { 0x06, 0x00, 0x26, 0x0a }, //9 *MacBookAir6,1/MacBookAir6,2/Macmini7,1 - Intel HD Graphics 5000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 32MB, FBMEM: 19MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0AD9 { 0x0a, 0x00, 0x26, 0x0a }, //10 Intel HD Graphics 5000 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 32MB, FBMEM: 19MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x1499 { 0x0d, 0x00, 0x26, 0x0a }, //11 Intel HD Graphics 5000 - Mobile: 0, PipeCount: 3, PortCount: 2, STOLEN: 96MB, FBMEM: 34MB, VRAM: 1536MB, Connector: DP2, BL: 0x1499 { 0x08, 0x00, 0x2e, 0x0a }, //12 *MacBookPro11,1 - Intel Iris Graphics 5100 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x0a, 0x00, 0x2e, 0x0a }, //13 Intel Iris Graphics 5100 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 32MB, FBMEM: 19MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x1499 { 0x0d, 0x00, 0x2e, 0x0a }, //14 Intel Iris Graphics 5100 - Mobile: 0, PipeCount: 3, PortCount: 2, STOLEN: 96MB, FBMEM: 34MB, VRAM: 1536MB, Connector: DP2, BL: 0x1499 { 0x00, 0x00, 0x06, 0x0c }, //15 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x00, 0x00, 0x16, 0x0c }, //16 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x00, 0x00, 0x26, 0x0c }, //17 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x03, 0x00, 0x22, 0x0d }, //18 *iMac14,1/iMac14,4 - Intel Iris Pro Graphics 5200 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 32MB, FBMEM: 19MB, VRAM: 1536MB, Connector: DP3, BL: 0x1499 { 0x00, 0x00, 0x26, 0x0d }, //19 Intel Iris Pro Graphics 5200 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 64MB, FBMEM: 16MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x07, 0x00, 0x26, 0x0d }, //20 *MacBookPro11,2/MacBookPro11,3 - Intel Iris Pro Graphics 5200 - Mobile: 1, PipeCount: 3, PortCount: 4, STOLEN: 64MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1/DP2/HDMI1, BL: 0x07A1 { 0x09, 0x00, 0x26, 0x0d }, //21 Intel Iris Pro Graphics 5200 - Mobile: 1, PipeCount: 3, PortCount: 1, STOLEN: 64MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x07A1 { 0x0e, 0x00, 0x26, 0x0d }, //22 Intel Iris Pro Graphics 5200 - Mobile: 1, PipeCount: 3, PortCount: 4, STOLEN: 96MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1/DP2/HDMI1, BL: 0x07A1 { 0x0f, 0x00, 0x26, 0x0d }, //23 Intel Iris Pro Graphics 5200 - Mobile: 1, PipeCount: 3, PortCount: 1, STOLEN: 96MB, FBMEM: 34MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x07A1 }; UINT8 haswell_hd_vals[1][4] = { { 0x0c, 0x00, 0x00, 0x00 }, //0 "graphics-options" }; UINT8 broadwell_ig_vals[22][4] = { { 0x00, 0x00, 0x06, 0x16 }, //0 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x02, 0x00, 0x06, 0x16 }, //1 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x0e, 0x16 }, //2 Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x01, 0x00, 0x0e, 0x16 }, //3 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x03, 0x00, 0x12, 0x16 }, //4 Intel HD Graphics 5600 - Mobile: 1, PipeCount: 3, PortCount: 4, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2/HDMI1, BL: 0x07A1 { 0x00, 0x00, 0x16, 0x16 }, //5 Intel HD Graphics 5500 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x02, 0x00, 0x16, 0x16 }, //6 Intel HD Graphics 5500 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x1e, 0x16 }, //7 Intel HD Graphics 5300 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x01, 0x00, 0x1e, 0x16 }, //8 *MacBook8,1 - Intel HD Graphics 5300 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x22, 0x16 }, //9 Intel Iris Pro Graphics 6200 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x02, 0x00, 0x22, 0x16 }, //10 Intel Iris Pro Graphics 6200 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x07, 0x00, 0x22, 0x16 }, //11 *iMac16,2 - Intel Iris Pro Graphics 6200 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 38MB, VRAM: 1536MB, Connector: DP3, BL: 0x1499 { 0x00, 0x00, 0x26, 0x16 }, //12 Intel HD Graphics 6000 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x02, 0x00, 0x26, 0x16 }, //13 Intel HD Graphics 6000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x04, 0x00, 0x26, 0x16 }, //14 Intel HD Graphics 6000 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x1499 { 0x05, 0x00, 0x26, 0x16 }, //15 Intel HD Graphics 6000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0AD9 { 0x06, 0x00, 0x26, 0x16 }, //16 *iMac16,1/MacBookAir7,1/MacBookAir7,2 - Intel HD Graphics 6000 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x0AD9 { 0x08, 0x00, 0x26, 0x16 }, //17 Intel HD Graphics 6000 - Mobile: 0, PipeCount: 2, PortCount: 2, STOLEN: 34MB, FBMEM: 34MB, VRAM: 1536MB, Connector: DP2, BL: 0x1499 { 0x00, 0x00, 0x2b, 0x16 }, //18 Intel Iris Graphics 6100 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 16MB, FBMEM: 15MB, VRAM: 1024MB, Connector: LVDS1/DDVI1/HDMI1, BL: 0x1499 { 0x02, 0x00, 0x2b, 0x16 }, //19 *MacBookPro12,1 - Intel Iris Graphics 6100 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x04, 0x00, 0x2b, 0x16 }, //20 Intel Iris Graphics 6100 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x1499 { 0x08, 0x00, 0x2b, 0x16 }, //21 Intel Iris Graphics 6100 - Mobile: 0, PipeCount: 2, PortCount: 2, STOLEN: 34MB, FBMEM: 34MB, VRAM: 1536MB, Connector: DP2, BL: 0x1499 }; UINT8 broadwell_hd_vals[2][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,ig-tcon-scaler" { 0x0c, 0x00, 0x00, 0x00 }, //1 "graphics-options" }; UINT8 skylake_ig_vals[19][4] = { { 0x01, 0x00, 0x02, 0x19 }, //0 Intel HD Graphics 510 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x00, 0x00, 0x12, 0x19 }, //1 Intel HD Graphics 530 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: DUMMY1/DP2, BL: 0x056C { 0x01, 0x00, 0x12, 0x19 }, //2 *iMac17,1 - Intel HD Graphics 530 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x00, 0x00, 0x16, 0x19 }, //3 Intel HD Graphics 520 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x02, 0x00, 0x16, 0x19 }, //4 Intel HD Graphics 520 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x01, 0x00, 0x17, 0x19 }, //5 Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x00, 0x00, 0x1b, 0x19 }, //6 *MacBookPro13,3 - Intel HD Graphics 530 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x06, 0x00, 0x1b, 0x19 }, //7 Intel HD Graphics 530 - Mobile: 1, PipeCount: 1, PortCount: 1, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x056C { 0x00, 0x00, 0x1e, 0x19 }, //8 Intel HD Graphics 515 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x03, 0x00, 0x1e, 0x19 }, //9 *MacBook9,1 - Intel HD Graphics 515 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 40MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x26, 0x19 }, //10 Intel Iris Graphics 540 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x02, 0x00, 0x26, 0x19 }, //11 *MacBookPro13,1 - Intel Iris Graphics 540 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x04, 0x00, 0x26, 0x19 }, //12 Intel Iris Graphics 540 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x07, 0x00, 0x26, 0x19 }, //13 Intel Iris Graphics 540 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x27, 0x19 }, //14 Intel Iris Graphics 550 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x04, 0x00, 0x27, 0x19 }, //15 *MacBookPro13,2 - Intel Iris Graphics 550 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x01, 0x00, 0x32, 0x19 }, //16 Intel Iris Pro Graphics 580 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: { 0x00, 0x00, 0x3b, 0x19 }, //17 Intel Iris Pro Graphics 580 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x05, 0x00, 0x3b, 0x19 }, //18 Intel Iris Pro Graphics 580 - Mobile: 1, PipeCount: 3, PortCount: 4, STOLEN: 34MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP3, BL: 0x056C }; UINT8 skylake_hd_vals[12][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,Gfx324" - MacBookPro { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,GfxYTile" { 0xfa, 0x00, 0x00, 0x00 }, //2 "AAPL00,PanelCycleDelay" { 0x11, 0x00, 0x00, 0x08 }, //3 "AAPL00,PanelPowerDown" - MacBook { 0x11, 0x00, 0x00, 0x00 }, //4 "AAPL00,PanelPowerOff" - MacBook { 0xe2, 0x00, 0x00, 0x08 }, //5 "AAPL00,PanelPowerOn" - MacBook { 0x48, 0x00, 0x00, 0x00 }, //6 "AAPL00,PanelPowerUp" - MacBook { 0x3c, 0x00, 0x00, 0x08 }, //7 "AAPL00,PanelPowerDown" - MacBookPro { 0x11, 0x00, 0x00, 0x00 }, //8 "AAPL00,PanelPowerOff" - MacBookPro { 0x19, 0x01, 0x00, 0x08 }, //9 "AAPL00,PanelPowerOn" - MacBookPro { 0x30, 0x00, 0x00, 0x00 }, //10 "AAPL00,PanelPowerUp" - MacBookPro { 0x0c, 0x00, 0x00, 0x00 }, //11 "graphic-options" }; UINT8 kabylake_ig_vals[19][4] = { { 0x00, 0x00, 0x12, 0x59 }, //0 Intel HD Graphics 630 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: DP3, BL: 0x056C { 0x03, 0x00, 0x12, 0x59 }, //1 *iMac18,2/iMac18,3 - Intel HD Graphics 630 - Mobile: 1, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: 0x056C { 0x00, 0x00, 0x16, 0x59 }, //2 Intel HD Graphics 620 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x09, 0x00, 0x16, 0x59 }, //3 Intel HD Graphics 620 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x02, 0x00, 0x18, 0x59 }, //4 Mobile: 1, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector:, BL: 0x056C { 0x00, 0x00, 0x1b, 0x59 }, //5 *MacBookPro14,3 - Intel HD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x06, 0x00, 0x1b, 0x59 }, //6 Intel HD Graphics 630 - Mobile: 1, PipeCount: 1, PortCount: 1, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1, BL: 0x056C { 0x05, 0x00, 0x1c, 0x59 }, //7 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x1e, 0x59 }, //8 Intel HD Graphics 615 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x01, 0x00, 0x1e, 0x59 }, //9 *MacBook10,1 - Intel HD Graphics 615 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x23, 0x59 }, //10 Intel HD Graphics 635 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x26, 0x59 }, //11 Intel Iris Plus Graphics 640 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x02, 0x00, 0x26, 0x59 }, //12 *MacBookPro14,1/iMac18,1 - Intel Iris Plus Graphics 640 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x07, 0x00, 0x26, 0x59 }, //13 Intel Iris Plus Graphics 640 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 21MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0x27, 0x59 }, //14 Intel Iris Plus Graphics 650 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x04, 0x00, 0x27, 0x59 }, //15 *MacBookPro14,2 - Intel Iris Plus Graphics 650 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x09, 0x00, 0x27, 0x59 }, //16 Intel Iris Plus Graphics 650 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x00, 0x00, 0xC0, 0x87 }, //17 Intel UHD Graphics 617 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C { 0x05, 0x00, 0xC0, 0x87 }, //18 *MacBookAir8,1 - Intel UHD Graphics 617 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0x056C }; UINT8 kabylake_hd_vals[12][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,Gfx324" - MacBookPro { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,GfxYTile" { 0xfa, 0x00, 0x00, 0x00 }, //2 "AAPL00,PanelCycleDelay" { 0x11, 0x00, 0x00, 0x08 }, //3 "AAPL00,PanelPowerDown" - MacBook { 0x11, 0x00, 0x00, 0x00 }, //4 "AAPL00,PanelPowerOff" - MacBook { 0xe2, 0x00, 0x00, 0x08 }, //5 "AAPL00,PanelPowerOn" - MacBook { 0x48, 0x00, 0x00, 0x00 }, //6 "AAPL00,PanelPowerUp" - MacBook { 0x3c, 0x00, 0x00, 0x08 }, //7 "AAPL00,PanelPowerDown" - MacBookPro { 0x11, 0x00, 0x00, 0x00 }, //8 "AAPL00,PanelPowerOff" - MacBookPro { 0x19, 0x01, 0x00, 0x08 }, //9 "AAPL00,PanelPowerOn" - MacBookPro { 0x30, 0x00, 0x00, 0x00 }, //10 "AAPL00,PanelPowerUp" - MacBookPro { 0x0c, 0x00, 0x00, 0x00 }, //11 "graphic-options" }; UINT8 coffeelake_ig_vals[15][4] = { { 0x00, 0x00, 0x00, 0x3E }, // 0 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x03, 0x00, 0x91, 0x3E }, // 1 Intel UHD Graphics 630 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector: DUMMY3, BL: 0xFFFF { 0x00, 0x00, 0x92, 0x3E }, // 2 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x03, 0x00, 0x92, 0x3E }, // 3 Intel UHD Graphics 630 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector: DUMMY3, BL: 0xFFFF { 0x09, 0x00, 0x92, 0x3E }, // 4 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DUMMY2, BL: 0xFFFF { 0x03, 0x00, 0x98, 0x3E }, // 5 *iMac19,1 - Intel UHD Graphics 630 - Mobile: 0, PipeCount: 0, PortCount: 0, STOLEN: 0MB, FBMEM: 0MB, VRAM: 1536MB, Connector: DUMMY3, BL: 0xFFFF { 0x00, 0x00, 0x9B, 0x3E }, // 6 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x06, 0x00, 0x9B, 0x3E }, // 7 *MacBookPro15,1 - Intel UHD Graphics 630 - Mobile: 1, PipeCount: 1, PortCount: 1, STOLEN: 38MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DUMMY2, BL: 0xFFFF { 0x07, 0x00, 0x9B, 0x3E }, // 8 *Macmini8,1/iMac19,2 - Intel UHD Graphics 630 - Mobile: 0, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: DP3, BL: 0xFFFF { 0x09, 0x00, 0x9B, 0x3E }, // 9 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0xA5, 0x3E }, //10 Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x04, 0x00, 0xA5, 0x3E }, //11 *MacBookPro15,2 - Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x05, 0x00, 0xA5, 0x3E }, //12 Intel UHD Graphics 630 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0xA5, 0x3E }, //13 Intel Iris Plus Graphics 655 - Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x05, 0x00, 0xA6, 0x3E }, //14 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF }; UINT8 coffeelake_hd_vals[8][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,Gfx324" - MacBookPro { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,GfxYTile" { 0xfa, 0x00, 0x00, 0x00 }, //2 "AAPL00,PanelCycleDelay" { 0x3c, 0x00, 0x00, 0x08 }, //3 "AAPL00,PanelPowerDown" - MacBookPro { 0x11, 0x00, 0x00, 0x00 }, //4 "AAPL00,PanelPowerOff" - MacBookPro { 0x19, 0x01, 0x00, 0x08 }, //5 "AAPL00,PanelPowerOn" - MacBookPro { 0x30, 0x00, 0x00, 0x00 }, //6 "AAPL00,PanelPowerUp" - MacBookPro { 0x0c, 0x00, 0x00, 0x00 }, //7 "graphic-options" }; UINT8 cannonlake_ig_vals[14][4] = { { 0x00, 0x00, 0x01, 0x0A }, //0 Mobile: 1, PipeCount: 1, PortCount: 1, STOLEN: 34MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1, BL: 0xFFFF { 0x00, 0x00, 0x40, 0x5A }, //1 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0x40, 0x5A }, //2 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0x41, 0x5A }, //3 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0x41, 0x5A }, //4 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0x49, 0x5A }, //5 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0x49, 0x5A }, //6 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0x50, 0x5A }, //7 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0x50, 0x5A }, //8 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0x51, 0x5A }, //9 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x09, 0x00, 0x51, 0x5A }, //10 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF { 0x00, 0x00, 0x52, 0x5A }, //11 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP1/HDMI1, BL: 0xFFFF { 0x00, 0x00, 0x59, 0x5A }, //12 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP1/HDMI1, BL: 0xFFFF { 0x09, 0x00, 0x59, 0x5A }, //13 Mobile: 1, PipeCount: 3, PortCount: 3, STOLEN: 57MB, FBMEM: 0MB, VRAM: 1536MB, Connector: LVDS1/DP2, BL: 0xFFFF }; UINT8 cannonlake_hd_vals[8][4] = { { 0x01, 0x00, 0x00, 0x00 }, //0 "AAPL,Gfx324" - MacBookPro { 0x01, 0x00, 0x00, 0x00 }, //1 "AAPL,GfxYTile" { 0xfa, 0x00, 0x00, 0x00 }, //2 "AAPL00,PanelCycleDelay" { 0x3c, 0x00, 0x00, 0x08 }, //3 "AAPL00,PanelPowerDown" - MacBookPro { 0x11, 0x00, 0x00, 0x00 }, //4 "AAPL00,PanelPowerOff" - MacBookPro { 0x19, 0x01, 0x00, 0x08 }, //5 "AAPL00,PanelPowerOn" - MacBookPro { 0x30, 0x00, 0x00, 0x00 }, //6 "AAPL00,PanelPowerUp" - MacBookPro { 0x0c, 0x00, 0x00, 0x00 }, //7 "graphic-options" }; // The following values came from MacBookPro6,1 UINT8 mbp_HD_os_info[20] = { 0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF }; // The following values came from MacBookAir4,1 UINT8 mba_HD3000_tbl_info[18] = { 0x30, 0x44, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01 }; // The following values came from MacBookAir4,1 UINT8 mba_HD3000_os_info[20] = { 0x30, 0x49, 0x01, 0x12, 0x12, 0x12, 0x08, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00 }; // The following values came from MacBookPro8,1 UINT8 mbp_HD3000_tbl_info[18] = { 0x30, 0x44, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; // The following values came from MacBookPro8,1 UINT8 mbp_HD3000_os_info[20] = { 0x30, 0x49, 0x01, 0x11, 0x11, 0x11, 0x08, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00 }; // The following values came from Macmini5,1 UINT8 mn_HD3000_tbl_info[18] = { 0x30, 0x44, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 }; // The following values came from Macmini5,1 UINT8 mn_HD3000_os_info[20] = { 0x30, 0x49, 0x01, 0x50, 0x50, 0x50, 0x08, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00 }; static struct gma_gpu_t KnownGPUS[] = { { 0xFFFF, "Intel Unsupported" }, // common name for unsuported devices #if WILL_WORK //============== PowerVR =================== //--------Canmore/Sodaville/Groveland------- { 0x2E5B, "Intel 500" }, // //----------------Poulsbo------------------- { 0x8108, "Intel 500" }, // Menlow { 0x8109, "Intel 500" }, // Menlow //----------------Lincroft------------------ { 0x4102, "Intel 600" }, // Moorestown //----------------Cedarview----------------- { 0x0BE0, "Intel GMA 3600" }, // Cedar Trail { 0x0BE1, "Intel GMA 3600" }, // Cedar Trail { 0x0BE2, "Intel GMA 3650" }, // Cedar Trail { 0x0BE3, "Intel GMA 3650" }, // Cedar Trail //----------------Cloverview---------------- { 0x08C7, "Intel GMA" }, // Clover Trail { 0x08C8, "Intel GMA" }, // Clover Trail { 0x08C9, "Intel GMA" }, // Clover Trail { 0x08CA, "Intel GMA" }, // Clover Trail { 0x08CB, "Intel GMA" }, // Clover Trail { 0x08CC, "Intel GMA" }, // Clover Trail { 0x08CD, "Intel GMA" }, // Clover Trail { 0x08CE, "Intel GMA" }, // Clover Trail { 0x08CF, "Intel GMA" }, // Clover Trail //============== 1st generation ============ //----------------Auburn-------------------- { 0x7800, "Intel 740" }, // Desktop - Intel 740 GMCH Express Chipset Family //----------------Portola------------------- { 0x1240, "Intel 752" }, // Desktop - Intel 752 GMCH Express Chipset Family //----------------Whitney------------------- { 0x7121, "Intel 3D graphics 810" }, // Desktop - Intel 810 GMCH Express Chipset Family { 0x7123, "Intel 3D graphics 810" }, // Desktop - Intel 810-DC100 GMCH Express Chipset Family { 0x7125, "Intel 3D graphics 810" }, // Desktop - Intel 810E GMCH Express Chipset Family //----------------Solano-------------------- { 0x1132, "Intel 3D graphics 815" }, // Desktop - Intel 815 GMCH Express Chipset Family //============== 2nd generation ============ //----------------Almador------------------- { 0x3577, "Intel Extreme Graphics 830" }, // Mobile - Intel 830M GMCH Express Chipset Family { 0x357B, "Intel Extreme Graphics 835" }, // Desktop - Intel 835G GMCH Express Chipset Family //----------------Brookdale----------------- { 0x2562, "Intel Extreme Graphics 845" }, // Desktop - Intel 845G GMCH Express Chipset Family //----------------Montara------------------- { 0x358E, "Intel Extreme Graphics 2 854" }, // Mobile - Intel 852GM/855GM GMCH Express Chipset Family { 0x3582, "Intel Extreme Graphics 2 855" }, // Mobile - Intel 852GM/855GM GMCH Express Chipset Family //----------------Springdale---------------- { 0x2572, "Intel Extreme Graphics 2 865" }, // Desktop - Intel 865G Express Chipset Family //============== 3rd generation ============ //----------------Grantsdale---------------- { 0x2582, "Intel GMA 900" }, // Desktop - Intel 915G Express Chipset Family { 0x258A, "Intel GMA 900" }, // Desktop - Intel 915GM Express Chipset Family { 0x2782, "Intel GMA 900" }, // Desktop - Intel 915GV Express Chipset Family //----------------Alviso-------------------- { 0x2592, "Intel GMA 900" }, // Mobile - Intel 82915GM/GMS, 910GML Express Chipset Family { 0x2792, "Intel GMA 900" }, // Mobile - Intel 82915GM/GMS, 910GML Express Chipset Family #endif //----------------Lakeport------------------ { 0x2772, "Intel GMA 950" }, // Desktop - Intel 82945G Express Chipset Family { 0x2776, "Intel GMA 950" }, // Desktop - Intel 82945G Express Chipset Family //----------------Calistoga----------------- { 0x27A2, "Intel GMA 950" }, // Mobile - Intel 945GM Express Chipset Family - MacBook1,1/MacBook2,1 { 0x27A6, "Intel GMA 950" }, // Mobile - Intel 945GM Express Chipset Family { 0x27AE, "Intel GMA 950" }, // Mobile - Intel 945GM Express Chipset Family #if WILL_WORK //----------------Bearlake------------------ { 0x29B2, "Intel GMA 3100" }, // Desktop - Intel Q35 Express Chipset Family { 0x29B3, "Intel GMA 3100" }, // Desktop - Intel Q35 Express Chipset Family { 0x29C2, "Intel GMA 3100" }, // Desktop - Intel G33/G31 Express Chipset Family { 0x29C3, "Intel GMA 3100" }, // Desktop - Intel G33/G31 Express Chipset Family { 0x29D2, "Intel GMA 3100" }, // Desktop - Intel Q33 Express Chipset Family { 0x29D3, "Intel GMA 3100" }, // Desktop - Intel Q33 Express Chipset Family //----------------Pineview------------------ { 0xA001, "Intel GMA 3150" }, // Nettop - Intel NetTop Atom D410 { 0xA002, "Intel GMA 3150" }, // Nettop - Intel NetTop Atom D510 { 0xA011, "Intel GMA 3150" }, // Netbook - Intel NetBook Atom N4x0 { 0xA012, "Intel GMA 3150" }, // Netbook - Intel NetBook Atom N4x0 //============== 4th generation ============ //----------------Lakeport------------------ { 0x2972, "Intel GMA 3000" }, // Desktop - Intel 946GZ Express Chipset Family { 0x2973, "Intel GMA 3000" }, // Desktop - Intel 946GZ Express Chipset Family //----------------Broadwater---------------- { 0x2992, "Intel GMA 3000" }, // Desktop - Intel Q965/Q963 Express Chipset Family { 0x2993, "Intel GMA 3000" }, // Desktop - Intel Q965/Q963 Express Chipset Family { 0x29A2, "Intel GMA X3000" }, // Desktop - Intel G965 Express Chipset Family { 0x29A3, "Intel GMA X3000" }, // Desktop - Intel G965 Express Chipset Family #endif //----------------Crestline----------------- { 0x2A02, "Intel GMA X3100" }, // Mobile - Intel 965 Express Chipset Family - MacBook3,1/MacBook4,1/MacbookAir1,1 { 0x2A03, "Intel GMA X3100" }, // Mobile - Intel 965 Express Chipset Family { 0x2A12, "Intel GMA X3100" }, // Mobile - Intel 965 Express Chipset Family { 0x2A13, "Intel GMA X3100" }, // Mobile - Intel 965 Express Chipset Family #if WILL_WORK //----------------Bearlake------------------ { 0x2982, "Intel GMA X3500" }, // Desktop - Intel G35 Express Chipset Family { 0x2983, "Intel GMA X3500" }, // Desktop - Intel G35 Express Chipset Family //----------------Eaglelake----------------- { 0x2E02, "Intel GMA 4500" }, // Desktop - Intel 4 Series Express Chipset Family { 0x2E03, "Intel GMA 4500" }, // Desktop - Intel 4 Series Express Chipset Family { 0x2E12, "Intel GMA 4500" }, // Desktop - Intel G45/G43 Express Chipset Family { 0x2E13, "Intel GMA 4500" }, // Desktop - Intel G45/G43 Express Chipset Family { 0x2E42, "Intel GMA 4500" }, // Desktop - Intel B43 Express Chipset Family { 0x2E43, "Intel GMA 4500" }, // Desktop - Intel B43 Express Chipset Family { 0x2E92, "Intel GMA 4500" }, // Desktop - Intel B43 Express Chipset Family { 0x2E93, "Intel GMA 4500" }, // Desktop - Intel B43 Express Chipset Family { 0x2E32, "Intel GMA X4500" }, // Desktop - Intel G45/G43 Express Chipset Family { 0x2E33, "Intel GMA X4500" }, // Desktop - Intel G45/G43 Express Chipset Family { 0x2E22, "Intel GMA X4500" }, // Mobile - Intel G45/G43 Express Chipset Family { 0x2E23, "Intel GMA X4500HD" }, // Mobile - Intel G45/G43 Express Chipset Family //----------------Cantiga------------------- { 0x2A42, "Intel GMA X4500MHD" }, // Mobile - Intel 4 Series Express Chipset Family { 0x2A43, "Intel GMA X4500MHD" }, // Mobile - Intel 4 Series Express Chipset Family #endif //============== 5th generation ============ //----------------Ironlake------------------ { 0x0042, "Intel HD Graphics" }, // Desktop - Clarkdale { 0x0046, "Intel HD Graphics" }, // Mobile - Arrandale - MacBookPro6,x //============== 6th generation ============ //----------------Sandy Bridge-------------- //GT1 { 0x0102, "Intel HD Graphics 2000" }, // Desktop - iMac12,x { 0x0106, "Intel HD Graphics 2000" }, // Mobile { 0x010A, "Intel HD Graphics P3000" }, // Server //GT2 { 0x0112, "Intel HD Graphics 3000" }, // Desktop { 0x0116, "Intel HD Graphics 3000" }, // Mobile - MacBookAir4,x/MacBookPro8,2/MacBookPro8,3 { 0x0122, "Intel HD Graphics 3000" }, // Desktop { 0x0126, "Intel HD Graphics 3000" }, // Mobile - MacBookPro8,1/Macmini5,x //============== 7th generation ============ //----------------Ivy Bridge---------------- //GT1 { 0x0152, "Intel HD Graphics 2500" }, // Desktop - iMac13,x { 0x0156, "Intel HD Graphics 2500" }, // Mobile { 0x015A, "Intel HD Graphics 2500" }, // Server { 0x015E, "Intel Ivy Bridge GT1" }, // Reserved //GT2 { 0x0162, "Intel HD Graphics 4000" }, // Desktop { 0x0166, "Intel HD Graphics 4000" }, // Mobile - MacBookPro9,x/MacBookPro10,x/MacBookAir5,x/Macmini6,x { 0x016A, "Intel HD Graphics P4000" }, // Server //----------------Haswell------------------- //GT1 { 0x0402, "Intel Haswell GT1" }, // Desktop { 0x0406, "Intel Haswell GT1" }, // Mobile { 0x040A, "Intel Haswell GT1" }, // Server { 0x040B, "Intel Haswell GT1" }, // { 0x040E, "Intel Haswell GT1" }, // //GT2 { 0x0412, "Intel HD Graphics 4600" }, // Desktop - iMac15,1 { 0x0416, "Intel HD Graphics 4600" }, // Mobile { 0x041A, "Intel HD Graphics P4600" }, // Server { 0x041B, "Intel Haswell GT2" }, // { 0x041E, "Intel HD Graphics 4400" }, // //GT3 { 0x0422, "Intel HD Graphics 5000" }, // Desktop { 0x0426, "Intel HD Graphics 5000" }, // Mobile { 0x042A, "Intel HD Graphics 5000" }, // Server { 0x042B, "Intel Haswell GT3" }, // { 0x042E, "Intel Haswell GT3" }, // //GT1 { 0x0A02, "Intel Haswell GT1" }, // Desktop ULT { 0x0A06, "Intel HD Graphics" }, // Mobile ULT { 0x0A0A, "Intel Haswell GT1" }, // Server ULT { 0x0A0B, "Intel Haswell GT1" }, // ULT { 0x0A0E, "Intel Haswell GT1" }, // ULT //GT2 { 0x0A12, "Intel Haswell GT2" }, // Desktop ULT { 0x0A16, "Intel HD Graphics 4400" }, // Mobile ULT { 0x0A1A, "Intel Haswell GT2" }, // Server ULT { 0x0A1B, "Intel Haswell GT2" }, // ULT { 0x0A1E, "Intel HD Graphics 4200" }, // ULT //GT3 { 0x0A22, "Intel Iris Graphics 5100" }, // Desktop ULT { 0x0A26, "Intel HD Graphics 5000" }, // Mobile ULT - MacBookAir6,x/Macmini7,1 { 0x0A2A, "Intel Iris Graphics 5100" }, // Server ULT { 0x0A2B, "Intel Iris Graphics 5100" }, // ULT { 0x0A2E, "Intel Iris Graphics 5100" }, // ULT - MacBookPro11,1 //GT1 { 0x0C02, "Intel Haswell GT1" }, // Desktop SDV { 0x0C06, "Intel Haswell GT1" }, // Mobile SDV { 0x0C0A, "Intel Haswell GT1" }, // Server SDV { 0x0C0B, "Intel Haswell GT1" }, // SDV { 0x0C0E, "Intel Haswell GT1" }, // SDV //GT2 { 0x0C12, "Intel Haswell GT2" }, // Desktop SDV { 0x0C16, "Intel Haswell GT2" }, // Mobile SDV { 0x0C1A, "Intel Haswell GT2" }, // Server SDV { 0x0C1B, "Intel Haswell GT2" }, // SDV { 0x0C1E, "Intel Haswell GT2" }, // SDV //GT3 { 0x0C22, "Intel Haswell GT3" }, // Desktop SDV { 0x0C26, "Intel Haswell GT3" }, // Mobile SDV { 0x0C2A, "Intel Haswell GT3" }, // Server SDV { 0x0C2B, "Intel Haswell GT3" }, // SDV { 0x0C2E, "Intel Haswell GT3" }, // SDV //GT1 { 0x0D02, "Intel Haswell GT1" }, // Desktop CRW { 0x0D06, "Intel Haswell GT1" }, // Mobile CRW { 0x0D0A, "Intel Haswell GT1" }, // Server CRW { 0x0D0B, "Intel Haswell GT1" }, // CRW { 0x0D0E, "Intel Haswell GT1" }, // CRW //GT2 { 0x0D12, "Intel HD Graphics 4600" }, // Desktop CRW { 0x0D16, "Intel HD Graphics 4600" }, // Mobile CRW { 0x0D1A, "Intel Haswell GT2" }, // Server CRW { 0x0D1B, "Intel Haswell GT2" }, // CRW { 0x0D1E, "Intel Haswell GT2" }, // CRW //GT3 { 0x0D22, "Intel Iris Pro Graphics 5200" }, // Desktop CRW - iMac14,1/iMac14,4 { 0x0D26, "Intel Iris Pro Graphics 5200" }, // Mobile CRW - MacBookPro11,2/MacBookPro11,3 { 0x0D2A, "Intel Iris Pro Graphics 5200" }, // Server CRW { 0x0D2B, "Intel Iris Pro Graphics 5200" }, // CRW { 0x0D2E, "Intel Iris Pro Graphics 5200" }, // CRW //----------------ValleyView---------------- { 0x0F30, "Intel HD Graphics" }, // Bay Trail { 0x0F31, "Intel HD Graphics" }, // Bay Trail { 0x0F32, "Intel HD Graphics" }, // Bay Trail { 0x0F33, "Intel HD Graphics" }, // Bay Trail { 0x0155, "Intel HD Graphics" }, // Bay Trail { 0x0157, "Intel HD Graphics" }, // Bay Trail //============== 8th generation ============ //----------------Broadwell----------------- //GT1 { 0x1602, "Intel Broadwell GT1" }, // Desktop { 0x1606, "Intel Broadwell GT1" }, // Mobile { 0x160A, "Intel Broadwell GT1" }, // { 0x160B, "Intel Broadwell GT1" }, // { 0x160D, "Intel Broadwell GT1" }, // { 0x160E, "Intel Broadwell GT1" }, // //GT2 { 0x1612, "Intel HD Graphics 5600" }, // Mobile { 0x1616, "Intel HD Graphics 5500" }, // Mobile { 0x161A, "Intel Broadwell GT2" }, // { 0x161B, "Intel Broadwell GT2" }, // { 0x161D, "Intel Broadwell GT2" }, // { 0x161E, "Intel HD Graphics 5300" }, // Ultramobile - MacBook8,1 //GT3 { 0x1626, "Intel HD Graphics 6000" }, // Mobile - iMac16,1/MacBookAir7,x { 0x162B, "Intel Iris Graphics 6100" }, // Mobile - MacBookPro12,1 { 0x162D, "Intel Iris Pro Graphics P6300" }, // Workstation, Mobile Workstation //GT3e { 0x1622, "Intel Iris Pro Graphics 6200" }, // Desktop, Mobile - iMac16,2 { 0x162A, "Intel Iris Pro Graphics P6300" }, // Workstation //RSVD { 0x162E, "Intel Broadwell RSVD" }, // Reserved { 0x1632, "Intel Broadwell RSVD" }, // Reserved { 0x1636, "Intel Broadwell RSVD" }, // Reserved { 0x163A, "Intel Broadwell RSVD" }, // Reserved { 0x163B, "Intel Broadwell RSVD" }, // Reserved { 0x163D, "Intel Broadwell RSVD" }, // Reserved { 0x163E, "Intel Broadwell RSVD" }, // Reserved //------------Cherryview/Braswell----------- { 0x22B0, "Intel HD Graphics 400" }, // Cherry Trail - Atom x5 series - Z83X0/Z8550 { 0x22B1, "Intel HD Graphics 405" }, // Cherry Trail - Atom x7 series - Z8750 { 0x22B2, "Intel HD Graphics 400" }, // Braswell - Cerelon QC/DC series - X3X60 { 0x22B3, "Intel HD Graphics 405" }, // Braswell - Pentium QC series - X3710 //============== 9th generation ============ //----------------Skylake------------------- //GT1 { 0x1902, "Intel HD Graphics 510" }, // Desktop { 0x1906, "Intel HD Graphics 510" }, // Mobile { 0x190A, "Intel Skylake GT1" }, // { 0x190B, "Intel HD Graphics 510" }, // { 0x190E, "Intel Skylake GT1" }, // //GT2 { 0x1912, "Intel HD Graphics 530" }, // Desktop - iMac17,1 { 0x1916, "Intel HD Graphics 520" }, // Mobile { 0x191A, "Intel Skylake GT2" }, // { 0x191B, "Intel HD Graphics 530" }, // Mobile - MacBookPro13,3 { 0x191D, "Intel HD Graphics P530" }, // Workstation, Mobile Workstation { 0x191E, "Intel HD Graphics 515" }, // Mobile - MacBook9,1 { 0x1921, "Intel HD Graphics 520" }, // //GT2f { 0x1913, "Intel Skylake GT2f" }, // { 0x1915, "Intel Skylake GT2f" }, // { 0x1917, "Intel Skylake GT2f" }, // //GT3 { 0x1923, "Intel HD Graphics 535" }, // //GT3e { 0x1926, "Intel Iris Graphics 540" }, // Mobile - MacBookPro13,1 { 0x1927, "Intel Iris Graphics 550" }, // Mobile - MacBookPro13,2 { 0x192B, "Intel Iris Graphics 555" }, // { 0x192D, "Intel Iris Graphics P555" }, // Workstation //GT4 { 0x192A, "Intel Skylake GT4" }, // //GT4e { 0x1932, "Intel Iris Pro Graphics 580" }, // Desktop { 0x193A, "Intel Iris Pro Graphics P580" }, // Server { 0x193B, "Intel Iris Pro Graphics 580" }, // Mobile { 0x193D, "Intel Iris Pro Graphics P580" }, // Workstation, Mobile Workstation //----------------Goldmont------------------ { 0x0A84, "Intel HD Graphics" }, // Broxton(cancelled) { 0x1A84, "Intel HD Graphics" }, // Broxton(cancelled) { 0x1A85, "Intel HD Graphics" }, // Broxton(cancelled) { 0x5A84, "Intel HD Graphics 505" }, // Apollo Lake { 0x5A85, "Intel HD Graphics 500" }, // Apollo Lake //----------------Kaby Lake----------------- //GT1 { 0x5902, "Intel HD Graphics 610" }, // Desktop { 0x5906, "Intel HD Graphics 610" }, // Mobile { 0x5908, "Intel Kaby Lake GT1" }, // { 0x590A, "Intel Kaby Lake GT1" }, // { 0x590B, "Intel Kaby Lake GT1" }, // { 0x590E, "Intel Kaby Lake GT1" }, // //GT1.5 { 0x5913, "Intel Kaby Lake GT1.5" }, // { 0x5915, "Intel Kaby Lake GT1.5" }, // //GT2 { 0x5912, "Intel HD Graphics 630" }, // Desktop - iMac18,2/iMac18,3 { 0x5916, "Intel HD Graphics 620" }, // Mobile { 0x591A, "Intel HD Graphics P630" }, // Server { 0x591B, "Intel HD Graphics 630" }, // Mobile - MacBookPro14,3 { 0x591D, "Intel HD Graphics P630" }, // Workstation, Mobile Workstation { 0x591E, "Intel HD Graphics 615" }, // Mobile - MacBook10,1 //GT2F { 0x5921, "Intel Kaby Lake GT2F" }, // //GT3 { 0x5923, "Intel HD Graphics 635" }, // { 0x5926, "Intel Iris Plus Graphics 640" }, // Mobile - MacBookPro14,1/iMac18,1 { 0x5927, "Intel Iris Plus Graphics 650" }, // Mobile - MacBookPro14,2 //GT4 { 0x593B, "Intel Kaby Lake GT4" }, // //-------------Kaby Lake Refresh------------ //GT1.5 { 0x5917, "Intel UHD Graphics 620" }, // Mobile //----------------Amber Lake---------------- //GT2 { 0x591C, "Intel UHD Graphics 615" }, // Kaby Lake { 0x87C0, "Intel UHD Graphics 617" }, // Kaby Lake - Mobile - MacBookAir8,1 { 0x87CA, "Intel UHD Graphics 615" }, // Comet Lake //----------------Coffee Lake--------------- //GT1 { 0x3E90, "Intel UHD Graphics 610" }, // Desktop { 0x3E93, "Intel UHD Graphics 610" }, // Desktop { 0x3E99, "Intel Coffee Lake GT1" }, // //GT2 { 0x3E91, "Intel UHD Graphics 630" }, // Desktop { 0x3E92, "Intel UHD Graphics 630" }, // Desktop { 0x3E94, "Intel Coffee Lake GT2" }, // { 0x3E96, "Intel Coffee Lake GT2" }, // { 0x3E98, "Intel UHD Graphics 630" }, // Desktop { 0x3E9A, "Intel Coffee Lake GT2" }, // { 0x3E9B, "Intel UHD Graphics 630" }, // Mobile - MacBookPro15,1/Macmini8,1 { 0x3EA9, "Intel Coffee Lake GT2" }, // //GT3 { 0x3EA5, "Intel Iris Plus Graphics 655" }, // Mobile - MacBookPro15,2 { 0x3EA6, "Intel Coffee Lake GT3" }, // { 0x3EA7, "Intel Coffee Lake GT3" }, // { 0x3EA8, "Intel Coffee Lake GT3" }, // //----------------Whiskey Lake-------------- //GT1 { 0x3EA1, "Intel Whiskey Lake GT1" }, // { 0x3EA4, "Intel Whiskey Lake GT1" }, // //GT2 { 0x3EA0, "Intel UHD Graphics 620" }, // Mobile { 0x3EA3, "Intel Whiskey Lake GT2" }, // //GT3 { 0x3EA2, "Intel Whiskey Lake GT3" }, // //----------------Comet Lake---------------- //GT1 { 0x9B21, "Intel Comet Lake GT1" }, // { 0x9BA0, "Intel Comet Lake GT1" }, // { 0x9BA2, "Intel Comet Lake GT1" }, // { 0x9BA4, "Intel Comet Lake GT1" }, // { 0x9BA5, "Intel Comet Lake GT1" }, // { 0x9BA8, "Intel Comet Lake GT1" }, // { 0x9BAA, "Intel Comet Lake GT1" }, // { 0x9BAB, "Intel Comet Lake GT1" }, // { 0x9BAC, "Intel Comet Lake GT1" }, // //GT2 { 0x9B41, "Intel UHD Graphics 620" }, // Mobile { 0x9BC0, "Intel Comet Lake GT2" }, // { 0x9BC2, "Intel Comet Lake GT2" }, // { 0x9BC4, "Intel Comet Lake GT2" }, // { 0x9BC5, "Intel Comet Lake GT2" }, // { 0x9BC8, "Intel Comet Lake GT2" }, // { 0x9BCA, "Intel UHD Graphics 620" }, // Mobile { 0x9BCB, "Intel Comet Lake GT2" }, // { 0x9BCC, "Intel Comet Lake GT2" }, // //----------------Gemini Lake--------------- { 0x3184, "Intel UHD Graphics 605" }, // { 0x3185, "Intel UHD Graphics 600" }, // //============== 10th generation =========== //----------------Cannonlake---------------- //GTx { 0x5A40, "Intel Cannonlake GTx" }, // //GT0.5 { 0x5A49, "Intel Cannonlake GT0.5" }, // { 0x5A4A, "Intel Cannonlake GT0.5" }, // //GT1 { 0x0A01, "Intel Cannonlake GT1" }, // Desktop { 0x5A41, "Intel Cannonlake GT1" }, // { 0x5A42, "Intel Cannonlake GT1" }, // { 0x5A44, "Intel Cannonlake GT1" }, // //GT1.5 { 0x5A59, "Intel Cannonlake GT1.5" }, // { 0x5A5A, "Intel Cannonlake GT1.5" }, // { 0x5A5C, "Intel Cannonlake GT1.5" }, // //GT2 { 0x5A50, "Intel Cannonlake GT2" }, // { 0x5A51, "Intel Cannonlake GT2" }, // { 0x5A52, "Intel Cannonlake GT2" }, // Mobile { 0x5A54, "Intel Cannonlake GT2" }, // Mobile //============== 11th generation =========== //----------------Ice Lake------------------ //GT0.5 { 0x8A71, "Intel Ice Lake GT0.5" }, // //GT1 { 0x8A5B, "Intel Ice Lake GT1" }, // { 0x8A5D, "Intel Ice Lake GT1" }, // //GT1.5 { 0x8A5A, "Intel Ice Lake GT1.5" }, // { 0x8A5C, "Intel Ice Lake GT1.5" }, // //GT2 { 0x8A50, "Intel Ice Lake GT2" }, // { 0x8A51, "Intel Ice Lake GT2" }, // { 0x8A52, "Intel Ice Lake GT2" }, // //----------------Lakefield----------------- { 0x9840, "Intel Lakefield" }, // { 0x9850, "Intel Lakefield" }, // //----------------Jasper Lake--------------- { 0x4500, "Intel Jasper Lake" }, // }; CONST CHAR8 *get_gma_model(UINT16 id) { UINTN i; for (i = 0; i < (sizeof(KnownGPUS) / sizeof(KnownGPUS[0])); i++) { if (KnownGPUS[i].device == id) return KnownGPUS[i].name; } return KnownGPUS[0].name; } XBool setup_gma_devprop(const MacOsVersion& macOSVersion, const XString8& BuildVersion, EFI_FILE* RootDir, pci_dt_t *gma_dev) { UINTN j; UINTN i; XString8 devicepath; CONST CHAR8 *model; DevPropDevice *device = NULL; UINT8 BuiltIn = 0x00; UINT32 FakeID; UINT32 DualLink = 1; // UINT64 os_version = AsciiOSVersionToUint64(macOSVersion); XBool SetUGAWidth = false; XBool SetUGAHeight = false; XBool Injected = false; XBool SetFake = false; XBool SetSnb = false; XBool SetIg = false; MacModel MacModel = GetModelFromString(gSettings.Smbios.ProductName); devicepath = get_pci_dev_path(gma_dev); model = get_gma_model(gma_dev->device_id); for (j = 0; j < gConf.GfxPropertiesArray.size(); j++) { if ((gConf.GfxPropertiesArray[j].Vendor == Intel) && (gConf.GfxPropertiesArray[j].DeviceID == gma_dev->device_id)) { model = gConf.GfxPropertiesArray[j].Model.c_str(); break; } } //DBG("Finally model=%s\n", model); MsgLog("%s [%04hX:%04hX] :: %s\n", model, gma_dev->vendor_id, gma_dev->device_id, devicepath.c_str()); // Resolution switch (UGAWidth) { case 640: SetUGAWidth = true; switch (UGAHeight) { case 360: SetUGAHeight = true; DBG(" Found one ninth of a Full HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 480: SetUGAHeight = true; DBG(" Found VGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 800: SetUGAWidth = true; switch (UGAHeight) { case 480: SetUGAHeight = true; DBG(" Found Wide VGA Display - 5:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 600: SetUGAHeight = true; DBG(" Found Super VGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 854: SetUGAWidth = true; if(UGAHeight == 480) { SetUGAHeight = true; DBG(" Found Full Wide VGA Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 960: SetUGAWidth = true; switch (UGAHeight) { case 540: SetUGAHeight = true; DBG(" Found one quarter of Full HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 640: SetUGAHeight = true; DBG(" Found Double-size VGA Display - 3:2 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 1024: SetUGAWidth = true; switch (UGAHeight) { case 576: SetUGAHeight = true; DBG(" Found Wide Super VGA Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 600: SetUGAHeight = true; DBG(" Found Wide Super VGA Display - 17:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 768: SetUGAHeight = true; DBG(" Found XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 1152: SetUGAWidth = true; if(UGAHeight == 864) { SetUGAHeight = true; DBG(" Found XGA Plus Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 1280: SetUGAWidth = true; switch (UGAHeight) { case 720: SetUGAHeight = true; DBG(" Found HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 768: SetUGAHeight = true; DBG(" Found Wide XGA Display - 5:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 800: SetUGAHeight = true; DBG(" Found Wide XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 1024: SetUGAHeight = true; DBG(" Found Super XGA Display - 5:4 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 1366: SetUGAWidth = true; if(UGAHeight == 768) { SetUGAHeight = true; DBG(" Found Full Wide XGA Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 1400: SetUGAWidth = true; if(UGAHeight == 1050) { SetUGAHeight = true; DBG(" Found Super XGA Plus Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 1440: SetUGAWidth = true; if(UGAHeight == 900) { SetUGAHeight = true; DBG(" Found Wide XGA Plus Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 1600: SetUGAWidth = true; switch (UGAHeight) { case 900: SetUGAHeight = true; DBG(" Found HD Plus Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 1200: SetUGAHeight = true; DBG(" Found Ultra XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 1680: SetUGAWidth = true; switch (UGAHeight) { case 1050: SetUGAHeight = true; DBG(" Found Widescreen Super XGA Plus Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 1920: SetUGAWidth = true; switch (UGAHeight) { case 1080: SetUGAHeight = true; DBG(" Found Full HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 1200: SetUGAHeight = true; DBG(" Found Wide Ultra XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 2048: SetUGAWidth = true; switch (UGAHeight) { case 1152: SetUGAHeight = true; DBG(" Found Quad Wide XGA Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 1536: SetUGAHeight = true; DBG(" Found Quad XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 2560: SetUGAWidth = true; switch (UGAHeight) { case 1440: SetUGAHeight = true; DBG(" Found Quad HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 1600: SetUGAHeight = true; DBG(" Found Wide Quad XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 2048: SetUGAHeight = true; DBG(" Found Quad Wide XGA Display - 5:4 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 2880: SetUGAWidth = true; if(UGAHeight == 1800) { SetUGAHeight = true; DBG(" Found Wide Quad XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 3200: SetUGAWidth = true; switch (UGAHeight) { case 1800: SetUGAHeight = true; DBG(" Found Quad HD Plus Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 2048: SetUGAHeight = true; DBG(" Found Wide Quad Super XGA Display - 25:16 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 2400: SetUGAHeight = true; DBG(" Found Quad Ultra XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 3840: SetUGAWidth = true; switch (UGAHeight) { case 2160: SetUGAHeight = true; DBG(" Found Ultra HD, 4K Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 2400: SetUGAHeight = true; DBG(" Found Wide Quad Ultra XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 4096: SetUGAWidth = true; if(UGAHeight == 3072) { SetUGAHeight = true; DBG(" Found Hex XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } else { DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); } break; case 5120: SetUGAWidth = true; switch (UGAHeight) { case 2880: SetUGAHeight = true; DBG(" Found Ultra HD Plus Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 3200: SetUGAHeight = true; DBG(" Found Wide Hex XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 4096: SetUGAHeight = true; DBG(" Found Hex Super XGA Display - 5:4 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 6400: SetUGAWidth = true; switch (UGAHeight) { case 4096: SetUGAHeight = true; DBG(" Found Wide Hex Super XGA Display - 25:16 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 4800: SetUGAHeight = true; DBG(" Found Hex Ultra XGA Display - 4:3 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; case 7680: SetUGAWidth = true; switch (UGAHeight) { case 4320: SetUGAHeight = true; DBG(" Found Full Ultra HD Display - 16:9 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; case 4800: SetUGAHeight = true; DBG(" Found Wide Hex Ultra XGA Display - 16:10 :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } break; default: DBG(" Found Unknown Resolution Display - ?:? :: Width=%lld Height=%lld\n", UGAWidth, UGAHeight); break; } if (!device_inject_string) { device_inject_string = devprop_create_string(); } if (gma_dev && !gma_dev->used) { device = devprop_add_device_pci(device_inject_string, gma_dev, NULL); gma_dev->used = true; } if (!device) { return false; } if (gSettings.Devices.AddPropertyArray.size() != 0xFFFE) { // Looks like NrAddProperties == 0xFFFE is not used anymore for (i = 0; i < gSettings.Devices.AddPropertyArray.size(); i++) { if (gSettings.Devices.AddPropertyArray[i].Device != DEV_INTEL) { continue; } Injected = true; if (!gSettings.Devices.AddPropertyArray[i].MenuItem.BValue) { //DBG(" disabled property Key: %s, len: %d\n", gSettings.Devices.AddPropertyArray[i].Key, gSettings.Devices.AddPropertyArray[i].ValueLen); } else { devprop_add_value(device, gSettings.Devices.AddPropertyArray[i].Key, gSettings.Devices.AddPropertyArray[i].Value); //DBG(" added property Key: %s, len: %d\n", gSettings.Devices.AddPropertyArray[i].Key, gSettings.Devices.AddPropertyArray[i].ValueLen); } } } if (Injected) { MsgLog(" Additional Intel GFX properties injected, continue\n"); } if (gSettings.Devices.UseIntelHDMI) { devprop_add_value(device, "hda-gfx", (UINT8*)"onboard-1", 10); MsgLog(" IntelHDMI: used\n"); } if (gSettings.Graphics.EDID.InjectEDID && gSettings.Graphics.EDID.CustomEDID.notEmpty()) { switch (gma_dev->device_id) { case 0x2772: // "Intel GMA 950" case 0x2776: // "Intel GMA 950" case 0x27A2: // "Intel GMA 950" case 0x27A6: // "Intel GMA 950" case 0x27AE: // "Intel GMA 950" case 0xA001: // "Intel GMA 3150" case 0xA002: // "Intel GMA 3150" case 0xA011: // "Intel GMA 3150" case 0xA012: // "Intel GMA 3150" case 0x2A02: // "Intel GMA X3100" case 0x2A03: // "Intel GMA X3100" case 0x2A12: // "Intel GMA X3100" case 0x2A13: // "Intel GMA X3100" devprop_add_value(device, "AAPL01,override-no-connect", gSettings.Graphics.EDID.CustomEDID.data(), 128); DBG(" AAPL01,override-no-connect: added\n"); break; default: devprop_add_value(device, "AAPL00,override-no-connect", gSettings.Graphics.EDID.CustomEDID.data(), 128); DBG(" AAPL00,override-no-connect: added\n"); break; } } // DualLink // Low resolution(1366x768-) - DualLink = 0, but no need it // High resolution(1400x1050+) - DualLink = 1 // Default DualLink is auto-detection switch (gma_dev->device_id) { case 0x2772: // "Intel GMA 950" case 0x2776: // "Intel GMA 950" case 0x27A2: // "Intel GMA 950" case 0x27A6: // "Intel GMA 950" case 0x27AE: // "Intel GMA 950" case 0xA001: // "Intel GMA 3150" case 0xA002: // "Intel GMA 3150" case 0xA011: // "Intel GMA 3150" case 0xA012: // "Intel GMA 3150" case 0x2A02: // "Intel GMA X3100" case 0x2A03: // "Intel GMA X3100" case 0x2A12: // "Intel GMA X3100" case 0x2A13: // "Intel GMA X3100" if ((gSettings.Graphics.DualLink == 0) || (gSettings.Graphics.DualLink == 1)) { if (gSettings.Graphics.DualLink == 1) { DBG(" DualLink: set to 1\n"); devprop_add_value(device, "AAPL01,DualLink", (UINT8*)&gSettings.Graphics.DualLink, 1); DBG(" AAPL01,DualLink = 1\n"); } else { DBG(" DualLink: set to 0\n"); DBG(" AAPL01,DualLink: not used\n"); } } else { DBG(" Beginning DualLink auto-detection\n"); if (SetUGAWidth && SetUGAHeight) { if (UGAWidth < 1400) { DBG(" Low Resolution Display\n"); DBG(" AAPL01,DualLink: not used\n"); } else { DBG(" High Resolution Display\n"); devprop_add_value(device, "AAPL01,DualLink", (UINT8*)&DualLink, 1); DBG(" AAPL01,DualLink = 1\n"); } } else { DBG(" Unknown Resolution Display\n"); devprop_add_value(device, "AAPL01,DualLink", (UINT8*)&DualLink, 1); DBG(" AAPL01,DualLink = 1\n"); } } break; default: if ((gSettings.Graphics.DualLink == 0) || (gSettings.Graphics.DualLink == 1)) { if (gSettings.Graphics.DualLink == 1) { DBG(" DualLink: set to 1\n"); devprop_add_value(device, "AAPL00,DualLink", (UINT8*)&gSettings.Graphics.DualLink, 1); DBG(" AAPL00,DualLink = 1\n"); } else { DBG(" DualLink: set to 0\n"); DBG(" AAPL00,DualLink: not used\n"); } } else { DBG(" Beginning DualLink auto-detection\n"); if (SetUGAWidth && SetUGAHeight) { if (UGAWidth < 1400) { DBG(" Low Resolution Display\n"); DBG(" AAPL00,DualLink: not used\n"); } else { DBG(" High Resolution Display\n"); devprop_add_value(device, "AAPL00,DualLink", (UINT8*)&DualLink, 1); DBG(" AAPL00,DualLink = 1\n"); } } else { DBG(" Unknown Resolution Display\n"); devprop_add_value(device, "AAPL00,DualLink", (UINT8*)&DualLink, 1); DBG(" AAPL00,DualLink = 1\n"); } } break; } if (gSettings.Devices.FakeID.FakeIntel) { FakeID = gSettings.Devices.FakeID.FakeIntel >> 16; devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = gSettings.Devices.FakeID.FakeIntel & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); SetFake = true; MsgLog(" FakeID Intel GFX = 0x%08x\n", gSettings.Devices.FakeID.FakeIntel); } else { DBG(" FakeID Intel GFX: not set\n"); } // platform-id switch (gma_dev->device_id) { case 0x0102: // "Intel HD Graphics 2000" case 0x0106: // "Intel HD Graphics 2000" case 0x010A: // "Intel HD Graphics P3000" case 0x0112: // "Intel HD Graphics 3000" case 0x0116: // "Intel HD Graphics 3000" case 0x0122: // "Intel HD Graphics 3000" case 0x0126: // "Intel HD Graphics 3000" if (GlobalConfig.IgPlatform != 0) { devprop_add_value(device, "AAPL,snb-platform-id", (UINT8*)&GlobalConfig.IgPlatform, 4); MsgLog(" snb-platform-id = 0x%08x\n", GlobalConfig.IgPlatform); SetSnb = true; } else { DBG(" snb-platform-id: not set\n"); } break; default: if (GlobalConfig.IgPlatform != 0) { devprop_add_value(device, "AAPL,ig-platform-id", (UINT8*)&GlobalConfig.IgPlatform, 4); MsgLog(" ig-platform-id = 0x%08x\n", GlobalConfig.IgPlatform); SetIg = true; } else { DBG(" ig-platform-id: not set\n"); } break; } if (gSettings.Devices.NoDefaultProperties) { MsgLog(" Intel: no default properties\n"); return true; } devprop_add_value(device, "model", (UINT8*)model, (UINT32)AsciiStrLen(model)); //devprop_add_value(device, "device_type", (UINT8*)"display", 7); // this key displays two intel graphics cards in system report on 10.13.4+ devprop_add_value(device, "subsystem-vendor-id", common_vals[2], 4); devprop_add_value(device, "class-code", (UINT8*)ClassFix, 4); /*if (gSettings.Smbios.Mobile) { UINT32 IntelDisplay = 1; // these are not reference keys for all. why add these keys? devprop_add_value(device, "AAPL,backlight-control", (UINT8*)&IntelDisplay, 4); devprop_add_value(device, "AAPL,HasLid", (UINT8*)&IntelDisplay, 4); devprop_add_value(device, "AAPL,HasPanel", (UINT8*)&IntelDisplay, 4); devprop_add_value(device, "@0,backlight-control", (UINT8*)&IntelDisplay, 4); }*/ // Clover will automatically detect these values if there is no ig-platform-id or FakeID Intel GFX value. // If there are Intel GFX values in ACPI injection, their values will be overwritten on the values of Intel GFX auto-detection. if ((SetSnb && SetFake) || (SetIg && SetFake)) { //DBG(" Beginning ACPI injection\n"); } else { DBG(" Beginning Intel GFX auto-detection with ACPI injection\n"); } switch (gma_dev->device_id) { //============== PowerVR =================== //--------Canmore/Sodaville/Groveland------- case 0x2E5B: // "Intel 500" // break; //----------------Poulsbo------------------- case 0x8108: // "Intel 500" // Menlow case 0x8109: // "Intel 500" // Menlow break; //----------------Lincroft------------------ case 0x4102: // "Intel 600" // Moorestown break; //----------------Cedarview----------------- case 0x0BE0: // "Intel GMA 3600" // Cedar Trail case 0x0BE1: // "Intel GMA 3600" // Cedar Trail case 0x0BE2: // "Intel GMA 3650" // Cedar Trail case 0x0BE3: // "Intel GMA 3650" // Cedar Trail break; //----------------Cloverview---------------- case 0x08C7: // "Intel GMA" // Clover Trail case 0x08C8: // "Intel GMA" // Clover Trail case 0x08C9: // "Intel GMA" // Clover Trail case 0x08CA: // "Intel GMA" // Clover Trail case 0x08CB: // "Intel GMA" // Clover Trail case 0x08CC: // "Intel GMA" // Clover Trail case 0x08CD: // "Intel GMA" // Clover Trail case 0x08CE: // "Intel GMA" // Clover Trail case 0x08CF: // "Intel GMA" // Clover Trail break; //============== 1st generation ============ //----------------Auburn-------------------- case 0x7800: // "Intel 740" // Desktop - Intel 740 GMCH Express Chipset Family break; //----------------Portola------------------- case 0x1240: // "Intel 752" // Desktop - Intel 752 GMCH Express Chipset Family break; //----------------Whitney------------------- case 0x7121: // "Intel 3D graphics 810" // Desktop - Intel 810 GMCH Express Chipset Family case 0x7123: // "Intel 3D graphics 810" // Desktop - Intel 810-DC100 GMCH Express Chipset Family case 0x7125: // "Intel 3D graphics 810" // Desktop - Intel 810E GMCH Express Chipset Family break; //----------------Solano-------------------- case 0x1132: // "Intel 3D graphics 815" // Desktop - Intel 815 GMCH Express Chipset Family break; //============== 2nd generation ============ //----------------Almador------------------- case 0x3577: // "Intel Extreme Graphics 830" // Mobile - Intel 830M GMCH Express Chipset Family case 0x357B: // "Intel Extreme Graphics 835" // Desktop - Intel 835G GMCH Express Chipset Family break; //----------------Brookdale----------------- case 0x2562: // "Intel Extreme Graphics 845" // Desktop - Intel 845G GMCH Express Chipset Family break; //----------------Montara------------------- case 0x358E: // "Intel Extreme Graphics 2 854" // Mobile - Intel 852GM/855GM GMCH Express Chipset Family case 0x3582: // "Intel Extreme Graphics 2 855" // Mobile - Intel 852GM/855GM GMCH Express Chipset Family break; //----------------Springdale---------------- case 0x2572: // "Intel Extreme Graphics 2 865" // Desktop - Intel 865G Express Chipset Family break; //============== 3rd generation ============ //----------------Grantsdale---------------- case 0x2582: // "Intel GMA 900" // Desktop - Intel 915G Express Chipset Family case 0x258A: // "Intel GMA 900" // Desktop - Intel 915GM Express Chipset Family case 0x2782: // "Intel GMA 900" // Desktop - Intel 915GV Express Chipset Family break; //----------------Alviso-------------------- case 0x2592: // "Intel GMA 900" // Mobile - Intel 82915GM/GMS, 910GML Express Chipset Family case 0x2792: // "Intel GMA 900" // Mobile - Intel 82915GM/GMS, 910GML Express Chipset Family break; //----------------Lakeport------------------ case 0x2772: // "Intel GMA 950" // Desktop - Intel 82945G Express Chipset Family case 0x2776: // "Intel GMA 950" // Desktop - Intel 82945G Express Chipset Family //break; //----------------Calistoga----------------- case 0x27A2: // "Intel GMA 950" // Mobile - Intel 945GM Express Chipset Family - MacBook1,1/MacBook2,1 case 0x27A6: // "Intel GMA 950" // Mobile - Intel 945GM Express Chipset Family case 0x27AE: // "Intel GMA 950" // Mobile - Intel 945GM Express Chipset Family if (!SetFake) { FakeID = 0x27A28086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x27A28086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } devprop_add_value(device, "built-in", &BuiltIn, 1); //devprop_add_value(device, "AAPL,HasLid", calistoga_gma_vals[0], 4); devprop_add_value(device, "AAPL,HasPanel", calistoga_gma_vals[1], 4); //devprop_add_value(device, "AAPL,NumDisplays", calistoga_gma_vals[2], 4); //devprop_add_value(device, "AAPL,NumFramebuffers", calistoga_gma_vals[3], 4); devprop_add_value(device, "AAPL01,BacklightIntensity", calistoga_gma_vals[4], 4); devprop_add_value(device, "AAPL01,BootDisplay", calistoga_gma_vals[5], 4); //devprop_add_value(device, "AAPL01,CurrentDisplay", calistoga_gma_vals[6], 4); devprop_add_value(device, "AAPL01,DataJustify", calistoga_gma_vals[7], 4); //devprop_add_value(device, "AAPL01,Depth", calistoga_gma_vals[8], 4); devprop_add_value(device, "AAPL01,Dither", calistoga_gma_vals[9], 4); //devprop_add_value(device, "AAPL01,Height", calistoga_gma_vals[10], 4); devprop_add_value(device, "AAPL01,Interlace", calistoga_gma_vals[11], 4); devprop_add_value(device, "AAPL01,Inverter", calistoga_gma_vals[12], 4); devprop_add_value(device, "AAPL01,InverterCurrent", calistoga_gma_vals[13], 4); //devprop_add_value(device, "AAPL01,InverterFrequency", calistoga_gma_vals[14], 4); //devprop_add_value(device, "AAPL01,IODisplayMode", calistoga_gma_vals[15], 4); devprop_add_value(device, "AAPL01,LinkFormat", calistoga_gma_vals[16], 4); devprop_add_value(device, "AAPL01,LinkType", calistoga_gma_vals[17], 4); devprop_add_value(device, "AAPL01,Pipe", calistoga_gma_vals[18], 4); //devprop_add_value(device, "AAPL01,PixelFormat", calistoga_gma_vals[19], 4); devprop_add_value(device, "AAPL01,Refresh", calistoga_gma_vals[20], 4); devprop_add_value(device, "AAPL01,Stretch", calistoga_gma_vals[21], 4); devprop_add_value(device, "AAPL01,T1", calistoga_gma_vals[22], 4); devprop_add_value(device, "AAPL01,T2", calistoga_gma_vals[23], 4); devprop_add_value(device, "AAPL01,T3", calistoga_gma_vals[24], 4); devprop_add_value(device, "AAPL01,T4", calistoga_gma_vals[25], 4); devprop_add_value(device, "AAPL01,T5", calistoga_gma_vals[26], 4); devprop_add_value(device, "AAPL01,T6", calistoga_gma_vals[27], 4); devprop_add_value(device, "AAPL01,T7", calistoga_gma_vals[28], 4); //devprop_add_value(device, "AAPL01,Width", calistoga_gma_vals[29], 4); break; //----------------Bearlake------------------ case 0x29B2: // "Intel GMA 3100" // Desktop - Intel Q35 Express Chipset Family case 0x29B3: // "Intel GMA 3100" // Desktop - Intel Q35 Express Chipset Family case 0x29C2: // "Intel GMA 3100" // Desktop - Intel G33/G31 Express Chipset Family case 0x29C3: // "Intel GMA 3100" // Desktop - Intel G33/G31 Express Chipset Family case 0x29D2: // "Intel GMA 3100" // Desktop - Intel Q33 Express Chipset Family case 0x29D3: // "Intel GMA 3100" // Desktop - Intel Q33 Express Chipset Family break; //----------------Pineview------------------ case 0xA001: // "Intel GMA 3150" // Nettop - Intel NetTop Atom D410 case 0xA002: // "Intel GMA 3150" // Nettop - Intel NetTop Atom D510 case 0xA011: // "Intel GMA 3150" // Netbook - Intel NetBook Atom N4x0 case 0xA012: // "Intel GMA 3150" // Netbook - Intel NetBook Atom N4x0 if (!SetFake) { FakeID = 0x27A28086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x27A28086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); // (c) Chameleon team, meklort - GMA3150 patch for AppleIntelIntegratedFramebuffer.kext of the GMA950, no QE yet. // Cursor corruption fix. getPhysicalAddress() and more. jump past getPhysicalAddress binding. NOTE: last six bytes are unusable // Bundle name: com.apple.driver.AppleIntelIntegratedFramebuffer // Find: 8b550883bab0000000017e36890424e832bbffff // Replace: b800000002909090909090909090eb0400000000 } devprop_add_value(device, "built-in", &BuiltIn, 1); //devprop_add_value(device, "AAPL,HasLid", calistoga_gma_vals[0], 4); devprop_add_value(device, "AAPL,HasPanel", calistoga_gma_vals[1], 4); //devprop_add_value(device, "AAPL,NumDisplays", calistoga_gma_vals[2], 4); //devprop_add_value(device, "AAPL,NumFramebuffers", calistoga_gma_vals[3], 4); devprop_add_value(device, "AAPL01,BacklightIntensity", calistoga_gma_vals[4], 4); devprop_add_value(device, "AAPL01,BootDisplay", calistoga_gma_vals[5], 4); //devprop_add_value(device, "AAPL01,CurrentDisplay", calistoga_gma_vals[6], 4); devprop_add_value(device, "AAPL01,DataJustify", calistoga_gma_vals[7], 4); //devprop_add_value(device, "AAPL01,Depth", calistoga_gma_vals[8], 4); devprop_add_value(device, "AAPL01,Dither", calistoga_gma_vals[9], 4); //devprop_add_value(device, "AAPL01,Height", calistoga_gma_vals[10], 4); devprop_add_value(device, "AAPL01,Interlace", calistoga_gma_vals[11], 4); devprop_add_value(device, "AAPL01,Inverter", calistoga_gma_vals[12], 4); devprop_add_value(device, "AAPL01,InverterCurrent", calistoga_gma_vals[13], 4); //devprop_add_value(device, "AAPL01,InverterFrequency", calistoga_gma_vals[14], 4); //devprop_add_value(device, "AAPL01,IODisplayMode", calistoga_gma_vals[15], 4); devprop_add_value(device, "AAPL01,LinkFormat", calistoga_gma_vals[16], 4); devprop_add_value(device, "AAPL01,LinkType", calistoga_gma_vals[17], 4); devprop_add_value(device, "AAPL01,Pipe", calistoga_gma_vals[18], 4); //devprop_add_value(device, "AAPL01,PixelFormat", calistoga_gma_vals[19], 4); devprop_add_value(device, "AAPL01,Refresh", calistoga_gma_vals[20], 4); devprop_add_value(device, "AAPL01,Stretch", calistoga_gma_vals[21], 4); devprop_add_value(device, "AAPL01,T1", calistoga_gma_vals[22], 4); devprop_add_value(device, "AAPL01,T2", calistoga_gma_vals[23], 4); devprop_add_value(device, "AAPL01,T3", calistoga_gma_vals[24], 4); devprop_add_value(device, "AAPL01,T4", calistoga_gma_vals[25], 4); devprop_add_value(device, "AAPL01,T5", calistoga_gma_vals[26], 4); devprop_add_value(device, "AAPL01,T6", calistoga_gma_vals[27], 4); devprop_add_value(device, "AAPL01,T7", calistoga_gma_vals[28], 4); //devprop_add_value(device, "AAPL01,Width", calistoga_gma_vals[29], 4); break; //============== 4th generation ============ //----------------Lakeport------------------ case 0x2972: // "Intel GMA 3000" // Desktop - Intel 946GZ Express Chipset Family case 0x2973: // "Intel GMA 3000" // Desktop - Intel 946GZ Express Chipset Family break; //----------------Broadwater---------------- case 0x2992: // "Intel GMA 3000" // Desktop - Intel Q965/Q963 Express Chipset Family case 0x2993: // "Intel GMA 3000" // Desktop - Intel Q965/Q963 Express Chipset Family case 0x29A2: // "Intel GMA X3000" // Desktop - Intel G965 Express Chipset Family case 0x29A3: // "Intel GMA X3000" // Desktop - Intel G965 Express Chipset Family break; //----------------Crestline----------------- case 0x2A02: // "Intel GMA X3100" // Mobile - Intel 965 Express Chipset Family - MacBook3,1/MacBook4,1/MacbookAir1,1 case 0x2A03: // "Intel GMA X3100" // Mobile - Intel 965 Express Chipset Family case 0x2A12: // "Intel GMA X3100" // Mobile - Intel 965 Express Chipset Family case 0x2A13: // "Intel GMA X3100" // Mobile - Intel 965 Express Chipset Family if (!SetFake) { FakeID = 0x2A028086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x2A028086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } devprop_add_value(device, "built-in", &BuiltIn, 1); //devprop_add_value(device, "AAPL,HasLid", crestline_gma_vals[0], 4); devprop_add_value(device, "AAPL,HasPanel", crestline_gma_vals[1], 4); //devprop_add_value(device, "AAPL,NumDisplays", crestline_gma_vals[2], 4); //devprop_add_value(device, "AAPL,NumFramebuffers", crestline_gma_vals[3], 4); devprop_add_value(device, "AAPL,SelfRefreshSupported", crestline_gma_vals[4], 4); devprop_add_value(device, "AAPL,aux-power-connected", crestline_gma_vals[5], 4); devprop_add_value(device, "AAPL,backlight-control", crestline_gma_vals[6], 4); devprop_add_value(device, "AAPL00,blackscreen-preferences", crestline_gma_vals[7], 4); devprop_add_value(device, "AAPL01,BootDisplay", crestline_gma_vals[8], 4); devprop_add_value(device, "AAPL01,BacklightIntensity", crestline_gma_vals[9], 4); devprop_add_value(device, "AAPL01,blackscreen-preferences", crestline_gma_vals[10], 4); //devprop_add_value(device, "AAPL01,CurrentDisplay", crestline_gma_vals[11], 4); devprop_add_value(device, "AAPL01,DataJustify", crestline_gma_vals[12], 4); //devprop_add_value(device, "AAPL01,Depth", crestline_gma_vals[13], 4); devprop_add_value(device, "AAPL01,Dither", crestline_gma_vals[14], 4); //devprop_add_value(device, "AAPL01,Height", crestline_gma_vals[15], 4); devprop_add_value(device, "AAPL01,Interlace", crestline_gma_vals[16], 4); devprop_add_value(device, "AAPL01,Inverter", crestline_gma_vals[17], 4); devprop_add_value(device, "AAPL01,InverterCurrent", crestline_gma_vals[18], 4); //devprop_add_value(device, "AAPL01,InverterFrequency", crestline_gma_vals[19], 4); devprop_add_value(device, "AAPL01,LinkFormat", crestline_gma_vals[20], 4); devprop_add_value(device, "AAPL01,LinkType", crestline_gma_vals[21], 4); devprop_add_value(device, "AAPL01,Pipe", crestline_gma_vals[22], 4); //devprop_add_value(device, "AAPL01,PixelFormat", crestline_gma_vals[23], 4); devprop_add_value(device, "AAPL01,Refresh", crestline_gma_vals[24], 4); devprop_add_value(device, "AAPL01,Stretch", crestline_gma_vals[25], 4); devprop_add_value(device, "AAPL01,T1", crestline_gma_vals[26], 4); devprop_add_value(device, "AAPL01,T2", crestline_gma_vals[27], 4); devprop_add_value(device, "AAPL01,T3", crestline_gma_vals[28], 4); devprop_add_value(device, "AAPL01,T4", crestline_gma_vals[29], 4); devprop_add_value(device, "AAPL01,T5", crestline_gma_vals[30], 4); devprop_add_value(device, "AAPL01,T6", crestline_gma_vals[31], 4); devprop_add_value(device, "AAPL01,T7", crestline_gma_vals[32], 4); //devprop_add_value(device, "AAPL01,Width", crestline_gma_vals[33], 4); break; //----------------Bearlake------------------ case 0x2982: // "Intel GMA X3500" // Desktop - Intel G35 Express Chipset Family case 0x2983: // "Intel GMA X3500" // Desktop - Intel G35 Express Chipset Family break; //----------------Eaglelake----------------- case 0x2E02: // "Intel GMA 4500" // Desktop - Intel 4 Series Express Chipset Family case 0x2E03: // "Intel GMA 4500" // Desktop - Intel 4 Series Express Chipset Family case 0x2E12: // "Intel GMA 4500" // Desktop - Intel G45/G43 Express Chipset Family case 0x2E13: // "Intel GMA 4500" // Desktop - Intel G45/G43 Express Chipset Family case 0x2E42: // "Intel GMA 4500" // Desktop - Intel B43 Express Chipset Family case 0x2E43: // "Intel GMA 4500" // Desktop - Intel B43 Express Chipset Family case 0x2E92: // "Intel GMA 4500" // Desktop - Intel B43 Express Chipset Family case 0x2E93: // "Intel GMA 4500" // Desktop - Intel B43 Express Chipset Family case 0x2E32: // "Intel GMA X4500" // Desktop - Intel G45/G43 Express Chipset Family case 0x2E33: // "Intel GMA X4500" // Desktop - Intel G45/G43 Express Chipset Family case 0x2E22: // "Intel GMA X4500" // Mobile - Intel G45/G43 Express Chipset Family case 0x2E23: // "Intel GMA X4500HD" // Mobile - Intel G45/G43 Express Chipset Family break; //----------------Cantiga------------------- case 0x2A42: // "Intel GMA X4500MHD" // Mobile - Intel 4 Series Express Chipset Family case 0x2A43: // "Intel GMA X4500MHD" // Mobile - Intel 4 Series Express Chipset Family break; //============== 5th generation ============ //----------------Ironlake------------------ case 0x0042: // "Intel HD Graphics" // Desktop - Clarkdale case 0x0046: // "Intel HD Graphics" // Mobile - Arrandale - MacBookPro6,x if (!SetFake) { switch (gma_dev->device_id) { case 0x0042: FakeID = 0x00428086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x00428086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0046: FakeID = 0x00468086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x00468086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; default: break; } } switch (MacModel) { case MacBookPro61: case MacBookPro62: devprop_add_value(device, "AAPL,os-info", mbp_HD_os_info, 20); devprop_add_value(device, "AAPL,aux-power-connected", ironlake_hd_vals[0], 4); devprop_add_value(device, "AAPL,backlight-control", ironlake_hd_vals[1], 4); //devprop_add_value(device, "AAPL00,T1", ironlake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,T2", ironlake_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,T3", ironlake_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,T4", ironlake_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,T5", ironlake_hd_vals[6], 4); //devprop_add_value(device, "AAPL00,T6", ironlake_hd_vals[7], 4); //devprop_add_value(device, "AAPL00,T7", ironlake_hd_vals[8], 4); devprop_add_value(device, "VRAM,totalsize", ironlake_hd_vals[9], 4); break; default: break; } break; //============== 6th generation ============ //----------------Sandy Bridge-------------- //GT1 case 0x0102: // "Intel HD Graphics 2000" // Desktop - iMac12,x case 0x0106: // "Intel HD Graphics 2000" // Mobile case 0x010A: // "Intel HD Graphics P3000" // Server //GT2 case 0x0112: // "Intel HD Graphics 3000" // Desktop case 0x0116: // "Intel HD Graphics 3000" // Mobile - MacBookAir4,x/MacBookPro8,2/MacBookPro8,3 case 0x0122: // "Intel HD Graphics 3000" // Desktop case 0x0126: // "Intel HD Graphics 3000" // Mobile - MacBookPro8,1/Macmini5,x if (!SetFake) { switch (gma_dev->device_id) { case 0x0116: FakeID = 0x01168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0102: case 0x0106: case 0x010A: case 0x0112: case 0x0122: case 0x0126: FakeID = 0x01268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; default: break; } } if (!SetSnb) { switch (MacModel) { case MacBookAir41: case MacBookAir42: case MacBookPro81: case MacBookPro82: case MacBookPro83: devprop_add_value(device, "AAPL,snb-platform-id", sandy_bridge_snb_vals[0], 4); DBG(" Found snb-platform-id = 0x00010000\n"); break; default: devprop_add_value(device, "AAPL,snb-platform-id", sandy_bridge_snb_vals[2], 4); DBG(" Found snb-platform-id = 0x00030010\n"); break; } } switch (GlobalConfig.IgPlatform) { case (UINT32)0x00030030: case (UINT32)0x00050000: break; default: switch (MacModel) { case MacBookAir41: case MacBookAir42: devprop_add_value(device, "AAPL,tbl-info", mba_HD3000_tbl_info, 18); devprop_add_value(device, "AAPL,os-info", mba_HD3000_os_info, 20); break; case MacBookPro81: case MacBookPro82: case MacBookPro83: devprop_add_value(device, "AAPL,tbl-info", mbp_HD3000_tbl_info, 18); devprop_add_value(device, "AAPL,os-info", mbp_HD3000_os_info, 20); //devprop_add_value(device, "AAPL00,DataJustify", sandy_bridge_hd_vals[0], 4); //devprop_add_value(device, "AAPL00,Dither", sandy_bridge_hd_vals[1], 4); //devprop_add_value(device, "AAPL00,LinkFormat", sandy_bridge_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,LinkType", sandy_bridge_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,PixelFormat", sandy_bridge_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,T1", sandy_bridge_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,T2", sandy_bridge_hd_vals[6], 4); //devprop_add_value(device, "AAPL00,T3", sandy_bridge_hd_vals[7], 4); //devprop_add_value(device, "AAPL00,T4", sandy_bridge_hd_vals[8], 4); //devprop_add_value(device, "AAPL00,T5", sandy_bridge_hd_vals[9], 4); //devprop_add_value(device, "AAPL00,T6", sandy_bridge_hd_vals[10], 4); //devprop_add_value(device, "AAPL00,T7", sandy_bridge_hd_vals[11], 4); break; default: devprop_add_value(device, "AAPL,tbl-info", mn_HD3000_tbl_info, 18); devprop_add_value(device, "AAPL,os-info", mn_HD3000_os_info, 20); break; } //devprop_add_value(device, "graphic-options", sandy_bridge_hd_vals[12], 4); break; } break; //============== 7th generation ============ //----------------Ivy Bridge---------------- //GT1 case 0x0152: // "Intel HD Graphics 2500" // Desktop - iMac13,x case 0x0156: // "Intel HD Graphics 2500" // Mobile case 0x015A: // "Intel HD Graphics 2500" // Server case 0x015E: // "Intel Ivy Bridge GT1" // Reserved //GT2 case 0x0162: // "Intel HD Graphics 4000" // Desktop case 0x0166: // "Intel HD Graphics 4000" // Mobile - MacBookPro9,x/MacBookPro10,x/MacBookAir5,x/Macmini6,x case 0x016A: // "Intel HD Graphics P4000" // Server switch (gma_dev->device_id) { case 0x0152: case 0x015A: if (!SetFake) { FakeID = 0x01528086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01528086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x01620005\n"); } break; case 0x0156: if (!SetFake) { FakeID = 0x01568086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01568086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[9], 4); DBG(" Found ig-platform-id = 0x01660009\n"); } break; case 0x0162: case 0x016A: if (!SetFake) { FakeID = 0x01628086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01628086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x01620005\n"); } break; case 0x0166: if (!SetFake) { FakeID = 0x01668086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x01668086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { if (UGAWidth < 1600) { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[6], 4); DBG(" Found ig-platform-id = 0x01660003\n"); } else { // HD+(1600x900+) devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[7], 4); DBG(" Found ig-platform-id = 0x01660004\n"); } } break; default: if (!SetIg) { if (gSettings.Smbios.Mobile) { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[7], 4); DBG(" Found ig-platform-id = 0x01660004\n"); } else { devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[9], 4); DBG(" Found ig-platform-id = 0x01660009\n"); } } break; } switch (GlobalConfig.IgPlatform) { case (UINT32)0x01620006: case (UINT32)0x01620007: break; default: //devprop_add_value(device, "graphic-options", ivy_bridge_hd_vals[0], 4); break; } break; //----------------Haswell------------------- //GT1 case 0x0402: // "Intel Haswell GT1" // Desktop case 0x0406: // "Intel Haswell GT1" // Mobile case 0x040A: // "Intel Haswell GT1" // Server case 0x040B: // "Intel Haswell GT1" // case 0x040E: // "Intel Haswell GT1" // //GT2 case 0x0412: // "Intel HD Graphics 4600" // Desktop - iMac15,1 case 0x0416: // "Intel HD Graphics 4600" // Mobile case 0x041A: // "Intel HD Graphics P4600" // Server case 0x041B: // "Intel Haswell GT2" // case 0x041E: // "Intel HD Graphics 4400" // //GT3 case 0x0422: // "Intel HD Graphics 5000" // Desktop case 0x0426: // "Intel HD Graphics 5000" // Mobile case 0x042A: // "Intel HD Graphics 5000" // Server case 0x042B: // "Intel Haswell GT3" // case 0x042E: // "Intel Haswell GT3" // //GT1 case 0x0A02: // "Intel Haswell GT1" // Desktop ULT case 0x0A06: // "Intel HD Graphics" // Mobile ULT case 0x0A0A: // "Intel Haswell GT1" // Server ULT case 0x0A0B: // "Intel Haswell GT1" // ULT case 0x0A0E: // "Intel Haswell GT1" // ULT //GT2 case 0x0A12: // "Intel Haswell GT2" // Desktop ULT case 0x0A16: // "Intel HD Graphics 4400" // Mobile ULT case 0x0A1A: // "Intel Haswell GT2" // Server ULT case 0x0A1B: // "Intel Haswell GT2" // ULT case 0x0A1E: // "Intel HD Graphics 4200" // ULT //GT3 case 0x0A22: // "Intel Iris Graphics 5100" // Desktop ULT case 0x0A26: // "Intel HD Graphics 5000" // Mobile ULT - MacBookAir6,x/Macmini7,1 case 0x0A2A: // "Intel Iris Graphics 5100" // Server ULT case 0x0A2B: // "Intel Iris Graphics 5100" // ULT case 0x0A2E: // "Intel Iris Graphics 5100" // ULT - MacBookPro11,1 //GT1 case 0x0C02: // "Intel Haswell GT1" // Desktop SDV case 0x0C06: // "Intel Haswell GT1" // Mobile SDV case 0x0C0A: // "Intel Haswell GT1" // Server SDV case 0x0C0B: // "Intel Haswell GT1" // SDV case 0x0C0E: // "Intel Haswell GT1" // SDV //GT2 case 0x0C12: // "Intel Haswell GT2" // Desktop SDV case 0x0C16: // "Intel Haswell GT2" // Mobile SDV case 0x0C1A: // "Intel Haswell GT2" // Server SDV case 0x0C1B: // "Intel Haswell GT2" // SDV case 0x0C1E: // "Intel Haswell GT2" // SDV //GT3 case 0x0C22: // "Intel Haswell GT3" // Desktop SDV case 0x0C26: // "Intel Haswell GT3" // Mobile SDV case 0x0C2A: // "Intel Haswell GT3" // Server SDV case 0x0C2B: // "Intel Haswell GT3" // SDV case 0x0C2E: // "Intel Haswell GT3" // SDV //GT1 case 0x0D02: // "Intel Haswell GT1" // Desktop CRW case 0x0D06: // "Intel Haswell GT1" // Mobile CRW case 0x0D0A: // "Intel Haswell GT1" // Server CRW case 0x0D0B: // "Intel Haswell GT1" // CRW case 0x0D0E: // "Intel Haswell GT1" // CRW //GT2 case 0x0D12: // "Intel HD Graphics 4600" // Desktop CRW case 0x0D16: // "Intel HD Graphics 4600" // Mobile CRW case 0x0D1A: // "Intel Haswell GT2" // Server CRW case 0x0D1B: // "Intel Haswell GT2" // CRW case 0x0D1E: // "Intel Haswell GT2" // CRW //GT3 case 0x0D22: // "Intel Iris Pro Graphics 5200" // Desktop CRW - iMac14,1/iMac14,4 case 0x0D26: // "Intel Iris Pro Graphics 5200" // Mobile CRW - MacBookPro11,2/MacBookPro11,3 case 0x0D2A: // "Intel Iris Pro Graphics 5200" // Server CRW case 0x0D2B: // "Intel Iris Pro Graphics 5200" // CRW case 0x0D2E: // "Intel Iris Pro Graphics 5200" // CRW if (!SetFake) { switch (gma_dev->device_id) { case 0x0412: case 0x0416: case 0x041A: case 0x041E: case 0x0A16: case 0x0A1E: case 0x0D12: case 0x0D16: FakeID = 0x04128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x04128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0A26: FakeID = 0x0A268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x0A268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0A22: case 0x0A2A: case 0x0A2B: case 0x0A2E: FakeID = 0x0A2E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x0A2E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0D22: case 0x0D2A: case 0x0D2B: case 0x0D2E: FakeID = 0x0D228086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x0D228086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; case 0x0D26: FakeID = 0x0D268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x0D268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); break; default: break; } } if (!SetIg) { switch (MacModel) { case MacBookAir61: case MacBookAir62: case MacBookPro111: case MacBookPro112: case MacBookPro113: case MacBookPro114: case MacBookPro115: if (UGAWidth < 2560) { devprop_add_value(device, "AAPL,ig-platform-id", haswell_ig_vals[9], 4); DBG(" Found ig-platform-id = 0x0A260006\n"); } else { // QHD+(2560x1440+) devprop_add_value(device, "AAPL,ig-platform-id", haswell_ig_vals[12], 4); DBG(" Found ig-platform-id = 0x0A2E0008\n"); } break; default: devprop_add_value(device, "AAPL,ig-platform-id", haswell_ig_vals[18], 4); DBG(" Found ig-platform-id = 0x0D220003\n"); break; } } switch (GlobalConfig.IgPlatform) { case (UINT32)0x04120004: case (UINT32)0x0412000B: break; default: //devprop_add_value(device, "graphic-options", haswell_hd_vals[0], 4); break; } break; //----------------ValleyView---------------- case 0x0F30: // "Intel HD Graphics" // Bay Trail case 0x0F31: // "Intel HD Graphics" // Bay Trail case 0x0F32: // "Intel HD Graphics" // Bay Trail case 0x0F33: // "Intel HD Graphics" // Bay Trail case 0x0155: // "Intel HD Graphics" // Bay Trail case 0x0157: // "Intel HD Graphics" // Bay Trail break; //============== 8th generation ============ //----------------Broadwell----------------- //GT1 case 0x1602: // "Intel Broadwell GT1" // Desktop case 0x1606: // "Intel Broadwell GT1" // Mobile case 0x160A: // "Intel Broadwell GT1" // case 0x160B: // "Intel Broadwell GT1" // case 0x160D: // "Intel Broadwell GT1" // case 0x160E: // "Intel Broadwell GT1" // //GT2 case 0x1612: // "Intel HD Graphics 5600" // Mobile case 0x1616: // "Intel HD Graphics 5500" // Mobile case 0x161A: // "Intel Broadwell GT2" // case 0x161B: // "Intel Broadwell GT2" // case 0x161D: // "Intel Broadwell GT2" // case 0x161E: // "Intel HD Graphics 5300" // Ultramobile - MacBook8,1 //GT3 case 0x1626: // "Intel HD Graphics 6000" // Mobile - iMac16,1/MacBookAir7,x case 0x162B: // "Intel Iris Graphics 6100" // Mobile - MacBookPro12,1 case 0x162D: // "Intel Iris Pro Graphics P6300" // Workstation, Mobile Workstation //GT3e case 0x1622: // "Intel Iris Pro Graphics 6200" // Desktop, Mobile - iMac16,2 case 0x162A: // "Intel Iris Pro Graphics P6300" // Workstation //RSVD case 0x162E: // "Intel Broadwell RSVD" // Reserved case 0x1632: // "Intel Broadwell RSVD" // Reserved case 0x1636: // "Intel Broadwell RSVD" // Reserved case 0x163A: // "Intel Broadwell RSVD" // Reserved case 0x163B: // "Intel Broadwell RSVD" // Reserved case 0x163D: // "Intel Broadwell RSVD" // Reserved case 0x163E: // "Intel Broadwell RSVD" // Reserved switch (gma_dev->device_id) { case 0x1612: if (!SetFake) { FakeID = 0x16128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x16128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; case 0x1616: if (!SetFake) { FakeID = 0x16168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x16168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; case 0x161E: if (!SetFake) { FakeID = 0x161E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x161E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; case 0x1626: if (!SetFake) { FakeID = 0x16268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x16268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; case 0x162B: if (!SetFake) { FakeID = 0x162B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x162B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; case 0x1622: case 0x162A: case 0x162D: if (!SetFake) { FakeID = 0x16228086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x16228086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; default: if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", broadwell_ig_vals[16], 4); DBG(" Found ig-platform-id = 0x16260006\n"); } break; } // switch (MacModel) { // case MacBook81: //devprop_add_value(device, "AAPL,ig-tcon-scaler", broadwell_hd_vals[0], 4); // break; // default: // break; // } //devprop_add_value(device, "graphic-options", broadwell_hd_vals[1], 4); break; //------------Cherryview/Braswell----------- case 0x22B0: // "Intel HD Graphics 400" // Cherry Trail - Atom x5 series - Z83X0/Z8550 case 0x22B1: // "Intel HD Graphics 405" // Cherry Trail - Atom x7 series - Z8750 case 0x22B2: // "Intel HD Graphics 400" // Braswell - Cerelon QC/DC series - X3X60 case 0x22B3: // "Intel HD Graphics 405" // Braswell - Pentium QC series - X3710 break; //============== 9th generation ============ //----------------Skylake------------------- //GT1 case 0x1902: // "Intel HD Graphics 510" // Desktop case 0x1906: // "Intel HD Graphics 510" // Mobile case 0x190A: // "Intel Skylake GT1" // case 0x190B: // "Intel HD Graphics 510" // case 0x190E: // "Intel Skylake GT1" // //GT2 case 0x1912: // "Intel HD Graphics 530" // Desktop - iMac17,1 case 0x1916: // "Intel HD Graphics 520" // Mobile case 0x191A: // "Intel Skylake GT2" // case 0x191B: // "Intel HD Graphics 530" // Mobile - MacBookPro13,3 case 0x191D: // "Intel HD Graphics P530" // Workstation, Mobile Workstation case 0x191E: // "Intel HD Graphics 515" // Mobile - MacBook9,1 case 0x1921: // "Intel HD Graphics 520" // //GT2f case 0x1913: // "Intel Skylake GT2f" // case 0x1915: // "Intel Skylake GT2f" // case 0x1917: // "Intel Skylake GT2f" // //GT3 case 0x1923: // "Intel HD Graphics 535" // //GT3e case 0x1926: // "Intel Iris Graphics 540" // Mobile - MacBookPro13,1 case 0x1927: // "Intel Iris Graphics 550" // Mobile - MacBookPro13,2 case 0x192B: // "Intel Iris Graphics 555" // case 0x192D: // "Intel Iris Graphics P555" // Workstation //GT4 case 0x192A: // "Intel Skylake GT4" // //GT4e case 0x1932: // "Intel Iris Pro Graphics 580" // Desktop case 0x193A: // "Intel Iris Pro Graphics P580" // Server case 0x193B: // "Intel Iris Pro Graphics 580" // Mobile case 0x193D: // "Intel Iris Pro Graphics P580" // Workstation, Mobile Workstation switch (gma_dev->device_id) { case 0x1902: case 0x1906: if (!SetFake) { FakeID = 0x19028086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19028086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } break; case 0x1912: if (!SetFake) { FakeID = 0x19128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[1], 4); DBG(" Found ig-platform-id = 0x19120000\n"); } break; case 0x1916: case 0x1921: if (!SetFake) { FakeID = 0x19168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } break; case 0x191B: case 0x191D: case 0x1923: if (!SetFake) { FakeID = 0x191B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x191B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[6], 4); DBG(" Found ig-platform-id = 0x191B0000\n"); } break; case 0x191E: if (!SetFake) { FakeID = 0x191E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x191E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[8], 4); DBG(" Found ig-platform-id = 0x191E0000\n"); } break; case 0x1926: if (!SetFake) { FakeID = 0x19268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[10], 4); DBG(" Found ig-platform-id = 0x19260000\n"); } break; case 0x1927: case 0x192B: case 0x192D: if (!SetFake) { FakeID = 0x19278086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19278086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[14], 4); DBG(" Found ig-platform-id = 0x19270000\n"); } break; case 0x1932: case 0x193A: case 0x193B: case 0x193D: if (!SetFake) { FakeID = 0x193B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x193B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[17], 4); DBG(" Found ig-platform-id = 0x193B0000\n"); } break; default: if (!SetIg) { if (gSettings.Smbios.Mobile) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[1], 4); DBG(" Found ig-platform-id = 0x19120000\n"); } else { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } } break; } // switch (GlobalConfig.IgPlatform) { // case (UINT32)0x19020001: // case (UINT32)0x19120001: // case (UINT32)0x19170001: // case (UINT32)0x19320001: // break; // default: // switch (MacModel) { // case MacBook91: //devprop_add_value(device, "AAPL00,PanelCycleDelay", skylake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", skylake_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", skylake_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", skylake_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", skylake_hd_vals[6], 4); //devprop_add_value(device, "graphic-options", skylake_hd_vals[11], 4); // break; // case MacBookPro131: // case MacBookPro132: // case MacBookPro133: // it has only the "graphic-options" value. However, we use built-in graphics. //devprop_add_value(device, "AAPL,Gfx324", skylake_hd_vals[0], 4); //devprop_add_value(device, "AAPL00,PanelCycleDelay", skylake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", skylake_hd_vals[7], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", skylake_hd_vals[8], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", skylake_hd_vals[9], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", skylake_hd_vals[10], 4); //devprop_add_value(device, "graphic-options", skylake_hd_vals[11], 4); // break; // default: // break; // } // break; // } // if wakes up with an HDMI connected, sometimes this value causes force reboot in 10.14+ if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.14"_XS8) ) { devprop_add_value(device, "AAPL,GfxYTile", skylake_hd_vals[1], 4); } break; //----------------Goldmont------------------ case 0x0A84: // "Intel HD Graphics" // Broxton(cancelled) case 0x1A84: // "Intel HD Graphics" // Broxton(cancelled) case 0x1A85: // "Intel HD Graphics" // Broxton(cancelled) case 0x5A84: // "Intel HD Graphics 505" // Apollo Lake case 0x5A85: // "Intel HD Graphics 500" // Apollo Lake break; //----------------Kaby Lake----------------- //GT1 case 0x5902: // "Intel HD Graphics 610" // Desktop case 0x5906: // "Intel HD Graphics 610" // Mobile case 0x5908: // "Intel Kaby Lake GT1" // case 0x590A: // "Intel Kaby Lake GT1" // case 0x590B: // "Intel Kaby Lake GT1" // case 0x590E: // "Intel Kaby Lake GT1" // //GT1.5 case 0x5913: // "Intel Kaby Lake GT1.5" // case 0x5915: // "Intel Kaby Lake GT1.5" // //GT2 case 0x5912: // "Intel HD Graphics 630" // Desktop - iMac18,2/iMac18,3 case 0x5916: // "Intel HD Graphics 620" // Mobile case 0x591A: // "Intel HD Graphics P630" // Server case 0x591B: // "Intel HD Graphics 630" // Mobile - MacBookPro14,3 case 0x591D: // "Intel HD Graphics P630" // Workstation, Mobile Workstation case 0x591E: // "Intel HD Graphics 615" // Mobile - MacBook10,1 //GT2F case 0x5921: // "Intel Kaby Lake GT2F" // //GT3 case 0x5923: // "Intel HD Graphics 635" // case 0x5926: // "Intel Iris Plus Graphics 640" // Mobile - MacBookPro14,1/iMac18,1 case 0x5927: // "Intel Iris Plus Graphics 650" // Mobile - MacBookPro14,2 //GT4 case 0x593B: // "Intel Kaby Lake GT4" // //-------------Kaby Lake Refresh------------ //GT1.5 case 0x5917: // "Intel UHD Graphics 620" // Mobile //----------------Amber Lake---------------- //GT2 case 0x591C: // "Intel UHD Graphics 615" // Kaby Lake case 0x87C0: // "Intel UHD Graphics 617" // Kaby Lake - Mobile - MacBookAir8,1 case 0x87CA: // "Intel UHD Graphics 615" // Comet Lake switch (gma_dev->device_id) { case 0x5902: case 0x5906: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8) ) { if (!SetFake) { FakeID = 0x19028086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19028086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } } else { if (!SetFake) { FakeID = 0x59028086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59028086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x59160000\n"); } } break; case 0x5912: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x19128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[1], 4); DBG(" Found ig-platform-id = 0x19120000\n"); } } else { if (!SetFake) { FakeID = 0x59128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x59120000\n"); } } break; case 0x5916: case 0x5917: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x19168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } } else { if (!SetFake) { FakeID = 0x59168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x59160000\n"); } } break; case 0x591A: case 0x591B: case 0x591D: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x191B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x191B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[6], 4); DBG(" Found ig-platform-id = 0x191B0000\n"); } } else { if (!SetFake) { FakeID = 0x591B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x591B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[5], 4); DBG(" Found ig-platform-id = 0x591B0000\n"); } } break; case 0x591C: case 0x591E: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x191E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x191E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[8], 4); DBG(" Found ig-platform-id = 0x191E0000\n"); } } else { if (!SetFake) { FakeID = 0x591E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x591E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[8], 4); DBG(" Found ig-platform-id = 0x591E0000\n"); } } break; case 0x5923: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x19168086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19168086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x19160000\n"); } } else { if (!SetFake) { FakeID = 0x59238086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59238086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[10], 4); DBG(" Found ig-platform-id = 0x59230000\n"); } } break; case 0x5926: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x19268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[10], 4); DBG(" Found ig-platform-id = 0x19260000\n"); } } else { if (!SetFake) { FakeID = 0x59268086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59268086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[11], 4); DBG(" Found ig-platform-id = 0x59260000\n"); } } break; case 0x5927: if (macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x19278086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x19278086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[14], 4); DBG(" Found ig-platform-id = 0x19270000\n"); } } else { if (!SetFake) { FakeID = 0x59278086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59278086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[14], 4); DBG(" Found ig-platform-id = 0x59270000\n"); } } break; case 0x87C0: case 0x87CA: if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.12.6"_XS8)) { if (!SetFake) { FakeID = 0x191E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x191E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", skylake_ig_vals[8], 4); DBG(" Found ig-platform-id = 0x191E0000\n"); } } else if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.14"_XS8)) { if (!SetFake) { FakeID = 0x591E8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x591E8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[8], 4); DBG(" Found ig-platform-id = 0x591E0000\n"); } } else { if (!SetFake) { FakeID = 0x87C08086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x87C08086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[17], 4); DBG(" Found ig-platform-id = 0x87C00000\n"); } } break; default: if (!SetIg) { if (gSettings.Smbios.Mobile) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x59120000\n"); } else { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x59160000\n"); } } break; } // switch (GlobalConfig.IgPlatform) { // case (UINT32)0x59120003: // case (UINT32)0x59180002: // break; // default: // switch (MacModel) { // case MacBook101: // case MacBookAir81: //devprop_add_value(device, "AAPL00,PanelCycleDelay", kabylake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", kabylake_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", kabylake_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", kabylake_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", kabylake_hd_vals[6], 4); //devprop_add_value(device, "graphic-options", kabylake_hd_vals[11], 4); // break; // case MacBookPro141: // case MacBookPro142: // case MacBookPro143: // it has only the "graphic-options" value. However, we use built-in graphics. //devprop_add_value(device, "AAPL,Gfx324", kabylake_hd_vals[0], 4); //devprop_add_value(device, "AAPL00,PanelCycleDelay", kabylake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", kabylake_hd_vals[7], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", kabylake_hd_vals[8], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", kabylake_hd_vals[9], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", kabylake_hd_vals[10], 4); //devprop_add_value(device, "graphic-options", kabylake_hd_vals[11], 4); // break; // default: // break; // } // break; // } // if wakes up with an HDMI connected, sometimes this value causes force reboot in 10.14+ if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.14"_XS8)) { devprop_add_value(device, "AAPL,GfxYTile", kabylake_hd_vals[1], 4); } break; //----------------Coffee Lake--------------- //GT1 case 0x3E90: // "Intel UHD Graphics 610" // Desktop case 0x3E93: // "Intel UHD Graphics 610" // Desktop case 0x3E99: // "Intel Coffee Lake GT1" // //GT2 case 0x3E91: // "Intel UHD Graphics 630" // Desktop case 0x3E92: // "Intel UHD Graphics 630" // Desktop case 0x3E94: // "Intel Coffee Lake GT2" // case 0x3E96: // "Intel Coffee Lake GT2" // case 0x3E98: // "Intel UHD Graphics 630" // Desktop - iMac19,1 case 0x3E9A: // "Intel Coffee Lake GT2" // case 0x3E9B: // "Intel UHD Graphics 630" // Mobile - MacBookPro15,1/Macmini8,1/iMac19,2 case 0x3EA9: // "Intel Coffee Lake GT2" // //GT3 case 0x3EA5: // "Intel Iris Plus Graphics 655" // Mobile - MacBookPro15,2 case 0x3EA6: // "Intel Coffee Lake GT3" // case 0x3EA7: // "Intel Coffee Lake GT3" // case 0x3EA8: // "Intel Coffee Lake GT3" // //----------------Whiskey Lake-------------- //GT1 case 0x3EA1: // "Intel Whiskey Lake GT1" // case 0x3EA4: // "Intel Whiskey Lake GT1" // //GT2 case 0x3EA0: // "Intel UHD Graphics 620" // Mobile case 0x3EA3: // "Intel Whiskey Lake GT2" // //GT3 case 0x3EA2: // "Intel Whiskey Lake GT3" // //----------------Comet Lake---------------- //GT1 case 0x9B21: // "Intel Comet Lake GT1" // case 0x9BA0: // "Intel Comet Lake GT1" // case 0x9BA2: // "Intel Comet Lake GT1" // case 0x9BA4: // "Intel Comet Lake GT1" // case 0x9BA5: // "Intel Comet Lake GT1" // case 0x9BA8: // "Intel Comet Lake GT1" // case 0x9BAA: // "Intel Comet Lake GT1" // case 0x9BAB: // "Intel Comet Lake GT1" // case 0x9BAC: // "Intel Comet Lake GT1" // //GT2 case 0x9B41: // "Intel UHD Graphics 620" // Mobile case 0x9BC0: // "Intel Comet Lake GT2" // case 0x9BC2: // "Intel Comet Lake GT2" // case 0x9BC4: // "Intel Comet Lake GT2" // case 0x9BC5: // "Intel Comet Lake GT2" // case 0x9BC8: // "Intel Comet Lake GT2" // case 0x9BCA: // "Intel UHD Graphics 620" // Mobile case 0x9BCB: // "Intel Comet Lake GT2" // case 0x9BCC: // "Intel Comet Lake GT2" // switch (gma_dev->device_id) { case 0x3E90: case 0x3E93: if (( macOSVersion >= MacOsVersion("10.14"_XS8)) || (( macOSVersion == MacOsVersion("10.13.6"_XS8)) && (BuildVersion.contains("17G2") || FileExists(RootDir, CFLFBPath)))) { if (!SetFake) { FakeID = 0x3E908086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x3E908086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x3E920000\n"); } } else { if (!SetFake) { FakeID = 0x59028086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59028086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x59160000\n"); } } break; case 0x3E91: if (( macOSVersion >= MacOsVersion("10.14"_XS8)) || (( macOSVersion == MacOsVersion("10.13.6"_XS8)) && (BuildVersion.contains("17G2") || FileExists(RootDir, CFLFBPath)))) { if (!SetFake) { FakeID = 0x3E918086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x3E918086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x3E920000\n"); } } else { if (!SetFake) { FakeID = 0x59128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x59120000\n"); } } break; case 0x3E92: case 0x3E98: if (( macOSVersion >= MacOsVersion("10.14"_XS8)) || (( macOSVersion == MacOsVersion("10.13.6"_XS8)) && (BuildVersion.contains("17G2") || FileExists(RootDir, CFLFBPath)))) { if (!SetFake) { FakeID = 0x3E928086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x3E928086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x3E920000\n"); } } else { if (!SetFake) { FakeID = 0x59128086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59128086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x59120000\n"); } } break; case 0x3E9B: case 0x3EA0: case 0x9B41: case 0x9BCA: if (( macOSVersion >= MacOsVersion("10.14"_XS8)) || (( macOSVersion == MacOsVersion("10.13.6"_XS8)) && (BuildVersion.contains("17G2") || FileExists(RootDir, CFLFBPath)))) { if (!SetFake) { FakeID = 0x3E9B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x3E9B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[6], 4); DBG(" Found ig-platform-id = 0x3E9B0000\n"); } } else { if (!SetFake) { FakeID = 0x591B8086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x591B8086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[5], 4); DBG(" Found ig-platform-id = 0x591B0000\n"); } } break; case 0x3EA5: if (( macOSVersion >= MacOsVersion("10.14"_XS8)) || (( macOSVersion == MacOsVersion("10.13.6"_XS8)) && (BuildVersion.contains("17G2") || FileExists(RootDir, CFLFBPath)))) { if (!SetFake) { FakeID = 0x3EA58086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x3EA58086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[10], 4); DBG(" Found ig-platform-id = 0x3EA50000\n"); } } else { if (!SetFake) { FakeID = 0x59278086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x59278086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", kabylake_ig_vals[14], 4); DBG(" Found ig-platform-id = 0x59270000\n"); } } break; default: if (!SetIg) { if (gSettings.Smbios.Mobile) { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[6], 4); DBG(" Found ig-platform-id = 0x3E9B0000\n"); } else { devprop_add_value(device, "AAPL,ig-platform-id", coffeelake_ig_vals[2], 4); DBG(" Found ig-platform-id = 0x3E920000\n"); } } break; } switch (GlobalConfig.IgPlatform) { case (UINT32)0x3E910003: case (UINT32)0x3E920003: case (UINT32)0x3E980003: break; default: switch (MacModel) { case MacBookPro151: // it has only the "graphic-options" value. However, we use built-in graphics. case MacBookPro152: //devprop_add_value(device, "AAPL,Gfx324", coffeelake_hd_vals[0], 4); //devprop_add_value(device, "AAPL00,PanelCycleDelay", coffeelake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", coffeelake_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", coffeelake_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", coffeelake_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", coffeelake_hd_vals[6], 4); //devprop_add_value(device, "graphic-options", coffeelake_hd_vals[7], 4); break; case MacMini81: //devprop_add_value(device, "graphic-options", coffeelake_hd_vals[7], 4); break; default: break; } break; } // if wakes up with an HDMI connected, somtimes this value causes force reboot in 10.14+ if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.14"_XS8)) { devprop_add_value(device, "AAPL,GfxYTile", coffeelake_hd_vals[1], 4); } break; //----------------Gemini Lake--------------- case 0x3184: // "Intel UHD Graphics 605" // case 0x3185: // "Intel UHD Graphics 600" // break; //============== 10th generation =========== //----------------Cannonlake---------------- //GTx case 0x5A40: // "Intel Cannonlake GTx" // //GT0.5 case 0x5A49: // "Intel Cannonlake GT0.5" // case 0x5A4A: // "Intel Cannonlake GT0.5" // //GT1 case 0x0A01: // "Intel Cannonlake GT1" // Desktop case 0x5A41: // "Intel Cannonlake GT1" // case 0x5A42: // "Intel Cannonlake GT1" // case 0x5A44: // "Intel Cannonlake GT1" // //GT1.5 case 0x5A59: // "Intel Cannonlake GT1.5" // case 0x5A5A: // "Intel Cannonlake GT1.5" // case 0x5A5C: // "Intel Cannonlake GT1.5" // //GT2 case 0x5A50: // "Intel Cannonlake GT2" // case 0x5A51: // "Intel Cannonlake GT2" // case 0x5A52: // "Intel Cannonlake GT2" // Mobile case 0x5A54: // "Intel Cannonlake GT2" // Mobile switch (gma_dev->device_id) { case 0x0A01: if (!SetFake) { FakeID = 0x0A018086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x0A018086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[0], 4); DBG(" Found ig-platform-id = 0x0A010000\n"); } break; case 0x5A40: if (!SetFake) { FakeID = 0x5A408086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A408086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[1], 4); DBG(" Found ig-platform-id = 0x5A400000\n"); } break; case 0x5A41: if (!SetFake) { FakeID = 0x5A418086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A418086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[3], 4); DBG(" Found ig-platform-id = 0x5A410000\n"); } break; case 0x5A49: if (!SetFake) { FakeID = 0x5A498086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A498086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[5], 4); DBG(" Found ig-platform-id = 0x5A490000\n"); } break; case 0x5A50: if (!SetFake) { FakeID = 0x5A508086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A508086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[7], 4); DBG(" Found ig-platform-id = 0x5A500000\n"); } break; case 0x5A51: if (!SetFake) { FakeID = 0x5A518086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A518086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[9], 4); DBG(" Found ig-platform-id = 0x5A510000\n"); } break; case 0x5A52: case 0x5A54: if (!SetFake) { FakeID = 0x5A528086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A528086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[11], 4); DBG(" Found ig-platform-id = 0x5A520000\n"); } break; case 0x5A59: if (!SetFake) { FakeID = 0x5A598086 >> 16; DBG(" Found FakeID Intel GFX = 0x%04x8086\n", FakeID); devprop_add_value(device, "device-id", (UINT8*)&FakeID, 4); FakeID = 0x5A598086 & 0xFFFF; devprop_add_value(device, "vendor-id", (UINT8*)&FakeID, 4); } if (!SetIg) { devprop_add_value(device, "AAPL,ig-platform-id", cannonlake_ig_vals[12], 4); DBG(" Found ig-platform-id = 0x5A590000\n"); } break; default: break; } /*switch (GlobalConfig.IgPlatform) { case (UINT32)0x5A510003: case (UINT32)0x5A520003: break; default: switch (MacModel) { // TODO: need to check ioreg case MacBookPro161: // it has only the "graphic-options" value. However, we use built-in graphics. case MacBookPro162: //devprop_add_value(device, "AAPL,Gfx324", cannonlake_hd_vals[0], 4); //devprop_add_value(device, "AAPL00,PanelCycleDelay", cannonlake_hd_vals[2], 4); //devprop_add_value(device, "AAPL00,PanelPowerDown", cannonlake_hd_vals[3], 4); //devprop_add_value(device, "AAPL00,PanelPowerOff", cannonlake_hd_vals[4], 4); //devprop_add_value(device, "AAPL00,PanelPowerOn", cannonlake_hd_vals[5], 4); //devprop_add_value(device, "AAPL00,PanelPowerUp", cannonlake_hd_vals[6], 4); //devprop_add_value(device, "graphic-options", cannonlake_hd_vals[7], 4); break; default: break; } break; }*/ // if wakes up with an HDMI connected, sometimes this value causes force reboot in 10.14+ if ( macOSVersion.notEmpty() && macOSVersion < MacOsVersion("10.14"_XS8)) { devprop_add_value(device, "AAPL,GfxYTile", cannonlake_hd_vals[1], 4); } break; //============== 11th generation =========== //----------------Ice Lake------------------ //GT0.5 case 0x8A71: // "Intel Ice Lake GT0.5" // //GT1 case 0x8A5B: // "Intel Ice Lake GT1" // case 0x8A5D: // "Intel Ice Lake GT1" // //GT1.5 case 0x8A5A: // "Intel Ice Lake GT1.5" // case 0x8A5C: // "Intel Ice Lake GT1.5" // //GT2 case 0x8A50: // "Intel Ice Lake GT2" // case 0x8A51: // "Intel Ice Lake GT2" // case 0x8A52: // "Intel Ice Lake GT2" // break; //----------------Lakefield----------------- case 0x9840: // "Intel Lakefield" // case 0x9850: // "Intel Lakefield" // break; //----------------Jasper Lake--------------- case 0x4500: // "Intel Jasper Lake" // break; default: DBG(" Intel card id=%hX unsupported, please report to the clover thread\n", gma_dev->device_id); return false; } #if DEBUG_GMA == 2 gBS->Stall(5000000); #endif return true; } //thanks to jalavoui #if 0 /* * Some BIOS implementations leave the Intel GPU interrupts enabled, * even though no one is handling them (f.e. i915 driver is never loaded). * Additionally the interrupt destination is not set up properly * and the interrupt ends up -somewhere-. * * These spurious interrupts are "sticky" and the kernel disables * the (shared) interrupt line after 100.000+ generated interrupts. * * Fix it by disabling the still enabled interrupts. * This resolves crashes often seen on monitor unplug. */ #define I915_DEIER_REG 0x4400c static void disable_igfx_irq(struct pci_dev *dev) { void __iomem *regs = pci_iomap(dev, 0, 0); if (regs == NULL) { dev_warn(&dev->dev, "igfx quirk: Can't iomap PCI device\n"); return; } /* Check if any interrupt line is still enabled */ if (readl(regs + I915_DEIER_REG) != 0) { dev_warn(&dev->dev, "BIOS left Intel GPU interrupts enabled; " "disabling\n"); writel(0, regs + I915_DEIER_REG); } pci_iounmap(dev, regs); } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); #endif