Chameleon

Chameleon Svn Source Tree

Root/branches/Chimera/i386/libsaio/gma.c

1/*
2 * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
3 * All Rights Reserved.
4 * Copyright © 2010 Intel Corporation
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice (including the next
14 * paragraph) shall be included in all copies or substantial portions of the
15 * Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 *
25 */
26
27/*
28Original patch by Nawcom
29http://forum.voodooprojects.org/index.php/topic,1029.0.html
30
31Original Intel HDx000 code from valv
32Intel Ivy Bridge and Haswell code from ErmaC:
33- http://www.insanelymac.com/forum/topic/288241-intel-hd4000-inject-aaplig-platform-id/
34*/
35
36#include "libsa.h"
37#include "saio_internal.h"
38#include "bootstruct.h"
39#include "pci.h"
40#include "platform.h"
41#include "device_inject.h"
42#include "gma.h"
43#include "vbe.h"
44#include "graphics.h"
45
46#ifndef DEBUG_GMA
47#define DEBUG_GMA 0
48#endif
49
50#if DEBUG_GMA
51#define DBG(x...)printf(x)
52#else
53#define DBG(x...)
54#endif
55
56uint8_t GMAX3100_vals[23][4] = {
57{ 0x01,0x00,0x00,0x00 },//0 "AAPL,HasPanel"
58{ 0x01,0x00,0x00,0x00 },//1 "AAPL,SelfRefreshSupported"
59{ 0x01,0x00,0x00,0x00 },//2 "AAPL,aux-power-connected"
60{ 0x00,0x00,0x00,0x08 },//3 "AAPL,backlight-control"
61{ 0x64,0x00,0x00,0x00 },//4 "AAPL00,blackscreen-preferences"
62{ 0x00,0x00,0x00,0x08 },//5 "AAPL01,BacklightIntensity"
63{ 0x01,0x00,0x00,0x00 },//6 "AAPL01,blackscreen-preferences"
64{ 0x20,0x00,0x00,0x00 },//7 "AAPL01,DataJustify"
65{ 0x00,0x00,0x00,0x00 },//8 "AAPL01,Depth"
66{ 0x01,0x00,0x00,0x00 },//9 "AAPL01,Dither"
67{ 0x20,0x03,0x00,0x00 },//10 "AAPL01,DualLink"
68{ 0x00,0x00,0x00,0x00 },//11 "AAPL01,Height"
69{ 0x00,0x00,0x00,0x00 },//12 "AAPL01,Interlace"
70{ 0x00,0x00,0x00,0x00 },//13 "AAPL01,Inverter"
71{ 0x08,0x52,0x00,0x00 },//14 "AAPL01,InverterCurrent"
72{ 0x00,0x00,0x00,0x00 },//15 "AAPL01,InverterCurrency"
73{ 0x00,0x00,0x00,0x00 },//16 "AAPL01,LinkFormat"
74{ 0x01,0x00,0x00,0x00 },//17 "AAPL01,LinkType"
75{ 0x01,0x00,0x00,0x00 },//18 "AAPL01,Pipe"
76{ 0x3B,0x00,0x00,0x00 },//19 "AAPL01,PixelFormat"
77{ 0x00,0x00,0x00,0x00 },//20 "AAPL01,Refresh"
78{ 0x6B,0x10,0x00,0x00 },//21 "AAPL01,Stretch"
79{ 0xc8,0x95,0x00,0x00 },//22 "AAPL01,InverterFrequency"
80};
81
82uint8_t ivy_bridge_ig_vals[12][4] = {
83{ 0x00,0x00,0x66,0x01 },//0 "AAPL,ig-platform-id" //FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
84{ 0x01,0x00,0x66,0x01 },//1 "AAPL,ig-platform-id" //FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
85{ 0x02,0x00,0x66,0x01 },//2 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
86{ 0x03,0x00,0x66,0x01 },//3 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2
87{ 0x04,0x00,0x66,0x01 },//4 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
88{ 0x05,0x00,0x62,0x01 },//5 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
89{ 0x06,0x00,0x62,0x01 },//6 "AAPL,ig-platform-id" //FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0
90{ 0x07,0x00,0x62,0x01 },//7 "AAPL,ig-platform-id" //FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0
91{ 0x08,0x00,0x66,0x01 },//8 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
92{ 0x09,0x00,0x66,0x01 },//9 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
93{ 0x0a,0x00,0x66,0x01 },//10 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
94{ 0x0b,0x00,0x66,0x01 }//11 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
95};
96
97uint8_t haswell_ig_vals[16][4] = { /* - TESTING DATA --*/
98{ 0x00,0x00,0x06,0x04 },// 0 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT1
99{ 0x00,0x00,0x06,0x0c },// 1 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT1
100{ 0x00,0x00,0x16,0x04 },// 2 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT2
101{ 0x00,0x00,0x16,0x0a },// 3 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT2
102{ 0x00,0x00,0x16,0x0c },// 4 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT2
103{ 0x00,0x00,0x26,0x04 },// 5 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT3
104{ 0x00,0x00,0x26,0x0a },// 6 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
105{ 0x00,0x00,0x26,0x0c },// 7 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT3
106{ 0x00,0x00,0x26,0x0d }, // 8 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - CRW mobile GT3
107{ 0x02,0x00,0x16,0x04 },// 9 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 1, Ports: 1, FBMem: 1 - mobile GT2
108{ 0x03,0x00,0x22,0x0d }, // 10 "AAPL,ig-platform-id" //FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0 - CRW Desktop GT3
109//{ 0x04,0x00,0x12,0x04 },// ?? "AAPL,ig-platform-id" //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
110{ 0x05,0x00,0x26,0x0a },// 11 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
111{ 0x06,0x00,0x26,0x0a },// 12 "AAPL,ig-platform-id" //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
112{ 0x07,0x00,0x26,0x0d }, // 13 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 4, FBMem: 3 - CRW mobile GT3
113{ 0x08,0x00,0x26,0x0a },// 14 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
114{ 0x08,0x00,0x2e,0x0a },// 15 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT reserved GT3
115};
116
117uint8_t HD2000_vals[16][4] = {
118{ 0x00,0x00,0x00,0x00 }, //0 "AAPL00,PixelFormat"
119{ 0x00,0x00,0x00,0x00 }, //1 "AAPL00,T1"
120{ 0x14,0x00,0x00,0x00 }, //2 "AAPL00,T2"
121{ 0xfa,0x00,0x00,0x00 }, //3 "AAPL00,T3"
122{ 0x2c,0x01,0x00,0x00 }, //4 "AAPL00,T4"
123{ 0x00,0x00,0x00,0x00 }, //5 "AAPL00,T5"
124{ 0x14,0x00,0x00,0x00 }, //6 "AAPL00,T6"
125{ 0xf4,0x01,0x00,0x00 }, //7 "AAPL00,T7"
126{ 0x00,0x00,0x00,0x00 }, //8 "AAPL00,LinkType"
127{ 0x00,0x00,0x00,0x00 }, //9 "AAPL00,LinkFormat"
128{ 0x00,0x00,0x00,0x00 }, //10 "AAPL00,DualLink"
129{ 0x00,0x00,0x00,0x00 }, //11 "AAPL00,Dither"
130{ 0x00,0x00,0x00,0x00 }, //12 "AAPL00,DataJustify"
131{ 0x00,0x00,0x00,0x00 }, //13 "graphic-options"
132{ 0x00,0x00,0x00,0x00 }, //14
133{ 0x01,0x00,0x00,0x00 } //15
134};
135
136uint8_t HD3000_vals[17][4] = {
137{ 0x00,0x00,0x00,0x00 }, //0 "AAPL00,PixelFormat"
138{ 0x00,0x00,0x00,0x00 }, //1 "AAPL00,T1"
139{ 0x14,0x00,0x00,0x00 }, //2 "AAPL00,T2"
140{ 0xfa,0x00,0x00,0x00 }, //3 "AAPL00,T3"
141{ 0x2c,0x01,0x00,0x00 }, //4 "AAPL00,T4"
142{ 0x00,0x00,0x00,0x00 }, //5 "AAPL00,T5"
143{ 0x14,0x00,0x00,0x00 }, //6 "AAPL00,T6"
144{ 0xf4,0x01,0x00,0x00 }, //7 "AAPL00,T7"
145{ 0x00,0x00,0x00,0x00 }, //8 "AAPL00,LinkType"
146{ 0x00,0x00,0x00,0x00 }, //9 "AAPL00,LinkFormat"
147{ 0x00,0x00,0x00,0x00 }, //10 "AAPL00,DualLink"
148{ 0x00,0x00,0x00,0x00 }, //11 "AAPL00,Dither"
149{ 0x00,0x00,0x00,0x00 }, //12 "AAPL00,DataJustify"
150{ 0x00,0x00,0x00,0x00 }, //13 "graphic-options"
151{ 0x00,0x00,0x00,0x00 }, //14
152{ 0x01,0x00,0x00,0x00 }, //15
153{ 0x00,0x00,0x01,0x00 } //16 AAPL,snb-platform-id
154};
155
156uint8_t HD4000_vals[15][4] = {
157{ 0x00,0x00,0x00,0x00 }, //0 "AAPL00,PixelFormat"
158{ 0x00,0x00,0x00,0x00 }, //1 "AAPL00,T1"
159{ 0x01,0x00,0x00,0x00 }, //2 "AAPL00,T2"
160{ 0xc8,0x00,0x00,0x00 }, //3 "AAPL00,T3"
161{ 0xc8,0x00,0x00,0x00 }, //4 "AAPL00,T4"
162{ 0x01,0x00,0x00,0x00 }, //5 "AAPL00,T5"
163{ 0x00,0x00,0x00,0x00 }, //6 "AAPL00,T6"
164{ 0x90,0x01,0x00,0x00 }, //7 "AAPL00,T7"
165{ 0x01,0x00,0x00,0x00 }, //8 "AAPL00,LinkType"
166{ 0x00,0x00,0x00,0x00 }, //9 "AAPL00,LinkFormat"
167{ 0x01,0x00,0x00,0x00 }, //10 "AAPL00,DualLink"
168{ 0x00,0x00,0x00,0x00 }, //11 "AAPL00,Dither"
169{ 0xc3,0x8c,0x64,0x00 }, //12 "AAPL,gray-value"
170{ 0x01,0x00,0x00,0x00 }, //13 "AAPL,gray-page"
171{ 0x0c,0x00,0x00,0x00 } //14 "graphics-options"
172};
173
174// http://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics-qeci/
175uint8_t HDx000_os_info[20] = {
1760x30,0x49,0x01,0x11,0x01,0x10,0x08,0x00,0x00,0x01,
1770x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF
178};
179
180uint8_t HD2000_tbl_info[18] = {
1810x30,0x44,0x02,0x02,0x02,0x02,0x00,0x00,0x00,
1820x00,0x01,0x02,0x02,0x02,0x00,0x01,0x02,0x02
183};
184uint8_t HD2000_os_info[20] = {
1850x30,0x49,0x01,0x11,0x11,0x11,0x08,0x00,0x00,0x01,
1860xf0,0x1f,0x01,0x00,0x00,0x00,0x10,0x07,0x00,0x00
187};
188
189// The following values came from a Sandy Bridge MacBook Air
190uint8_t HD3000_tbl_info[18] = {
1910x30,0x44,0x02,0x02,0x02,0x02,0x00,0x00,0x00,
1920x00,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01
193};
194
195// The following values came from a Sandy Bridge MacBook Air
196uint8_t HD3000_os_info[20] = {
1970x30,0x49,0x01,0x12,0x12,0x12,0x08,0x00,0x00,0x01,
1980xf0,0x1f,0x01,0x00,0x00,0x00,0x10,0x07,0x00,0x00
199};
200
201
202uint8_t reg_TRUE[]= { 0x01, 0x00, 0x00, 0x00 };
203uint8_t reg_FALSE[] = { 0x00, 0x00, 0x00, 0x00 };
204
205// https://en.wikipedia.org/wiki/Comparison_of_Intel_graphics_processing_units#Seventh_generation
206
207/* http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/intel_module.c */
208
209static intel_gfx_info_t intel_gfx_chipsets[] = {
210{GMA_I810, "i810"},
211{GMA_I810_DC100, "i810-dc100"},
212{GMA_I810_E, "i810e"},
213{GMA_I815, "i815"},
214{GMA_I830_M, "i830M"},
215{GMA_845_G, "845G"},
216{GMA_I854, "854"},
217{GMA_I855_GM, "852GM/855GM"},
218{GMA_I865_G, "865G"},
219{GMA_I915_G, "915G"},
220{GMA_E7221_G, "E7221 (i915)"},
221{GMA_I915_GM, "915GM"},
222{GMA_I945_G, "945G"},
223 // 2776 /* Desktop GMA950 */
224 // 2782 /* GMA 915 */
225 // 2792 /* Mobile GMA915 */
226{GMA_I945_GM, "945GM"},
227{GMA_I945_GME, "945GME"},
228 // 27A6 /* Mobile GMA950 */
229 // 29C3 /* Desktop GMA3100 */
230{GMA_PINEVIEW_M, "Pineview GM"},
231{GMA_GMA3150_M, "Pineview GM"}, // A012 /* Mobile GMA3150 */
232{GMA_PINEVIEW_G, "Pineview G"},
233{GMA_GMA3150_D, "Desktop GMA3150"}, // A002 /* Desktop GMA3150 */
234{GMA_I965_G, "965G"},
235{GMA_G35_G, "G35"},
236{GMA_I965_Q, "965Q"},
237{GMA_I946_GZ, "946GZ"},
238{GMA_I965_GM, "965GM"},
239{GMA_I965_GME, "965GME/GLE"},
240{GMA_G33_G, "G33"},
241 // 2A13 /* GMAX3100 */
242 // 2A43 /* GMAX3100 */
243{GMA_Q35_G, "Q35"},
244{GMA_Q33_G, "Q33"},
245{GMA_GM45_GM, "GM45"},
246{GMA_G45_E_G, "4 Series"},
247{GMA_G45_G, "G45/G43"},
248{GMA_Q45_G, "Q45/Q43"},
249{GMA_G41_G, "G41"},
250{GMA_B43_G, "B43"},
251{GMA_B43_G1, "B43"},
252 /**/
253{GMA_IRONLAKE_D_G, HD_GRAPHICS},
254{GMA_IRONLAKE_M_G, HD_GRAPHICS},
255 // 004A /* HD2000 */
256
257 /* Sandy */
258{GMA_SANDYBRIDGE_GT1, HD_GRAPHICS_2000 },
259{GMA_SANDYBRIDGE_GT2, HD_GRAPHICS_3000 },
260{GMA_SANDYBRIDGE_GT2_PLUS, HD_GRAPHICS_3000 },
261{GMA_SANDYBRIDGE_M_GT1, HD_GRAPHICS_2000 },
262{GMA_SANDYBRIDGE_M_GT2, HD_GRAPHICS_3000 },
263{GMA_SANDYBRIDGE_M_GT2_PLUS, HD_GRAPHICS_3000 },
264{GMA_SANDYBRIDGE_S_GT, HD_GRAPHICS },
265 // 010B /* ??? */
266 // 010E /* ??? */
267
268 /* Ivy */
269{GMA_IVYBRIDGE_M_GT1, HD_GRAPHICS_2500 },
270{GMA_IVYBRIDGE_M_GT2, HD_GRAPHICS_4000 },
271{GMA_IVYBRIDGE_D_GT1, HD_GRAPHICS_2500 },
272{GMA_IVYBRIDGE_D_GT2, HD_GRAPHICS_4000 },
273{GMA_IVYBRIDGE_S_GT1, HD_GRAPHICS },
274{GMA_IVYBRIDGE_S_GT2, "HD Graphics P4000" },
275{GMA_IVYBRIDGE_S_GT3, HD_GRAPHICS }, // 015e
276 {GMA_IVYBRIDGE_S_GT4, HD_GRAPHICS_2500 }, // 0172 /* HD Graphics 2500 Mobile */
277 {GMA_IVYBRIDGE_S_GT5, HD_GRAPHICS_2500 }, // 0176 /* HD Graphics 2500 Mobile */
278
279 /* Haswell */
280 // 0090 /* ??? */
281 // 0091 /* ??? */
282 // 0092 /* ??? */
283{GMA_HASWELL_D_GT1, HD_GRAPHICS },
284{GMA_HASWELL_D_GT2, HD_GRAPHICS_4600 },
285{GMA_HASWELL_D_GT3, HD_GRAPHICS_5000 }, /* ??? */
286{GMA_HASWELL_M_GT1, HD_GRAPHICS },
287{GMA_HASWELL_M_GT2, HD_GRAPHICS_4600 },
288{GMA_HASWELL_M_GT3, HD_GRAPHICS_5000 }, /* ??? */
289{GMA_HASWELL_S_GT1, HD_GRAPHICS },
290{GMA_HASWELL_S_GT2, "HD Graphics P4600/P4700" },
291{GMA_HASWELL_S_GT3, HD_GRAPHICS_5000 }, /* ??? */
292{GMA_HASWELL_B_GT1, HD_GRAPHICS }, /* ??? */
293{GMA_HASWELL_B_GT2, HD_GRAPHICS }, /* ??? */
294{GMA_HASWELL_B_GT3, HD_GRAPHICS }, /* ??? */
295{GMA_HASWELL_E_GT1, HD_GRAPHICS },
296{GMA_HASWELL_E_GT2, HD_GRAPHICS }, /* ??? */
297{GMA_HASWELL_E_GT3, HD_GRAPHICS }, /* ??? */
298{GMA_HASWELL_ULT_D_GT1, HD_GRAPHICS }, /* ??? */
299{GMA_HASWELL_ULT_D_GT2, HD_GRAPHICS }, /* ??? */
300{GMA_HASWELL_ULT_D_GT3, IRIS_5100 },
301{GMA_HASWELL_ULT_M_GT1, HD_GRAPHICS },
302{GMA_HASWELL_ULT_M_GT2, HD_GRAPHICS_4400 },
303{GMA_HASWELL_ULT_M_GT3, HD_GRAPHICS_5000 },
304{GMA_HASWELL_ULT_S_GT1, HD_GRAPHICS }, /* ??? */
305{GMA_HASWELL_ULT_S_GT2, HD_GRAPHICS }, /* ??? */
306{GMA_HASWELL_ULT_S_GT3, IRIS_5100 },
307{GMA_HASWELL_ULT_B_GT1, HD_GRAPHICS }, /* ??? */
308{GMA_HASWELL_ULT_B_GT2, HD_GRAPHICS }, /* ??? */
309{GMA_HASWELL_ULT_B_GT3, IRIS_5100 },
310{GMA_HASWELL_ULT_E_GT1, HD_GRAPHICS },
311{GMA_HASWELL_ULT_E_GT2, HD_GRAPHICS_4200 },
312// 0A2A /* ??? */
313{GMA_HASWELL_ULT_E_GT3, IRIS_5100 },
314// 0C02 /* Intel Haswell HD Graphics - GTL */
315// 0C04 /* ??? */
316// 0C06 /* Intel Haswell HD Graphics - GTL */
317// 0C12 /* Intel Haswell HD Graphics - GTM */
318// 0C16 /* Intel Haswell HD Graphics - GTH */
319// 0C22 /* Intel Haswell HD Graphics - GTH */
320// 0C26 /* Intel Haswell HD Graphics - GTH */
321{GMA_HASWELL_CRW_D_GT1, HD_GRAPHICS }, /* ??? */
322{GMA_HASWELL_CRW_D_GT2, HD_GRAPHICS_4600 },
323{GMA_HASWELL_CRW_D_GT3, IRIS_5200 },
324{GMA_HASWELL_CRW_M_GT1, HD_GRAPHICS }, /* ??? */
325{GMA_HASWELL_CRW_M_GT2, HD_GRAPHICS_4600 },
326{GMA_HASWELL_CRW_M_GT3, IRIS_5200 },
327{GMA_HASWELL_CRW_S_GT1, HD_GRAPHICS }, /* ??? */
328{GMA_HASWELL_CRW_S_GT2, HD_GRAPHICS }, /* ??? */
329{GMA_HASWELL_CRW_S_GT3, IRIS_5200 },
330{GMA_HASWELL_CRW_B_GT1, HD_GRAPHICS }, /* ??? */
331{GMA_HASWELL_CRW_B_GT2, HD_GRAPHICS }, /* ??? */
332{GMA_HASWELL_CRW_B_GT3, IRIS_5200 },
333{GMA_HASWELL_CRW_E_GT1, HD_GRAPHICS }, /* ??? */
334{GMA_HASWELL_CRW_E_GT2, HD_GRAPHICS }, /* ??? */
335{GMA_HASWELL_CRW_E_GT3, IRIS_5200 },
336{GMA_HASWELL_CRW_M_GT2_PLUS_IG, HD_GRAPHICS },
337
338 /* Brodwell */
339 {GMA_BRODWELL_BDW_M_GT1,HD_GRAPHICS }, /* 1602 */
340 {GMA_BRODWELL_BDW_M_GT2,HD_GRAPHICS_5600},/* 1612 */
341 {GMA_BRODWELL_BDW_M_GT3e,IRIS_Pro_6200}, /* 1622 */
342 {GMA_BRODWELL_BDW_M_1632,HD_GRAPHICS },/* 1632 */
343 {GMA_BRODWELL_ULT_M_GT1, HD_GRAPHICS }, /* 1606 */
344 {GMA_BRODWELL_ULT_M_GT2, HD_GRAPHICS_5500}, /* 1616 */
345 {GMA_BRODWELL_ULT_M_GT3,HD_GRAPHICS_6000},/* 1626 */
346 {GMA_BRODWELL_ULT_M_1636,HD_GRAPHICS },/* 1636 */
347 {GMA_BRODWELL_BDW_S_GT1, HD_GRAPHICS }, /* 160a */
348 {GMA_BRODWELL_BDW_S_GT2,HD_GRAPHICS },/* 161a */
349 {GMA_BRODWELL_BDW_S_GT3e,IRIS_Pro_P6300}, /* 162a */
350 {GMA_BRODWELL_BDW_S_163A,HD_GRAPHICS },/* 163a */
351 {GMA_BRODWELL_LVT_M_GT1, HD_GRAPHICS }, /* 160b */
352 {GMA_BRODWELL_LVT_M_GT2, HD_GRAPHICS }, /* 161b */
353 {GMA_BRODWELL_LVT_M_GT3,IRIS_6100 },/* 162b */
354 {GMA_BRODWELL_LVT_M_163B,HD_GRAPHICS },/* 163b */
355 {GMA_BRODWELL_BDW_D_GT1,HD_GRAPHICS }, /* 160d */
356 {GMA_BRODWELL_BDW_D_GT2,HD_GRAPHICS },/* 161d */
357 {GMA_BRODWELL_BDW_D_GT3,HD_GRAPHICS },/* 162d */
358 {GMA_BRODWELL_BDW_D_163D,HD_GRAPHICS },/* 163d */
359 {GMA_BRODWELL_ULX_M_GT1, HD_GRAPHICS }, /* 160e */
360 {GMA_BRODWELL_ULX_M_GT2,HD_GRAPHICS_5300},/* 161e */
361 {GMA_BRODWELL_ULX_M_GT3,HD_GRAPHICS },/* 162e */
362 {GMA_BRODWELL_ULX_M_163E,HD_GRAPHICS }/* 163e */
363};
364
365#define GFX_DEVICES_LEN (sizeof(intel_gfx_chipsets) / sizeof(intel_gfx_chipsets[0]))
366
367/* END http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/intel_module.c */
368
369/* Get Intel GFX device name */
370static char *get_gma_controller_name(uint16_t device_id, uint16_t vendor_id)
371{
372int i = 0;
373static char desc[128];
374
375for (i = 0; i < GFX_DEVICES_LEN; i++)
376{
377if (intel_gfx_chipsets[i].model == ((device_id << 16) | vendor_id))
378{
379snprintf(desc, sizeof(desc), "%s %s", INTEL_NAME, intel_gfx_chipsets[i].label_info);
380return desc;
381}
382}
383snprintf(desc, sizeof(desc), "Unknown %s Graphics card", INTEL_NAME);
384return desc;
385}
386
387bool setup_gma_devprop(pci_dt_t *gma_dev)
388{
389char *devicepath = NULL;
390volatile uint8_t *regs;
391uint32_t bar[7];
392char *model = NULL;
393uint8_t BuiltIn = 0x00;
394int len;
395const char *value;
396uint16_t vendor_id = gma_dev->vendor_id;
397uint16_t device_id = gma_dev->device_id;
398uint8_t ClassFix[4] = { 0x00, 0x00, 0x03, 0x00 };
399
400 uint8_t hd3k_kmobile_device_id[4] = { 0x26, 0x01, 0x00, 0x00 }; // MacMan
401 uint8_t hd4k_device_id[4] = { 0x62, 0x01, 0x00, 0x00 }; // MacMan
402 uint8_t hd4400_mobile_device_id[4] = { 0x26, 0x0A, 0x00, 0x00 }; // MacMan
403 uint8_t hd4600_device_id[4] = { 0x12, 0x04, 0x00, 0x00 }; // MacMan
404 uint8_t hd4600_mobile_device_id[4] = { 0x16, 0x04, 0x00, 0x00 }; // MacMan
405 uint8_t igp_device_id[4] = { 0x00, 0x00, 0x00, 0x00 }; // MacMan
406
407 uint8_t snb_id_3k[4] = { 0x10, 0x00, 0x03, 0x00 }; // MacMan
408 uint8_t snb_id_3k_mobile[4] = { 0x00, 0x00, 0x01, 0x00 }; // MacMan
409 uint8_t ig_id_4k[4] = { 0x0A, 0x00, 0x66, 0x01 }; // MacMan
410 uint8_t ig_id_4k_mobile[4] = { 0x03, 0x00, 0x66, 0x01 }; // MacMan
411 uint8_t ig_id_4600[4] = { 0x03, 0x00, 0x22, 0x0D }; // MacMan
412 uint8_t ig_id_4600_mobile[4] = { 0x06, 0x00, 0x26, 0x0A }; // MacMan
413 uint8_t ig_id_5500_mobile[4] = { 0x00, 0x00, 0x16, 0x16 }; // MacMan
414 uint8_t ig_platform_id[4] = { 0x00, 0x00, 0x00, 0x00 }; // MacMan
415
416devicepath = get_pci_dev_path(gma_dev);
417
418bar[0] = pci_config_read32(gma_dev->dev.addr, 0x10);
419regs = (uint8_t *) (bar[0] & ~0x0f);
420
421model = get_gma_controller_name(device_id, vendor_id);
422
423verbose("---------------------------------------------\n");
424 verbose("------------ INTEL DEVICE INFO --------------\n");
425verbose("---------------------------------------------\n");
426verbose("Class code: [%04x]\n%s [%04x:%04x] (rev %02x)\nSubsystem: [%04x:%04x] :: %s\n",
427gma_dev->class_id, model, gma_dev->vendor_id, gma_dev->device_id, gma_dev->revision_id, gma_dev->subsys_id.subsys.vendor_id, gma_dev->subsys_id.subsys.device_id, devicepath);
428
429if (!string) {
430string = devprop_create_string();
431}
432
433struct DevPropDevice *device = devprop_add_device(string, devicepath);
434if (!device) {
435printf("Failed initializing dev-prop string dev-entry.\n");
436pause();
437return false;
438}
439
440devprop_add_value(device, "model", (uint8_t*)model, (strlen(model) + 1));
441devprop_add_value(device, "device_type", (uint8_t*)"display", 8);
442
443
444switch ((device_id << 16) | vendor_id)
445{
446 case GMA_IRONLAKE_D_G: // 0042
447 case GMA_IRONLAKE_M_G: // 0046
448 devprop_add_value(device, "built-in", &BuiltIn, 1);
449 devprop_add_value(device, "class-code", ClassFix, 4);
450 devprop_add_value(device, "hda-gfx",(uint8_t *)"onboard-1", 10);
451 devprop_add_value(device, "AAPL,os-info", HDx000_os_info, 20);
452 break;
453 case GMA_I945_GM: // Mobile GMA950 Mobile GMA3150
454 case GMA_I945_GME:
455 //case GMA_945GM:
456 case GMA_PINEVIEW_G:
457 case GMA_PINEVIEW_M:
458 case GMA_GMA3150_M:
459 devprop_add_value(device, "AAPL,HasPanel", reg_TRUE, 4);
460 devprop_add_value(device, "built-in", &BuiltIn, 1);
461 devprop_add_value(device, "class-code", ClassFix, 4);
462 break;
463
464 case GMA_I945_G: // Desktop GMA950 Desktop GMA3150
465 //case GMA_82945G:
466 case GMA_GMA3150_D:
467 BuiltIn = 0x01;
468 devprop_add_value(device, "built-in", &BuiltIn, 1);
469 devprop_add_value(device, "class-code", ClassFix, 4);
470 break;
471
472 case GMA_I965_GM: // GMAX3100
473 case GMA_I965_GME:
474 //case 0x80862A13:
475 case GMA_GM45_GM:
476 //case GMA_GM45_GM2:
477 devprop_add_value(device, "AAPL,HasPanel", GMAX3100_vals[0], 4);
478 devprop_add_value(device, "AAPL,SelfRefreshSupported", GMAX3100_vals[1], 4);
479 devprop_add_value(device, "AAPL,aux-power-connected", GMAX3100_vals[2], 4);
480 devprop_add_value(device, "AAPL,backlight-control", GMAX3100_vals[3], 4);
481 devprop_add_value(device, "AAPL00,blackscreen-preferences",GMAX3100_vals[4], 4);
482 devprop_add_value(device, "AAPL01,BacklightIntensity", GMAX3100_vals[5], 4);
483 devprop_add_value(device, "AAPL01,blackscreen-preferences",GMAX3100_vals[6], 4);
484 devprop_add_value(device, "AAPL01,DataJustify", GMAX3100_vals[7], 4);
485 devprop_add_value(device, "AAPL01,Depth", GMAX3100_vals[8], 4);
486 devprop_add_value(device, "AAPL01,Dither", GMAX3100_vals[9], 4);
487 devprop_add_value(device, "AAPL01,DualLink", GMAX3100_vals[10], 4);
488 devprop_add_value(device, "AAPL01,Height", GMAX3100_vals[11], 4);
489 devprop_add_value(device, "AAPL01,Interlace", GMAX3100_vals[12], 4);
490 devprop_add_value(device, "AAPL01,Inverter", GMAX3100_vals[13], 4);
491 devprop_add_value(device, "AAPL01,InverterCurrent", GMAX3100_vals[14], 4);
492 devprop_add_value(device, "AAPL01,InverterCurrency", GMAX3100_vals[15], 4);
493 devprop_add_value(device, "AAPL01,LinkFormat", GMAX3100_vals[16], 4);
494 devprop_add_value(device, "AAPL01,LinkType", GMAX3100_vals[17], 4);
495 devprop_add_value(device, "AAPL01,Pipe", GMAX3100_vals[18], 4);
496 devprop_add_value(device, "AAPL01,PixelFormat", GMAX3100_vals[19], 4);
497 devprop_add_value(device, "AAPL01,Refresh", GMAX3100_vals[20], 4);
498 devprop_add_value(device, "AAPL01,Stretch", GMAX3100_vals[21], 4);
499 //devprop_add_value(device, "AAPL01,InverterFrequency",GMAX3100_vals[22], 4);
500 devprop_add_value(device, "class-code", ClassFix, 4);
501 break;
502
503 case GMA_SANDYBRIDGE_GT1: // HD Graphics 2000, found in kext
504 devprop_add_value(device, "built-in",&BuiltIn, 1);
505 devprop_add_value(device, "class-code",ClassFix, 4);
506 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
507 devprop_add_value(device, "hda-gfx",(uint8_t *)"onboard-1", 10);
508 devprop_add_value(device, "AAPL,tbl-info",HD2000_tbl_info, 18);
509 devprop_add_value(device, "AAPL,os-info",HD2000_os_info, 20);
510 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
511 {
512 verbose("Setting 0x%s for snb-platform-id\n", value);
513 hex2devprop(value, ig_platform_id, 4);
514 devprop_add_value(device, "AAPL,snb-platform-id", ig_platform_id, 4);
515 }
516 else
517 {
518 devprop_add_value(device, "AAPL,snb-platform-id", snb_id_3k, 4);
519 verbose("Using default snb-platform-id of 0x00030010\n");
520 }
521 break;
522
523 case GMA_SANDYBRIDGE_M_GT1: // HD Graphics 2000 Mobile, found in kext
524 devprop_add_value(device, "class-code", ClassFix, 4);
525 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
526 devprop_add_value(device, "hda-gfx",(uint8_t *)"onboard-1", 10);
527 devprop_add_value(device, "AAPL00,PixelFormat",HD2000_vals[0], 4);
528 devprop_add_value(device, "AAPL00,T1", HD2000_vals[1], 4);
529 devprop_add_value(device, "AAPL00,T2", HD2000_vals[2], 4);
530 devprop_add_value(device, "AAPL00,T3", HD2000_vals[3], 4);
531 devprop_add_value(device, "AAPL00,T4", HD2000_vals[4], 4);
532 devprop_add_value(device, "AAPL00,T5", HD2000_vals[5], 4);
533 devprop_add_value(device, "AAPL00,T6", HD2000_vals[6], 4);
534 devprop_add_value(device, "AAPL00,T7", HD2000_vals[7], 4);
535 devprop_add_value(device, "AAPL00,LinkType",HD2000_vals[8], 4);
536 devprop_add_value(device, "AAPL00,LinkFormat",HD2000_vals[9], 4);
537 devprop_add_value(device, "AAPL00,DualLink",HD2000_vals[10], 4);
538 devprop_add_value(device, "AAPL00,Dither",HD2000_vals[11], 4);
539 devprop_add_value(device, "AAPL00,DataJustify",HD2000_vals[12], 4);
540 devprop_add_value(device, "graphic-options",HD2000_vals[13], 4);
541 devprop_add_value(device, "AAPL,tbl-info",HD2000_tbl_info, 18);
542 devprop_add_value(device, "AAPL,os-info",HD2000_os_info, 20);
543 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
544 {
545 verbose("Setting 0x%s for snb-platform-id\n", value);
546 hex2devprop(value, ig_platform_id, 4);
547 devprop_add_value(device, "AAPL,snb-platform-id", ig_platform_id, 4);
548 }
549 else
550 {
551 devprop_add_value(device, "AAPL,snb-platform-id", snb_id_3k_mobile, 4);
552 verbose("Using default snb-platform-id of 0x00030010\n");
553 }
554 break;
555
556 case GMA_SANDYBRIDGE_GT2: // HD Graphics 3000
557 case GMA_SANDYBRIDGE_GT2_PLUS: // HD Graphics 3000
558 devprop_add_value(device, "built-in",&BuiltIn, 1);
559 devprop_add_value(device, "class-code",ClassFix, 4);
560 devprop_add_value(device, "hda-gfx",(uint8_t *)"onboard-1", 10);
561 devprop_add_value(device, "AAPL,tbl-info",HD3000_tbl_info, 18);
562 devprop_add_value(device, "AAPL,os-info",HD3000_os_info, 20);
563 if (getValueForKey(kIGPDeviceID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
564 {
565 verbose("Using 0x%s for unsupported device id injection.\n", value);
566 hex2devprop(value, igp_device_id, 2);
567 devprop_add_value(device, "device-id",igp_device_id, 4);
568 }
569 else
570 {
571 devprop_add_value(device, "device-id", hd3k_kmobile_device_id, 4); // MacMan Inject Mobile ID Instead of Patching Kext
572 verbose("Using default unsupported device id injection of 0x0126\n");
573 }
574 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
575 {
576 verbose("Using 0x%s for snb-platform-id\n", value);
577 hex2devprop(value, ig_platform_id, 4);
578 devprop_add_value(device, "AAPL,snb-platform-id", ig_platform_id, 4);
579 }
580 else
581 {
582 devprop_add_value(device, "AAPL,snb-platform-id", snb_id_3k, 4);
583 verbose("Using default snb-platform-id of 0x00030010\n");
584 }
585 break;
586
587 case GMA_SANDYBRIDGE_M_GT2: // HD Graphics 3000 Mobile, found in kext
588 case GMA_SANDYBRIDGE_M_GT2_PLUS: // HD Graphics 3000 Mobile, found in kext
589 devprop_add_value(device, "class-code", ClassFix, 4);
590 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
591 devprop_add_value(device, "hda-gfx",(uint8_t *)"onboard-1", 10);
592 devprop_add_value(device, "AAPL00,PixelFormat",HD3000_vals[0], 4);
593 devprop_add_value(device, "AAPL00,T1", HD3000_vals[1], 4);
594 devprop_add_value(device, "AAPL00,T2", HD3000_vals[2], 4);
595 devprop_add_value(device, "AAPL00,T3", HD3000_vals[3], 4);
596 devprop_add_value(device, "AAPL00,T4", HD3000_vals[4], 4);
597 devprop_add_value(device, "AAPL00,T5", HD3000_vals[5], 4);
598 devprop_add_value(device, "AAPL00,T6", HD3000_vals[6], 4);
599 devprop_add_value(device, "AAPL00,T7", HD3000_vals[7], 4);
600 devprop_add_value(device, "AAPL00,LinkType",HD3000_vals[8], 4);
601 devprop_add_value(device, "AAPL00,LinkFormat",HD3000_vals[9], 4);
602 devprop_add_value(device, "AAPL00,DualLink",HD3000_vals[10], 4);
603 devprop_add_value(device, "AAPL00,Dither",HD3000_vals[11], 4);
604 devprop_add_value(device, "AAPL00,DataJustify",HD3000_vals[12], 4);
605 devprop_add_value(device, "graphic-options",HD3000_vals[13], 4);
606 devprop_add_value(device, "AAPL,tbl-info",HD3000_tbl_info, 18);
607 devprop_add_value(device, "AAPL,os-info",HD3000_os_info, 20);
608 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
609 {
610 verbose("Setting 0x%s for snb-platform-id\n", value);
611 hex2devprop(value, ig_platform_id, 4);
612 devprop_add_value(device, "AAPL,snb-platform-id", ig_platform_id, 4);
613 }
614 else
615 {
616 devprop_add_value(device, "AAPL,snb-platform-id", snb_id_3k_mobile, 4);
617 verbose("Using default snb-platform-id of 0x00010000\n");
618 }
619 break;
620
621 //
622 // Supported Ivy Bridge Desktop Device IDs
623 //
624 case GMA_IVYBRIDGE_D_GT1: // HD Graphics 2500, found in kext
625 case GMA_IVYBRIDGE_D_GT2: // HD Graphics 4000, found in kext
626// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
627 devprop_add_value(device, "built-in", &BuiltIn, 1);
628 devprop_add_value(device, "class-code", ClassFix, 4);
629 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
630 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
631 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
632 {
633 verbose("Using 0x%s for ig-platform-id\n", value);
634 hex2devprop(value, ig_platform_id, 4);
635 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
636 }
637 else
638 {
639 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4k, 4);
640 verbose("Using default ig-platform-id of 0x0166000a\n");
641 }
642 break;
643
644 //
645 // Supported Ivy Bridge Mobile Device IDs
646 //
647 case GMA_IVYBRIDGE_M_GT1: // HD Graphics 2500 Mobile, found in kext
648 case GMA_IVYBRIDGE_M_GT2: // HD Graphics 4000 Mobile, found in kext
649// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
650 devprop_add_value(device, "built-in", &BuiltIn, 1);
651 devprop_add_value(device, "class-code", ClassFix, 4);
652 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
653 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
654 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
655 {
656 verbose("Using 0x%s for ig-platform-id\n", value);
657 hex2devprop(value, ig_platform_id, 4);
658 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
659 }
660 else
661 {
662 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4k_mobile, 4);
663 verbose("Using default ig-platform-id of 0x01660003\n");
664 }
665 break;
666
667 //
668 // Unsupported Ivy Bridge Desktop Device IDs
669 //
670 case GMA_IVYBRIDGE_S_GT1: // HD Graphics 4000
671 case GMA_IVYBRIDGE_S_GT2: // HD Graphics P4000
672 case GMA_IVYBRIDGE_S_GT3: // Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
673 case GMA_IVYBRIDGE_S_GT4: // HD Graphics 2500 // Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
674 case GMA_IVYBRIDGE_S_GT5: // HD Graphics 2500 // 3rd Gen Core processor Graphics Controller
675// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
676 devprop_add_value(device, "built-in", &BuiltIn, 1);
677 devprop_add_value(device, "class-code", ClassFix, 4);
678 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
679 if (getValueForKey(kIGPDeviceID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
680 {
681 verbose("Using %s for unsupported device id injection.\n", value);
682 hex2devprop(value, igp_device_id, 2);
683 devprop_add_value(device, "device-id",igp_device_id, 4);
684 }
685 else
686 {
687 devprop_add_value(device, "device-id", hd4k_device_id, 4); // MacMan Inject Supported ID Instead of Patching Kext
688 verbose("Using default unsupported device id injection of 0162\n");
689 }
690 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
691 {
692 verbose("Using 0x%s for ig-platform-id\n", value);
693 hex2devprop(value, ig_platform_id, 4);
694 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
695 }
696 else
697 {
698 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4k, 4);
699 verbose("Using default ig-platform-id of 0x0166000a\n");
700 }
701 break;
702
703 //
704 // Supported Haswell Desktop Device IDs
705 //
706 case GMA_HASWELL_D_GT2: // HD Graphics 4600, found in kext
707 case GMA_HASWELL_CRW_D_GT3: // HD Graphics 5200 Iris Pro and found in kext
708// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
709 devprop_add_value(device, "built-in", &BuiltIn, 1);
710 devprop_add_value(device, "class-code", ClassFix, 4);
711 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
712 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
713 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
714 {
715 verbose("Using 0x%s for ig-platform-id\n", value);
716 hex2devprop(value, ig_platform_id, 4);
717 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
718 }
719 else
720 {
721 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4600, 4);
722 verbose("Using default ig-platform-id of 0x0d220003\n");
723 }
724 break;
725
726 //
727 // Supported Haswell Mobile Device IDs
728 //
729 case GMA_HASWELL_M_GT1: // HD Graphics Mobile, found in kext
730 case GMA_HASWELL_M_GT2: // HD Graphics 4600 Mobile, found in kext
731 case GMA_HASWELL_M_GT3: // HD Graphics 5000 Mobile, found in kext
732 case GMA_HASWELL_ULT_M_GT2: // HD Graphics 4400 Mobile, found in kext
733 case GMA_HASWELL_ULT_M_GT3: // HD Graphics 5000 Iris Mobile, found in kext
734 case GMA_HASWELL_ULT_E_GT2: // HD Graphics 4200 Mobile, found in kext
735 case GMA_HASWELL_ULT_E_GT3: // HD Graphics 5100 Iris Mobile, found in kext
736 case GMA_HASWELL_CRW_M_GT3: // HD Graphics 5200 Iris Pro Mobile and found in kext
737// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
738 devprop_add_value(device, "built-in", &BuiltIn, 1);
739 devprop_add_value(device, "class-code", ClassFix, 4);
740 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
741 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
742 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
743 {
744 verbose("Using 0x%s for ig-platform-id\n", value);
745 hex2devprop(value, ig_platform_id, 4);
746 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
747 }
748 else
749 {
750 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4600_mobile, 4);
751 verbose("Using default ig-platform-id of 0x0a260006\n");
752 }
753 break;
754
755 //
756 // Unsupported Haswell Desktop Device IDs
757 //
758 //case 0x80860090:
759 //case 0x80860091:
760 //case 0x80860092:
761 case GMA_HASWELL_D_GT1: // HD Graphics
762 case GMA_HASWELL_D_GT3: // HD Graphics 5000
763 case GMA_HASWELL_S_GT1: // HD Graphics
764 case GMA_HASWELL_S_GT2: // HD Graphics
765 case GMA_HASWELL_S_GT3: //
766 case GMA_HASWELL_B_GT1: //
767 case GMA_HASWELL_B_GT2: // HD Graphics
768 case GMA_HASWELL_B_GT3: //
769 case GMA_HASWELL_E_GT1: //
770 case GMA_HASWELL_E_GT3: //
771 case GMA_HASWELL_ULT_D_GT1: //
772 case GMA_HASWELL_ULT_D_GT2: //
773 case GMA_HASWELL_ULT_D_GT3: // HD Graphics 5000 Iris
774 case GMA_HASWELL_ULT_S_GT1: //
775 case GMA_HASWELL_ULT_S_GT2: //
776 case GMA_HASWELL_ULT_S_GT3: //
777 case GMA_HASWELL_ULT_B_GT1: //
778 case GMA_HASWELL_ULT_B_GT2: //
779 case GMA_HASWELL_ULT_B_GT3: //
780 case GMA_HASWELL_ULT_E_GT1: // HD Graphics
781 //case GMA_HASWELL_SDV_D_GT1_IG: //
782 //case GMA_HASWELL_SDV_D_GT2_IG: //
783 //case GMA_HASWELL_SDV_D_GT2_PLUS_IG: //
784 case GMA_HASWELL_CRW_D_GT1: //
785 case GMA_HASWELL_CRW_D_GT2: // HD Graphics
786 case GMA_HASWELL_CRW_S_GT1: //
787 case GMA_HASWELL_CRW_S_GT2: //
788 case GMA_HASWELL_CRW_S_GT3: // HD Graphics Iris Pro
789 case GMA_HASWELL_CRW_B_GT1: //
790 case GMA_HASWELL_CRW_B_GT2: //
791 case GMA_HASWELL_CRW_B_GT3: //
792 case GMA_HASWELL_CRW_E_GT1: //
793 case GMA_HASWELL_CRW_E_GT2: //
794 case GMA_HASWELL_CRW_E_GT3: //
795// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
796 devprop_add_value(device, "built-in", &BuiltIn, 1);
797 devprop_add_value(device, "class-code", ClassFix, 4);
798 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
799 if (getValueForKey(kIGPDeviceID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
800 {
801 verbose("Using 0x%s for unsupported device id injection.\n", value);
802 hex2devprop(value, igp_device_id, 2);
803 devprop_add_value(device, "device-id",igp_device_id, 4);
804 }
805 else
806 {
807 devprop_add_value(device, "device-id", hd4600_device_id, 4); // MacMan Inject Supported ID Instead of Patching Kext
808 verbose("Using default unsupported device id injection of 0x0412\n");
809 }
810 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
811 {
812 verbose("Using 0x%s for ig-platform-id\n", value);
813 hex2devprop(value, ig_platform_id, 4);
814 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
815 }
816 else
817 {
818 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4600, 4);
819 verbose("Using default ig-platform-id of 0x0d220003\n");
820 }
821 break;
822
823 case GMA_HASWELL_E_GT2: // HD Graphics 4400
824 devprop_add_value(device, "built-in", &BuiltIn, 1);
825 devprop_add_value(device, "class-code", ClassFix, 4);
826 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
827 if (getValueForKey(kIGPDeviceID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
828 {
829 verbose("Using 0x%s for unsupported device id injection.\n", value);
830 hex2devprop(value, igp_device_id, 2);
831 devprop_add_value(device, "device-id",igp_device_id, 4);
832 }
833 else
834 {
835 devprop_add_value(device, "device-id", hd4400_mobile_device_id, 4); // MacMan Inject Supported ID Instead of Patching Kext
836 verbose("Using default unsupported device id injection of 0a26\n");
837 }
838 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
839 {
840 verbose("Using 0x%s for ig-platform-id\n", value);
841 hex2devprop(value, ig_platform_id, 4);
842 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
843 }
844 else
845 {
846 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4600, 4);
847 verbose("Using default ig-platform-id of 0x0d220003\n");
848 }
849 break;
850
851 //
852 // Unsupported Haswell Mobile Device IDs
853 //
854 case GMA_HASWELL_ULT_M_GT1: // HD Graphics Mobile
855 case GMA_HASWELL_CRW_M_GT1: //
856 case GMA_HASWELL_CRW_M_GT2: // HD Graphics 4600 Mobile
857 case GMA_HASWELL_CRW_M_GT2_PLUS_IG: //
858// devprop_add_value(device, "AAPL00,DualLink", HD4000_vals[10], 4);
859 devprop_add_value(device, "built-in", &BuiltIn, 1);
860 devprop_add_value(device, "class-code", ClassFix, 4);
861 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
862 if (getValueForKey(kIGPDeviceID, &value, &len, &bootInfo->chameleonConfig)) // MacMan
863 {
864 verbose("Using 0x%s for unsupported device id injection.\n", value);
865 hex2devprop(value, igp_device_id, 2);
866 devprop_add_value(device, "device-id",igp_device_id, 4);
867 }
868 else
869 {
870 devprop_add_value(device, "device-id", hd4600_mobile_device_id, 4); // MacMan Inject Supported ID Instead of Patching Kext
871 verbose("Using default unsupported device id injection of 0x0416\n");
872 }
873 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
874 {
875 verbose("Using 0x%s for ig-platform-id\n", value);
876 hex2devprop(value, ig_platform_id, 4);
877 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
878 }
879 else
880 {
881 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_4600_mobile, 4);
882 verbose("Using default ig-platform-id of 0x0a260006\n");
883 }
884 break;
885
886 //
887 // Supported Broadwell Desktop Device IDs
888 //
889
890 //
891 // Currently none available as of 2015-04-08
892 //
893
894 //
895 // Supported Broadwell Mobile Device IDs
896 //
897 case GMA_BRODWELL_ULT_M_GT1:// HD Graphics ??? found in kext
898 case GMA_BRODWELL_ULX_M_GT1:// HD Graphics ??? found in kext
899 case GMA_BRODWELL_BDW_M_GT2:// HD Graphics 5600 and found in kext
900 case GMA_BRODWELL_ULT_M_GT2:// HD Graphics 5500 and found in kext
901 case GMA_BRODWELL_ULX_M_GT2:// HD Graphics 5300 and found in kext
902 case GMA_BRODWELL_ULT_M_GT3:// HD Graphics 6000 and found in kext
903 case GMA_BRODWELL_BDW_M_GT3e:// Iris Pro 6200 and found in kext
904 case GMA_BRODWELL_LVT_M_GT3:// Iris 6100 and found in kext
905 devprop_add_value(device, "built-in", &BuiltIn, 1);
906 devprop_add_value(device, "class-code", ClassFix, 4);
907 devprop_add_value(device, "device-id",(uint8_t*)&device_id, sizeof(device_id));
908 devprop_add_value(device, "hda-gfx", (uint8_t *)"onboard-1", 10);
909 if (getValueForKey(kIGPlatformID, &value, &len, &bootInfo->chameleonConfig))
910 {
911 verbose("Using 0x%s for ig-platform-id\n", value);
912 hex2devprop(value, ig_platform_id, 4);
913 devprop_add_value(device, "AAPL,ig-platform-id", ig_platform_id, 4);
914 }
915 else
916 {
917 devprop_add_value(device, "AAPL,ig-platform-id", ig_id_5500_mobile, 4);
918 verbose("Using default ig-platform-id of 0x16160000\n");
919 }
920 break;
921
922 default:
923 break;
924}
925
926stringdata = malloc(sizeof(uint8_t) * string->length);
927if (!stringdata)
928{
929printf("No stringdata.\n");
930pause();
931return false;
932}
933
934verbose("---------------------------------------------\n");
935memcpy(stringdata, (uint8_t*)devprop_generate_string(string), string->length);
936stringlength = string->length;
937
938return true;
939}
940

Archive Download this file

Revision: 2658