Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Trunk/i386/libsaio/nvidia.c

1/*
2 *NVidia injector
3 *
4 *Copyright (C) 2009Jasmin Fazlic, iNDi
5 *
6 *NVidia injector modified by Fabio (ErmaC) on May 2012,
7 *for allow the cosmetics injection also based on SubVendorID and SubDeviceID.
8 *
9 *NVidia injector is free software: you can redistribute it and/or modify
10 *it under the terms of the GNU General Public License as published by
11 *the Free Software Foundation, either version 3 of the License, or
12 *(at your option) any later version.
13 *
14 *NVidia driver and injector is distributed in the hope that it will be useful,
15 *but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 *GNU General Public License for more details.
18 *
19 *You should have received a copy of the GNU General Public License
20 *along with NVidia injector. If not, see <http://www.gnu.org/licenses/>.
21 *
22 *Alternatively you can choose to comply with APSL
23 *
24 *DCB-Table parsing is based on software (nouveau driver) originally distributed under following license:
25 *
26 *
27 *Copyright 2005-2006 Erik Waling
28 *Copyright 2006 Stephane Marchesin
29 *Copyright 2007-2009 Stuart Bennett
30 *
31 *Permission is hereby granted, free of charge, to any person obtaining a
32 *copy of this software and associated documentation files (the "Software"),
33 *to deal in the Software without restriction, including without limitation
34 *the rights to use, copy, modify, merge, publish, distribute, sublicense,
35 *and/or sell copies of the Software, and to permit persons to whom the
36 *Software is furnished to do so, subject to the following conditions:
37 *
38 *The above copyright notice and this permission notice shall be included in
39 *all copies or substantial portions of the Software.
40 *
41 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42 *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43 *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
44 *THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 *WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
46 *OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
47 *SOFTWARE.
48 */
49
50#include "boot.h"
51#include "bootstruct.h"
52#include "pci.h"
53#include "platform.h"
54#include "device_inject.h"
55#include "nvidia.h"
56
57#ifndef DEBUG_NVIDIA
58#define DEBUG_NVIDIA 0
59#endif
60
61#if DEBUG_NVIDIA
62#define DBG(x...)printf(x)
63#else
64#define DBG(x...)
65#endif
66
67#define NVIDIA_ROM_SIZE0x10000
68#define PATCH_ROM_SUCCESS1
69#define PATCH_ROM_SUCCESS_HAS_LVDS2
70#define PATCH_ROM_FAILED0
71#define MAX_NUM_DCB_ENTRIES16
72#define TYPE_GROUPED0xff
73#define READ_BYTE(rom, offset) (*(u_char *)(rom + offset))
74#define READ_LE_SHORT(rom, offset) (READ_BYTE(rom, offset+1) << 8 | READ_BYTE(rom, offset))
75#define READ_LE_INT(rom, offset) (READ_LE_SHORT(rom, offset+2) << 16 | READ_LE_SHORT(rom, offset))
76#define WRITE_LE_SHORT(data) (((data) << 8 & 0xff00) | ((data) >> 8 & 0x00ff ))
77#define WRITE_LE_INT(data) (WRITE_LE_SHORT(data) << 16 | WRITE_LE_SHORT(data >> 16))
78
79extern uint32_t devices_number;
80
81const char *nvidia_compatible_0[] ={ "@0,compatible","NVDA,NVMac" };
82const char *nvidia_compatible_1[] ={ "@1,compatible","NVDA,NVMac" };
83const char *nvidia_device_type_0[] ={ "@0,device_type","display" };
84const char *nvidia_device_type_1[] ={ "@1,device_type","display" };
85const char *nvidia_device_type[] ={ "device_type","NVDA,Parent" };
86const char *nvidia_device_type_child[]={ "device_type","NVDA,Child" };
87const char *nvidia_name_0[] ={ "@0,name","NVDA,Display-A" };
88const char *nvidia_name_1[] ={ "@1,name","NVDA,Display-B" };
89const char *nvidia_slot_name[] ={ "AAPL,slot-name", "Slot-1" };
90
91static uint8_t default_NVCAP[]= {
920x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00,
930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
940x00, 0x00, 0x00, 0x00
95};
96
97#define NVCAP_LEN ( sizeof(default_NVCAP) / sizeof(uint8_t) )
98
99static uint8_t default_dcfg_0[]={0x03, 0x01, 0x03, 0x00};
100static uint8_t default_dcfg_1[]={0xff, 0xff, 0x00, 0x01};
101
102// uint8_t connector_type_1[]={0x00, 0x08, 0x00, 0x00};
103
104#define DCFG0_LEN ( sizeof(default_dcfg_0) / sizeof(uint8_t) )
105#define DCFG1_LEN ( sizeof(default_dcfg_1) / sizeof(uint8_t) )
106
107static uint8_t default_NVPM[]= {
108 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
111 0x00, 0x00, 0x00, 0x00
112};
113
114#define NVPM_LEN ( sizeof(default_NVPM) / sizeof(uint8_t) )
115
116static nvidia_card_info_t nvidia_cards[] = {
117 /* ========================================================================================
118 * Layout is device(VendorId + DeviceId), subdev (SubvendorId + SubdeviceId), display name.
119 * ========================================================================================
120 */
121/*Unknown*/{ 0x10DE0000,NV_SUB_IDS,"Unknown" },
122 /* ------ Specific DeviceID and SubDevID. ------ */
123// 0000 - 0040
124// 0040 - 004F
125// 0050 - 005F
126// 0060 - 006F
127// 0070 - 007F
128// 0080 - 008F
129// 0090 - 009F
130// 00A0 - 00AF
131// 00B0 - 00BF
132// 00C0 - 00CF
133// 00D0 - 00DF
134// 00E0 - 00EF
135// 00F0 - 00FF
136// 0100 - 010F
137// 0110 - 011F
138// 0120 - 012F
139// 0130 - 013F
140// 0140 - 014F
141// 0150 - 015F
142// 0160 - 016F
143// 0170 - 017F
144// 0180 - 018F
145// 0190 - 019F
146{ 0x10DE0193,0x10438234,"Asus GeForce 8800 GTS" },
147{ 0x10DE0193,0x1043823C,"Asus GeForce 8800 GTS" },
148{ 0x10DE0193,0x1043825F,"Asus GeForce 8800 GTS" },
149{ 0x10DE0193,0x10DE0420,"Asus GeForce 8800 GTS" },
150{ 0x10DE0193,0x10DE0421,"Albatron GeForce 8800 GTS" },
151{ 0x10DE0193,0x19F104A6,"BFG GeForce 8800 GTS" },
152{ 0x10DE019D,0x107D2A72,"Leadtek Quadro FX 5600" },
153{ 0x10DE019D,0x10DE0409,"nVidia Quadro FX 5600" },
154{ 0x10DE019E,0x107D2A72,"Leadtek Quadro FX 4600" },
155{ 0x10DE019E,0x10DE0408,"nVidia Quadro FX 4600" }, // fwood
156// 01A0 - 01AF
157// 01B0 - 01BF
158// 01C0 - 01CF
159// 01D0 - 01DF
160{ 0x10DE01D8,0x10250090,"Acer GeForce Go 7400" },
161{ 0x10DE01D8,0x102801C8,"Dell GeForce Go 7400" },
162{ 0x10DE01D8,0x102801CC,"Dell Quadro NVS 120M" },
163{ 0x10DE01D8,0x102801D7,"Dell GeForce Go 7400" },
164{ 0x10DE01D8,0x102801F3,"Dell GeForce Go 7400" },
165{ 0x10DE01D8,0x102801F9,"Dell GeForce Go 7400" },
166{ 0x10DE01D8,0x102801FE,"Dell GeForce Go 7400" },
167{ 0x10DE01D8,0x10280209,"Dell GeForce Go 7400" },
168{ 0x10DE01D8,0x10282003,"Dell Quadro NVS 120M" },
169{ 0x10DE01D8,0x103C30A5,"HP GeForce Go 7400" },
170{ 0x10DE01D8,0x103C30B6,"HP GeForce Go 7400" },
171{ 0x10DE01D8,0x103C30B7,"HP GeForce Go 7400" },
172{ 0x10DE01D8,0x103C30BB,"HP GeForce Go 7400" },
173{ 0x10DE01D8,0x10431211,"Asus GeForce Go 7400" },
174{ 0x10DE01D8,0x10431214,"Asus GeForce Go 7400" },
175{ 0x10DE01D8,0x104D81E6,"Sony GeForce Go 7400" },
176{ 0x10DE01D8,0x104D81EF,"Sony GeForce Go 7400" },
177{ 0x10DE01D8,0x104D81FD,"Sony GeForce Go 7400" },
178{ 0x10DE01D8,0x104D8205,"Sony GeForce Go 7400" },
179{ 0x10DE01D8,0x104D820F,"Sony GeForce Go 7400" },
180{ 0x10DE01D8,0x109F319C,"Trigem GeForce Go 7400" },
181{ 0x10DE01D8,0x109F319D,"Trigem GeForce Go 7400" },
182{ 0x10DE01D8,0x109F3C01,"Trigem GeForce Go 7400" },
183{ 0x10DE01D8,0x11790001,"Toshiba GeForce Go 7400" },
184{ 0x10DE01D8,0x1179FF00,"Toshiba GeForce Go 7400" },
185{ 0x10DE01D8,0x1179FF10,"Toshiba GeForce Go 7400" },
186{ 0x10DE01D8,0x1179FF31,"Toshiba GeForce Go 7400" },
187{ 0x10DE01D8,0x144D8062,"Samsung GeForce Go 7400" },
188{ 0x10DE01D8,0x144DB03C,"Samsung GeForce Go 7400" },
189{ 0x10DE01D8,0x144DC024,"Samsung GeForce Go 7400" },
190{ 0x10DE01D8,0x144DC026,"Samsung GeForce Go 7400" },
191{ 0x10DE01D8,0x14620511,"MSi GeForce Go 7400" },
192{ 0x10DE01D8,0x14623FCC,"MSi GeForce Go 7400" },
193{ 0x10DE01D8,0x14623FDF,"MSi GeForce Go 7400" },
194{ 0x10DE01D8,0x14624327,"MSi GeForce Go 7400" },
195 { 0x10DE01D8,0x15092A30,"GeForce Go 7400" }, // First International Computer Inc
196{ 0x10DE01D8,0x152D0753,"Quanta GeForce Go 7400" },
197{ 0x10DE01D8,0x152D0763,"Quante GeForce Go 7400" },
198{ 0x10DE01D8,0x161F203D,"Arima GeForce Go 7400" },
199{ 0x10DE01D8,0x161F2052,"Arima GeForce Go 7400" },
200{ 0x10DE01D8,0x161F2054,"Arima GeForce Go 7400" },
201{ 0x10DE01D8,0x161F205D,"Arima GeForce Go 7400" },
202 { 0x10DE01D8,0x1631C022,"NEC GeForce Go 7400" },
203{ 0x10DE01D8,0x173410D3,"Fujitsu GeForce Go 7400" },
204{ 0x10DE01D8,0x17AA2075,"Lenovo GeForce Go 7400" },
205{ 0x10DE01D8,0x17AA3833,"Lenovo GeForce Go 7400" },
206{ 0x10DE01D8,0x17AA39F5,"Lenovo GeForce Go 7400" },
207{ 0x10DE01D8,0x17AA6666,"Lenovo GeForce Go 7400" },
208{ 0x10DE01D8,0x17C0207F,"Wistron GeForce Go 7400" },
209 { 0x10DE01D8,0x17C02083,"Wistron GeForce Go 7400" },
210{ 0x10DE01D8,0x17FF500E,"Benq GeForce Go 7400" },
211{ 0x10DE01D8,0x18940040,"LG GeForce Go 7400" },
212{ 0x10DE01D8,0x18640041,"LG GeForce Go 7400" },
213{ 0x10DE01D8,0x18640042,"LG GeForce Go 7400" },
214{ 0x10DE01D8,0x18640043,"LG GeForce Go 7400" },
215{ 0x10DE01D8,0x18640044,"LG GeForce Go 7400" },
216 { 0x10DE01D8,0x18640045,"LG GeForce Go 7400" },
217{ 0x10DE01D8,0x18640046,"LG GeForce Go 7400" },
218{ 0x10DE01D8,0x18640047,"LG GeForce Go 7400" },
219{ 0x10DE01D8,0x1864007A,"LG GeForce Go 7400" },
220{ 0x10DE01D8,0x19614605,"ESS GeForce Go 7400" },
221{ 0x10DE01D8,0x19615607,"ESS GeForce Go 7400" },
222{ 0x10DE01D8,0x19915532,"GeForce Go 7400" }, // Topstar Digital Technologies Co., Ltd.
223 { 0x10DE01D8,0x19DB2174,"GeForce Go 7400" }, // ??
224{ 0x10DE01D8,0xC0181631,"GeForce Go 7400" }, // ??
225{ 0x10DE01DA,0x1028017D,"Dell Quadro NVS 110M" },
226{ 0x10DE01DA,0x10280407,"Dell GeForce 7300 LE" },
227{ 0x10DE01DA,0x11790001,"Toshiba Quadro NVS 110M" },
228{ 0x10DE01DA,0x11790002,"Toshiba Quadro NVS 110M" },
229{ 0x10DE01DA,0x11790010,"Toshiba Quadro NVS 110M" },
230{ 0x10DE01DA,0x1179FF00,"Toshiba Quadro NVS 110M" },
231{ 0x10DE01DA,0x1179FF10,"Toshiba Quadro NVS 110M" },
232// 01E0 - 01EF
233// 01F0 - 01FF
234// 0200 - 020F
235// 0210 - 021F
236// 0220 - 022F
237// 0230 - 023F
238// 0240 - 024F
239// 0250 - 025F
240// 0260 - 026F
241// 0270 - 027F
242// 0280 - 028F
243// 0290 - 029F
244// 02A0 - 02AF
245// 02B0 - 02BF
246// 02C0 - 02CF
247// 02D0 - 02DF
248// 02E0 - 02EF
249// 02F0 - 02FF
250// 0300 - 030F
251// 0310 - 031F
252// 0320 - 032F
253// 0330 - 033F
254// 0340 - 034F
255// 0350 - 035F
256// 0360 - 036F
257// 0370 - 037F
258// 0380 - 038F
259// 0390 - 039F
260// 03A0 - 03AF
261// 03B0 - 03BF
262// 03C0 - 03CF
263// 03D0 - 03DF
264// 03E0 - 03EF
265// 03F0 - 03FF
266// 0400 - 040F
267{ 0x10DE0402,0x10DE0439,"Galaxy 8600GT" }, // pianman
268{ 0x10DE0407,0x101922D4,"Elitegroup GeForce 8600M GT" },
269{ 0x10DE0407,0x1025011D,"Acer GeForce 8600M GT" },
270{ 0x10DE0407,0x1025011E,"Acer GeForce 8600M GT" },
271{ 0x10DE0407,0x10250121,"Acer GeForce 8600M GT" },
272{ 0x10DE0407,0x10250125,"Acer GeForce 8600M GT" },
273{ 0x10DE0407,0x10250126,"Acer GeForce 8600M GT" },
274{ 0x10DE0407,0x10250127,"Acer GeForce 8600M GT" },
275{ 0x10DE0407,0x10250129,"Acer GeForce 8600M GT" },
276{ 0x10DE0407,0x1025012B,"Acer GeForce 8600M GT" },
277{ 0x10DE0407,0x10250136,"Acer GeForce 8600M GT" },
278{ 0x10DE0407,0x1025013D,"Acer GeForce 8600M GT" },
279{ 0x10DE0407,0x1025013F,"Acer GeForce 8600M GT" },
280{ 0x10DE0407,0x10250142,"Acer GeForce 8600M GT" },
281{ 0x10DE0407,0x10250143,"Acer GeForce 8600M GT" },
282{ 0x10DE0407,0x10250145,"Acer GeForce 8600M GT" },
283{ 0x10DE0407,0x10250146,"Acer GeForce 8600M GT" },
284{ 0x10DE0407,0x1025015E,"Acer GeForce 8600M GT" },
285{ 0x10DE0407,0x1028019C,"Dell GeForce 8600M GT" },
286{ 0x10DE0407,0x102801F1,"Dell GeForce 8600M GT" }, // LatinMcG
287{ 0x10DE0407,0x102801F2,"Dell GeForce 8600M GT" },
288{ 0x10DE0407,0x10280228,"Dell GeForce 8600M GT" },
289{ 0x10DE0407,0x10280229,"Dell GeForce 8600M GT" },
290{ 0x10DE0407,0x1028022E,"Dell GeForce 8600M GT" }, // DarwinX
291{ 0x10DE0407,0x10431515,"Asus GeForce 8600M GT" },
292{ 0x10DE0407,0x10431588,"Asus GeForce 8600M GT" },
293{ 0x10DE0407,0x10431618,"Asus GeForce 8600M GT" },
294{ 0x10DE0407,0x10431632,"Asus GeForce 8600M GT" },
295{ 0x10DE0407,0x104314A2,"Asus GeForce 8600M GT" },
296{ 0x10DE0407,0x104381F7,"Asus GeForce 8600M GT" },
297{ 0x10DE0407,0x104D9005,"Sony GeForce 8600M GT" },
298{ 0x10DE0407,0x104D9016,"Sony GeForce 8600M GT" },
299{ 0x10DE0407,0x104D9018,"Sony GeForce 8600M GT" },
300{ 0x10DE0407,0x106B00A0,"Apple GeForce 8600M GT" },
301{ 0x10DE0407,0x106B00A3,"Apple GeForce 8600M GT" },
302{ 0x10DE0407,0x106B00A4,"Apple GeForce 8600M GT" },
303// 0410 - 041F
304// 0420 - 042F
305// 0430 - 043F
306// 0440 - 044F
307// 0450 - 045F
308// 0460 - 046F
309// 0470 - 047F
310// 0480 - 048F
311// 0490 - 049F
312// 04A0 - 04AF
313// 04B0 - 04BF
314// 04C0 - 04CF
315// 04D0 - 04DF
316// 04E0 - 04EF
317// 04F0 - 04FF
318// 0500 - 050F
319// 0510 - 051F
320// 0520 - 052F
321// 0530 - 053F
322// 0540 - 054F
323// 0550 - 055F
324// 0560 - 056F
325// 0570 - 057F
326// 0580 - 058F
327// 0590 - 059F
328// 05A0 - 05AF
329// 05B0 - 05BF
330// 05C0 - 05CF
331// 05D0 - 05DF
332// 05E0 - 05EF
333{ 0x10DE05E0,0x10DE064E,"nVidia GeForce GTX 295" },
334{ 0x10DE05E0,0x38421291,"EVGA GeForce GTX 295" },
335{ 0x10DE05E2,0x10438291,"Asus GTX 260" },
336{ 0x10DE05E2,0x10438298,"Asus GTX 260" },
337{ 0x10DE05E2,0x104382C4,"Asus GTX 260" },
338{ 0x10DE05E2,0x104382CF,"Asus GTX 260" },
339{ 0x10DE05E2,0x104382E3,"Asus GTX 260" },
340{ 0x10DE05E2,0x10B00801,"Gainward GTX 260" },
341{ 0x10DE05E2,0x10DE0585,"nVidia GTX 260" },
342{ 0x10DE05E2,0x10DE0617,"nVidia GTX 260" },
343{ 0x10DE05E2,0x16822390,"HFX GTX 260" },
344{ 0x10DE05E2,0x17870000,"HIS GTX 260" },
345{ 0x10DE05E2,0x34421260,"Bihl GTX 260" },
346{ 0x10DE05E2,0x34421262,"Bihl GTX 260" },
347{ 0x10DE05E2,0x73770000,"Colorful GTX 260" },
348{ 0x10DE05E3,0x10438320,"Asus GeForce GTX 285" }, // mauriziopasotti
349{ 0x10DE05E3,0x106B0000,"Apple GeForce GTX 285" },
350{ 0x10DE05E3,0x10DE065B,"nVidia GeForce GTX 285" },
351{ 0x10DE05E3,0x38421080,"EVGA GeForce GTX 285" },
352{ 0x10DE05E3,0x38421187,"EVGA GeForce GTX 285" },
353{ 0x10DE05E7,0x10DE0595,"nVidia Tesla T10 Processor" },
354{ 0x10DE05E7,0x10DE066A,"nVidia Tesla C1060" },
355{ 0x10DE05E7,0x10DE068F,"nVidia Tesla T10 Processor" },
356{ 0x10DE05E7,0x10DE0697,"nVidia Tesla M1060" },
357{ 0x10DE05E7,0x10DE0714,"nVidia Tesla M1060" },
358{ 0x10DE05E7,0x10DE0743,"nVidia Tesla M1060" },
359{ 0x10DE05EB,0x10DE0705,"nVidia GeForce GTX 295" },
360{ 0x10DE05EB,0x19F110C2,"BFG GeForce GTX 295" },
361// 05F0 - 05FF
362// 0600 - 060F
363{ 0x10DE0600,0x10438268,"Asus GeForce 8800 GTS" },
364{ 0x10DE0600,0x1043826C,"Asus GeForce 8800 GTS" },
365{ 0x10DE0600,0x10DE0000,"Abit GeForce 8800 GTS" },
366{ 0x10DE0600,0x10DE0502,"nVidia GeForce 8800 GTS" },
367{ 0x10DE0600,0x19F10719,"BFG GeForce 8800 GTS" },
368// 0610 - 061F
369{ 0x10DE0611,0x104381F7,"Asus GeForce 8800 GT" },
370{ 0x10DE0611,0x10DE053C,"nVidia GeForce 8800 GT" },
371{ 0x10DE0611,0x14621171,"MSi GeForce 8800 GT" },
372{ 0x10DE0611,0x14621172,"MSi GeForce 8800 GT" },
373{ 0x10DE0611,0x174B9210,"PC Partner GeForce 8800 GT" },
374{ 0x10DE0611,0x1ACC8582,"Point of View GeForce 8800 GT" }, // Alex//3oo1
375{ 0x10DE0611,0x3842C802,"EVGA GeForce 8800 GT" },
376{ 0x10DE0618,0x1025028E,"Acer GeForce GTX 260M" },
377{ 0x10DE0618,0x102802A1,"Dell GeForce GTX 260M" },
378{ 0x10DE0618,0x102802A2,"Dell GeForce GTX 260M" },
379{ 0x10DE0618,0x10431A52,"Asus GeForce GTX 260M" },
380{ 0x10DE0618,0x10432028,"Asus GeForce GTX 170M" },
381{ 0x10DE0618,0x1043202B,"Asus GTX 680" },
382{ 0x10DE0618,0x10432033,"Asus GeForce GTX 260M" },
383{ 0x10DE0618,0x15580481,"Clevo/Kapok GeForce GTX 260M" },
384{ 0x10DE0618,0x15580577,"Clevo/Kapok GeForce GTX 260M" },
385{ 0x10DE0618,0x15580860,"Clevo/Kapok GeForce GTX 260M" },
386// 0620 - 062F
387{ 0x10DE0622,0x104382AC,"Asus EN9600GT Magic" }, // Fabio71
388// 0630 - 063F
389// 0640 - 064F
390{ 0x10DE0640,0x106B00AD,"Apple GeForge 9500 GT" },
391{ 0x10DE0640,0x106B00B3,"Apple GeForge 9500 GT" },
392{ 0x10DE0640,0x106B061B,"Apple GeForge 9500 GT" },
393{ 0x10DE0640,0x10DE077F,"Inno3D GeForge 9500GT HDMI" }, // Fabio71
394{ 0x10DE0640,0x14621290,"MSi GeForge 9500 GT" },
395{ 0x10DE0640,0x14621291,"MSi GeForge 9500 GT" },
396{ 0x10DE0640,0x16423796,"Bitland GeForge 9500 GT" },
397// 0650 - 065F
398// 0660 - 066F
399// 0670 - 067F
400// 0680 - 068F
401// 0690 - 069F
402// 06A0 - 06AF
403// 06B0 - 06BF
404// 06C0 - 06CF
405{ 0x10DE06C0,0x10DE075F,"nVidia GeForce GTX 480" },
406// { 0x10DE06C0,0x19DA0010,"Zotac GTX 480 AMP" },
407{ 0x10DE06C0,0x38421482,"EVGA GTX 480" },
408{ 0x10DE06CD,0x10DE079F,"Point of View GeForce GTX 470" }, // Alex//3oo1
409{ 0x10DE06CD,0x10DE979F,"nVidia GeForce GTX 470" },
410{ 0x10DE06CD,0x19DA0010,"Zotac GTX 470" },
411{ 0x10DE06CD,0x19DA1153,"Zotac GeForce GTX 470" }, // magnifico10 and Fabio71 TODO: AMP???
412// 06D0 - 06DF
413{ 0x10DE06D1,0x10DE0771,"nVidia Tesla C2050" },
414{ 0x10DE06D1,0x10DE0772,"nVidia Tesla C2070" },
415{ 0x10DE06D2,0x10DE0774,"nVidia Tesla M2070" },
416{ 0x10DE06D2,0x10DE0830,"nVidia Tesla M2070" },
417{ 0x10DE06D2,0x10DE0842,"nVidia Tesla M2070" },
418{ 0x10DE06D2,0x10DE088F,"nVidia Tesla X2070" },
419{ 0x10DE06D2,0x10DE0908,"nVidia Tesla M2070" },
420{ 0x10DE06DD,0x103C076F,"HP Quadro 6000" },
421{ 0x10DE06DD,0x10DE076F,"nVidia Quadro 6000" },
422{ 0x10DE06D9,0x103C0770,"HP Quadro 5000" },
423{ 0x10DE06D9,0x10DE0770,"nVidia Quadro 5000" },
424{ 0x10DE06DD,0x1028081A,"Dell Quadro 5000M" },
425{ 0x10DE06DD,0x103C1520,"HP Quadro 5000M" },
426{ 0x10DE06DD,0x103C0780,"HP Quadro 4000" },
427{ 0x10DE06DD,0x10DE0780,"nVidia Quadro 4000" },
428{ 0x10DE06DE,0x10DE0773,"nVidia Tesla S2050" },
429{ 0x10DE06DE,0x10DE077A,"nVidia Tesla M2050" },
430{ 0x10DE06DE,0x10DE082F,"nVidia Tesla M2050" },
431{ 0x10DE06DE,0x10DE0830,"nVidia Tesla M2070" },
432{ 0x10DE06DE,0x10DE0831,"nVidia Tesla M2070" },
433{ 0x10DE06DE,0x10DE0832,"nVidia Tesla M2070" },
434{ 0x10DE06DE,0x10DE0840,"nVidia Tesla X2070" },
435{ 0x10DE06DE,0x10DE0842,"nVidia Tesla M2050" },
436{ 0x10DE06DE,0x10DE0843,"nVidia Tesla M2050" },
437{ 0x10DE06DE,0x10DE0846,"nVidia Tesla M2050" },
438{ 0x10DE06DE,0x10DE0866,"nVidia Tesla M2050" },
439{ 0x10DE06DE,0x10DE0907,"nVidia Tesla M2050" },
440{ 0x10DE06DE,0x10DE091E,"nVidia Tesla M2050" },
441{ 0x10DE06DF,0x10DE0842,"nVidia Tesla M2070-Q" },
442{ 0x10DE06DF,0x10DE084D,"nVidia Tesla M2070-Q" },
443{ 0x10DE06DF,0x10DE087F,"nVidia Tesla M2070-Q" },
444// 06E0 - 06EF
445{ 0x10DE06E4,0x10438322,"Asus EN8400GS" }, // Fabio71
446{ 0x10DE06E4,0x14583475,"GV-NX84S256HE [GeForce 8400 GS]" },
447{ 0x10DE06E8,0x10280262,"Dell GeForce 9200M GS" },
448{ 0x10DE06E8,0x10280271,"Dell GeForce 9200M GS" },
449{ 0x10DE06E8,0x10280272,"Dell GeForce 9200M GS" },
450{ 0x10DE06E8,0x103C30F4,"HP GeForce 9200M GS" },
451{ 0x10DE06E8,0x103C30F7,"HP GeForce 9200M GS" },
452{ 0x10DE06E8,0x103C3603,"HP GeForce 9200M GS" },
453{ 0x10DE06E8,0x103C360B,"HP GeForce 9200M GE" },
454{ 0x10DE06E8,0x103C3621,"HP GeForce 9200M GE" },
455{ 0x10DE06E8,0x103C3629,"HP GeForce 9200M GE" },
456{ 0x10DE06E8,0x10432008,"Asus GeForce 9200M GE" },
457{ 0x10DE06E8,0x107B0900,"Gateway GeForce 9200M GE" },
458{ 0x10DE06E8,0x11790001,"Toshiba GeForce 9200M GE" },
459{ 0x10DE06E8,0x144DC041,"Samsung GeForce 9200M GE" },
460{ 0x10DE06E8,0x144DC042,"Samsung GeForce 9200M GE" },
461{ 0x10DE06E8,0x144DC048,"Samsung GeForce 9200M GE" },
462{ 0x10DE06E8,0x144DC04A,"Samsung GeForce 9200M GE" },
463{ 0x10DE06E8,0x144DC521,"Samsung GeForce 9200M GE" },
464{ 0x10DE06E8,0x144DC524,"Samsung GeForce 9200M GE" },
465{ 0x10DE06E8,0x152D0772,"Quanta GeForce 9200M GE" },
466{ 0x10DE06E8,0x152D0773,"Quanta GeForce 9200M GE" },
467{ 0x10DE06E8,0x152D0774,"Quanta GeForce 9200M GE" },
468{ 0x10DE06E8,0x152D0775,"Quanta GeForce 9200M GE" },
469{ 0x10DE06E8,0x17341146,"Fujitsu GeForce 9200M GE" },
470{ 0x10DE06E8,0x18541772,"LG GeForce 9200M GE" },
471{ 0x10DE06E8,0x18541773,"LG GeForce 9200M GE" },
472{ 0x10DE06E8,0x18541774,"LG GeForce 9200M GE" },
473{ 0x10DE06E8,0x18541775,"LG GeForce 9200M GE" },
474{ 0x10DE06E8,0x19614605,"ESS GeForce 9200M GE" },
475{ 0x10DE06E8,0x19615584,"ESS GeForce 9200M GE" },
476{ 0x10DE06E8,0x1B0A000E,"Pegatron GeForce 9200M GE" },
477// 06F0 - 06FF
478// 0700 - 070F
479// 0710 - 071F
480// 0720 - 072F
481// 0730 - 073F
482// 0740 - 074F
483// 0750 - 075F
484// 0760 - 076F
485// 0770 - 077F
486// 0780 - 078F
487// 0790 - 079F
488// 07A0 - 07AF
489// 07B0 - 07BF
490// 07C0 - 07CF
491// 07D0 - 07DF
492// 07E0 - 07EF
493// 07F0 - 07FF
494// 0800 - 080F
495// 0810 - 081F
496// 0820 - 082F
497// 0830 - 083F
498// 0840 - 084F
499// 0850 - 085F
500// 0860 - 086F
501// 0870 - 087F
502{ 0x10DE0876,0x103C3651,"HP ION" },
503{ 0x10DE0876,0x10438402,"Asus ION" },
504// 0880 - 088F
505// 0890 - 089F
506// 08A0 - 08AF
507// 08B0 - 08BF
508// 08C0 - 08CF
509// 08D0 - 08DF
510// 08E0 - 08EF
511// 08F0 - 08FF
512// 0900 - 090F
513// 0910 - 091F
514// 0920 - 092F
515// 0930 - 093F
516// 0940 - 094F
517// 0950 - 095F
518// 0960 - 096F
519// 0970 - 097F
520// 0980 - 098F
521// 0990 - 099F
522// 09A0 - 09AF
523// 09B0 - 09BF
524// 09C0 - 09CF
525// 09D0 - 09DF
526// 09E0 - 09EF
527// 09F0 - 09FF
528// 0A00 - 0A0F
529// 0A10 - 0A1F
530// 0A20 - 0A2F
531{ 0x10DE0A20,0x10438311,"Asus GeForce GT 220" },
532// 0A30 - 0A3F
533// 0A40 - 0A4F
534// 0A50 - 0A5F
535// 0A60 - 0A6F
536{ 0x10DE0A64,0x1025063C,"Acer ION" },
537{ 0x10DE0A64,0x103C2AAD,"HP ION" },
538{ 0x10DE0A64,0x10430010,"Asus ION2" }, // buoo
539{ 0x10DE0A64,0x1043841F,"Asus ION" },
540{ 0x10DE0A64,0x1043842F,"Asus ION" },
541{ 0x10DE0A64,0x10438455,"Asus ION" },
542{ 0x10DE0A64,0x1043845B,"Asus ION" },
543{ 0x10DE0A64,0x1043845E,"Asus ION" },
544{ 0x10DE0A64,0x17AA3605,"Lenovo ION" },
545{ 0x10DE0A64,0x18490A64,"ASRock ION" },
546{ 0x10DE0A64,0x1B0A00CE,"Pegatron ION" },
547 { 0x10DE0A64,0x1B0A00D7,"Pegatron ION" },
548{ 0x10DE0A65,0x10438334,"Asus GeForce 210" },
549{ 0x10DE0A65,0x10438353,"Asus GeForce 210" },
550{ 0x10DE0A65,0x10438354,"Asus GeForce 210" },
551{ 0x10DE0A65,0x10DE0794,"nVidia GeForce 210" },
552{ 0x10DE0A65,0x10DE0847,"nVidia GeForce 210" },
553{ 0x10DE0A65,0x145834D5,"GigaByte GeForce 210" },
554{ 0x10DE0A65,0x145834EF,"GigaByte GeForce 210" },
555{ 0x10DE0A65,0x16822941,"XFX GeForce 210" },
556{ 0x10DE0A6C,0x1028040B,"Dell NVS 3100M" },
557{ 0x10DE0A6C,0x17AA2142,"Lenovo NVS 3100M" },
558// 0A70 - 0A7F
559// 0A80 - 0A8F
560// 0A90 - 0A9F
561// 0AA0 - 0AAF
562// 0AB0 - 0ABF
563// 0AC0 - 0ACF
564// 0AD0 - 0ADF
565// 0AE0 - 0AEF
566// 0AF0 - 0AFF
567// 0B00 - 0B0F
568// 0B10 - 0B1F
569// 0B20 - 0B2F
570// 0B30 - 0B3F
571// 0B40 - 0B4F
572// 0B50 - 0B5F
573// 0B60 - 0B6F
574// 0B70 - 0B7F
575// 0B80 - 0B8F
576// 0B90 - 0B9F
577// 0BA0 - 0BAF
578// 0BB0 - 0BBF
579// 0BC0 - 0BCF
580// 0BD0 - 0BDF
581// 0BE0 - 0BEF
582// 0BF0 - 0BFF
583// 0C00 - 0C0F
584// 0C10 - 0C1F
585// 0C20 - 0C2F
586// 0C30 - 0C3F
587// 0C40 - 0C4F
588// 0C50 - 0C5F
589// 0C60 - 0C6F
590// 0C70 - 0C7F
591// 0C80 - 0C8F
592// 0C90 - 0C9F
593// 0CA0 - 0CAF
594{ 0x10DE0CA3,0x10438326,"Asus GeForce GT 240" },
595{ 0x10DE0CA3,0x10438328,"Asus GeForce GT 240" },
596{ 0x10DE0CA3,0x1043832A,"Asus GeForce GT 240" },
597{ 0x10DE0CA3,0x1043832E,"Asus GeForce GT 240" },
598{ 0x10DE0CA3,0x10438335,"Asus GeForce GT 240" },
599{ 0x10DE0CA3,0x145834E2,"GigaByte GeForce GT 240" },
600{ 0x10DE0CA3,0x145834E5,"GigaByte GeForce GT 240" },
601{ 0x10DE0CA3,0x145834E6,"GigaByte GeForce GT 240" },
602{ 0x10DE0CA3,0x14621900,"MSi GeForce GT 230" },
603{ 0x10DE0CA3,0x14621913,"MSi GeForce GT 230" },
604{ 0x10DE0CA3,0x14622070,"MSi GeForce GT 240" },
605{ 0x10DE0CA3,0x14622072,"MSi GeForce GT 240" },
606{ 0x10DE0CA3,0x14622073,"MSi GeForce GT 240" },
607{ 0x10DE0CA3,0x14628010,"MSi GeForce GT 240" },
608{ 0x10DE0CA3,0x14628041,"MSi VN240GT-MD1G" }, //Fabio71
609{ 0x10DE0CA3,0x16423926,"Bitland GeForce GT 230" },
610{ 0x10DE0CA3,0x196E0010,"PNY GeForce GT 240" },
611{ 0x10DE0CA3,0x196E069D,"PNY GeForce GT 240" }, // ErmaC
612{ 0x10DE0CA3,0x196E075B,"PNY GeForce GT 240" },
613{ 0x10DE0CA3,0x19DA1142,"Zotac GeForce GT 240" },
614{ 0x10DE0CA3,0x19DA1143,"Zotac GeForce GT 240" },
615{ 0x10DE0CA3,0x19DA1144,"Zotac GeForce GT 240" },
616{ 0x10DE0CA3,0x19DA2130,"Zotac GeForce GT 240" },
617{ 0x10DE0CA3,0x19DA2134,"Zotac GeForce GT 240" },
618// 0CB0 - 0CBF
619// 0CC0 - 0CCF
620// 0CD0 - 0CDF
621// 0CE0 - 0CEF
622// 0CF0 - 0CFF
623// 0D00 - 0D0F
624// 0D10 - 0D1F
625// 0D20 - 0D2F
626// 0D30 - 0D3F
627// 0D40 - 0D4F
628// 0D50 - 0D5F
629// 0D60 - 0D6F
630// 0D70 - 0D7F
631// 0D80 - 0D8F
632// 0D90 - 0D9F
633// 0DA0 - 0DAF
634// 0DB0 - 0DBF
635// 0DC0 - 0DCF
636{ 0x10DE0DD1,0x102802A2,"Dell GeForce GTX 460M" },
637{ 0x10DE0DD1,0x1028048F,"Dell GeForce GTX 460M" },
638{ 0x10DE0DD1,0x10280490,"Dell GeForce GTX 460M" },
639{ 0x10DE0DD1,0x10280491,"Dell GeForce GTX 460M" },
640{ 0x10DE0DD1,0x102804BA,"Dell GeForce GTX 460M" },
641{ 0x10DE0DD1,0x1043203D,"Asus GeForce GTX 460M" },
642{ 0x10DE0DD1,0x1043203E,"Asus GeForce GTX 460M" },
643{ 0x10DE0DD1,0x10432040,"Asus GeForce GTX 460M" },
644{ 0x10DE0DD1,0x10432041,"Asus GeForce GTX 460M" },
645{ 0x10DE0DD1,0x10432042,"Asus GeForce GTX 460M" },
646{ 0x10DE0DD1,0x10432043,"Asus GeForce GTX 460M" },
647{ 0x10DE0DD1,0x10432044,"Asus GeForce GTX 460M" },
648{ 0x10DE0DD1,0x10432045,"Asus GeForce GTX 460M" },
649{ 0x10DE0DD1,0x10432046,"Asus GeForce GTX 460M" },
650{ 0x10DE0DD1,0x10432047,"Asus GeForce GTX 460M" },
651{ 0x10DE0DD1,0x10432048,"Asus GeForce GTX 460M" },
652{ 0x10DE0DD1,0x1043204A,"Asus GeForce GTX 460M" },
653{ 0x10DE0DD1,0x1043204B,"Asus GeForce GTX 460M" },
654{ 0x10DE0DD1,0x10438465,"Asus GeForce GTX 460M" },
655{ 0x10DE0DD1,0x10DE10DE,"nVidia GeForce GTX 460M" },
656{ 0x10DE0DD1,0x1179FC00,"Toshiba GeForce GTX 460M" },
657{ 0x10DE0DD1,0x1179FC01,"Toshiba GeForce GTX 460M" },
658{ 0x10DE0DD1,0x1179FC05,"Toshiba GeForce GTX 460M" },
659{ 0x10DE0DD1,0x1179FCB0,"Toshiba GeForce GTX 460M" },
660{ 0x10DE0DD1,0x1179FF50,"Toshiba GeForce GTX 460M" },
661{ 0x10DE0DD1,0x1179FFD6,"Toshiba GeForce GTX 460M" },
662{ 0x10DE0DD1,0x1179FFD7,"Toshiba GeForce GTX 460M" },
663{ 0x10DE0DD1,0x1179FFD8,"Toshiba GeForce GTX 460M" },
664{ 0x10DE0DD1,0x14621083,"MSi GeForce GTX 460M" },
665{ 0x10DE0DD1,0x15585102,"Clevo/Kapok GeForce GTX 460M" },
666{ 0x10DE0DD1,0x15587100,"Clevo/Kapok GeForce GTX 460M" },
667{ 0x10DE0DD1,0x15587200,"Clevo/Kapok GeForce GTX 460M" },
668{ 0x10DE0DD1,0x15588100,"Clevo/Kapok GeForce GTX 460M" },
669{ 0x10DE0DD1,0x15588687,"Clevo/Kapok GeForce GTX 460M" },
670{ 0x10DE0DD1,0x17AA3620,"Lenovo GeForce GTX 460M" },
671{ 0x10DE0DD1,0x17C010EA,"Wistron GeForce GTX 460M" },
672{ 0x10DE0DD6,0x10280010,"Dell GeForce GT 550M" },
673{ 0x10DE0DD8,0x103C084A,"HP nVidia Quadro 2000" },
674{ 0x10DE0DD8,0x10DE084A,"nVidia Quadro 2000" }, // mauriziopasotti
675{ 0x10DE0DD8,0x10DE0914,"nVidia Quadro 2000 D" },
676// 0DE0 - 0DEF
677{ 0x10DE0DE1,0x38421430,"EVGA GeForce GT 430" },
678{ 0x10DE0DE9,0x10250487,"Acer GeForce GT 630M" },
679{ 0x10DE0DE9,0x10250488,"Acer GeForce GT 630M" },
680{ 0x10DE0DE9,0x10250505,"Acer GeForce GT 630M" },
681{ 0x10DE0DE9,0x10250507,"Acer GeForce GT 630M" },
682{ 0x10DE0DE9,0x10250512,"Acer GeForce GT 630M" },
683{ 0x10DE0DE9,0x10250573,"Acer GeForce GT 630M" },
684{ 0x10DE0DE9,0x10250574,"Acer GeForce GT 630M" },
685{ 0x10DE0DE9,0x10250575,"Acer GeForce GT 630M" },
686{ 0x10DE0DE9,0x1028055E,"Dell GeForce GT 630M" },
687{ 0x10DE0DE9,0x10280563,"Dell GeForce GT 630M" },
688{ 0x10DE0DE9,0x103C181A,"HP GeForce GT 630M" },
689{ 0x10DE0DE9,0x103C181B,"HP GeForce GT 630M" },
690{ 0x10DE0DE9,0x103C181D,"HP GeForce GT 630M" },
691{ 0x10DE0DE9,0x103C1837,"HP GeForce GT 630M" },
692// 0DF0 - 0DFF
693// 0E00 - 0E0F
694// 0E10 - 0E1F
695// 0E20 - 0E2F
696{ 0x10DE0E22,0x1043835D,"Asus GeForce GTX 460" },
697{ 0x10DE0E22,0x10B00401,"Gainward GeForce GTX 460" },
698{ 0x10DE0E22,0x10B00801,"Gainward GeForce GTX 460" },
699{ 0x10DE0E22,0x10DE0804,"nVidia GeForce GTX 460" },
700{ 0x10DE0E22,0x10DE0865,"nVidia GeForce GTX 460" },
701{ 0x10DE0E22,0x145834FA,"GigaByte GeForce GTX 460" },
702{ 0x10DE0E22,0x145834FC,"GigaByte GeForce GTX 460" },
703{ 0x10DE0E22,0x14583501,"GigaByte GeForce GTX 460" },
704{ 0x10DE0E22,0x14622321,"MSi GeForce GTX 460" },
705{ 0x10DE0E22,0x14622322,"MSi GeForce GTX 460" },
706{ 0x10DE0E22,0x14622381,"MSi GeForce GTX 460" },
707{ 0x10DE0E22,0x19DA1166,"Zotac GeForce GTX 460" },
708{ 0x10DE0E22,0x19DA2166,"Zotac GeForce GTX 460" }, // Fabio71
709{ 0x10DE0E22,0x38421370,"GeForce GTX 460" },
710{ 0x10DE0E22,0x38421373,"GeForce GTX 460" },
711{ 0x10DE0E23,0x10B00401,"Gainward GeForce GTX 460" },
712// 0E30 - 0E3F
713// 0E40 - 0E4F
714// 0E50 - 0E5F
715// 0E60 - 0E6F
716// 0E70 - 0E7F
717// 0E80 - 0E8F
718// 0E90 - 0E9F
719// 0EA0 - 0EAF
720// 0EB0 - 0EBF
721// 0EC0 - 0ECF
722// 0ED0 - 0EDF
723// 0EE0 - 0EEF
724// 0EF0 - 0EFF
725// 0F00 - 0F0F
726// 0F10 - 0F1F
727// 0F20 - 0F2F
728// 0F30 - 0F3F
729// 0F40 - 0F4F
730// 0F50 - 0F5F
731// 0F60 - 0F6F
732// 0F70 - 0F7F
733// 0F80 - 0F8F
734// 0F90 - 0F9F
735// 0FA0 - 0FAF
736// 0FB0 - 0FBF
737// 0FC0 - 0FCF
738// 0FD0 - 0FDF
739// 0FE0 - 0FEF
740// 0FF0 - 0FFF
741// 1000 - 100F
742// 1010 - 101F
743// 1020 - 102F
744// 1030 - 103F
745// 1040 - 104F
746{ 0x10DE1040,0x104383A0,"Asus GeForce GT 520" },
747{ 0x10DE1040,0x104383BD,"Asus GeForce GT 520" },
748{ 0x10DE1040,0x104383C1,"Asus GeForce GT 520" },
749{ 0x10DE1040,0x14622592,"MSi GeForce GT 520" },
750{ 0x10DE1040,0x14622593,"MSi GeForce GT 520" },
751{ 0x10DE1040,0x16423A98,"Bitland GeForce GT 520" },
752{ 0x10DE1040,0x16423B42,"Bitland GeForce GT 520" },
753{ 0x10DE1040,0x174B3214,"PC Partner GeForce GT 520" },
754{ 0x10DE1040,0x196E0915,"PNY GeForce GT 520" },
755{ 0x10DE1040,0x19DA1215,"Zotac GeForce GT 520" },
756{ 0x10DE1040,0x19DA1222,"Zotac GeForce GT 520" }, // robertx
757{ 0x10DE1040,0x1ACC5213,"Point of View GeForce GT 520" },
758{ 0x10DE1040,0x1ACC5214,"Point of View GeForce GT 520" },
759{ 0x10DE1040,0x1ACC522C,"Point of View GeForce GT 520" },
760{ 0x10DE1040,0x1B0A90AA,"Pegatron GeForce GT 520" },
761{ 0x10DE1054,0x10280511,"Dell GeForce 410M" },
762{ 0x10DE1054,0x10CF1656,"Fujitsu GeForce 410M" },
763{ 0x10DE1054,0x10CF1657,"Fujitsu GeForce 410M" },
764{ 0x10DE1054,0x1179FCC0,"Toshiba GeForce 410M" },
765{ 0x10DE1054,0x14581100,"GigaByte GeForce 410M" },
766{ 0x10DE1054,0x14581125,"GigaByte GeForce 410M" },
767{ 0x10DE1055,0x104D908A,"Sony GeForce 410M" },
768{ 0x10DE1055,0x104D908B,"Sony GeForce 410M" }, // shulillo vedder
769// 1060 - 106F
770// 1070 - 107F
771// 1080 - 108F
772{ 0x10DE1081,0x10DE087E,"nVidia GeForce GTX 570" },
773{ 0x10DE1086,0x10DE0871,"Inno3D GeForce GTX 570" },
774{ 0x10DE1087,0x104383D6,"Asus ENGTX560Ti448 DCII" },
775{ 0x10DE1087,0x19DA2207,"Zotac GeForce GTX 560 Ti-448" },
776// 1090 - 109F
777{ 0x10DE1091,0x10DE0887,"nVidia Tesla M2090" },
778{ 0x10DE1091,0x10DE088E,"nVidia Tesla X2090" },
779{ 0x10DE1091,0x10DE0891,"nVidia Tesla X2090" },
780{ 0x10DE1094,0x10DE0888,"nVidia Tesla M2075" },
781// 10A0 - 10AF
782// 10B0 - 10BF
783// 10C0 - 10CF
784{ 0x10DE10C4,0x17AA3605,"Lenovo ION" },
785// 10D0 - 10DF
786// 10E0 - 10EF
787// 10F0 - 10FF
788// 1100 - 110F
789// 1110 - 111F
790// 1120 - 112F
791// 1130 - 113F
792// 1140 - 114F
793// 1150 - 115F
794// 1160 - 116F
795// 1170 - 117F
796// 1180 - 118F
797{ 0x10DE1180,0x104383F0,"Asus GTX680-2GD5" },
798{ 0x10DE1180,0x104383F7,"Asus GTX 680 Direct CU II" },
799{ 0x10DE1180,0x10DE0969,"nVidia GTX 680" },
800{ 0x10DE1180,0x118010B0,"Gainward GTX 680" },
801{ 0x10DE1180,0x1458353C,"GV-N680OC-2GD WindForce GTX 680 OC" },
802{ 0x10DE1180,0x15691180,"Palit GTX 680 JetStream" },
803{ 0x10DE1180,0x19DA1255,"Zotac GTX 680" },
804{ 0x10DE1180,0x38422680,"EVGA GTX 680" },
805{ 0x10DE1180,0x38422682,"EVGA GTX 680 SC" },
806{ 0x10DE1189,0x10438405,"Asus GTX 670 Direct CU II TOP" },
807{ 0x10DE1180,0x10DE097A,"nVidia GTX 670" },
808{ 0x10DE1180,0x15691189,"Palit GTX 670 JetStream" },
809{ 0x10DE1180,0x19DA1255,"Zotac GTX 670" },
810{ 0x10DE1189,0x38422672,"EVGA GTX 670" },
811// 1190 - 119F
812// 11A0 - 11AF
813// 11B0 - 11BF
814// 11C0 - 11CF
815// 11D0 - 11DF
816// 11E0 - 11EF
817// 11F0 - 11FF
818// 1200 - 120F
819{ 0x10DE1210,0x10431487,"Asus GeForce GTX 570M" },
820{ 0x10DE1210,0x10432104,"Asus GeForce GTX 570M" },
821{ 0x10DE1210,0x146210BD,"MSi GeForce GTX 570M" },
822{ 0x10DE1211,0x10280490,"Dell GeForce GTX 580M" },
823{ 0x10DE1247,0x10431407,"Asus GeForce GT 555M" },
824{ 0x10DE1247,0x10431752,"Asus GeForce GT 635M" },
825{ 0x10DE1247,0x10432050,"Asus GeForce GT 555M" },
826{ 0x10DE1247,0x10432051,"Asus GeForce GT 555M" },
827{ 0x10DE1247,0x1043212A,"Asus GeForce GT 635M" },
828{ 0x10DE1247,0x1043212B,"Asus GeForce GT 635M" },
829{ 0x10DE1247,0x1043212C,"Asus GeForce GT 635M" },
830{ 0x10DE1247,0x14581532,"GigaByte GeForce GT 555M" },
831{ 0x10DE1247,0x14586744,"GigaByte GeForce GT 555M" },
832{ 0x10DE1247,0x152D0930,"Quanta GeForce GT 635M" },
833{ 0x10DE1251,0x102802A2,"Dell GeForce GTX 560M" },
834{ 0x10DE1251,0x102802F8,"Dell GeForce GTX 560M" },
835{ 0x10DE1251,0x1028048F,"Dell GeForce GTX 560M" },
836{ 0x10DE1251,0x10280490,"Dell GeForce GTX 560M" },
837{ 0x10DE1251,0x102804BA,"Dell GeForce GTX 560M" },
838{ 0x10DE1251,0x104313B7,"Asus GeForce GTX 560M" },
839{ 0x10DE1251,0x1043204A,"Asus GeForce GTX 560M" },
840{ 0x10DE1251,0x1043204B,"Asus GeForce GTX 560M" },
841{ 0x10DE1251,0x10432100,"Asus GeForce GTX 560M" },
842{ 0x10DE1251,0x10432101,"Asus GeForce GTX 560M" },
843{ 0x10DE1251,0x104384BA,"Asus GeForce GTX 560M" },
844{ 0x10DE1251,0x1179FC00,"Toshiba GeForce GTX 560M" },
845{ 0x10DE1251,0x1179FC01,"Toshiba GeForce GTX 560M" },
846{ 0x10DE1251,0x1179FC05,"Toshiba GeForce GTX 560M" },
847{ 0x10DE1251,0x146210A9,"MSi GeForce GTX 560M" },
848{ 0x10DE1251,0x15585102,"Clevo/Kapok GeForce GTX 560M" },
849{ 0x10DE1251,0x15587100,"Clevo/Kapok GeForce GTX 560M" },
850{ 0x10DE1251,0x15587101,"Clevo/Kapok GeForce GTX 560M" },
851{ 0x10DE1251,0x15587200,"Clevo/Kapok GeForce GTX 560M" },
852{ 0x10DE1251,0x15588000,"Clevo/Kapok GeForce GTX 560M" },
853// 1260 - 126F
854// 1270 - 127F
855// 1280 - 128F
856// 1290 - 129F
857// 12A0 - 12AF
858// 12B0 - 12BF
859// 12C0 - 12CF
860// 12D0 - 12DF
861// 12E0 - 12EF
862// 12F0 - 12FF
863 /* ------ Specific DeviceID and Generic SubDevID. ------ */
864// 0000 - 0040
865// 0040 - 004F
866{ 0x10DE0040,NV_SUB_IDS,"GeForce 6800 Ultra" },
867{ 0x10DE0041,NV_SUB_IDS,"GeForce 6800" },
868{ 0x10DE0042,NV_SUB_IDS,"GeForce 6800 LE" },
869{ 0x10DE0043,NV_SUB_IDS,"GeForce 6800 XE" },
870{ 0x10DE0044,NV_SUB_IDS,"GeForce 6800 XT" },
871{ 0x10DE0045,NV_SUB_IDS,"GeForce 6800 GT" },
872{ 0x10DE0046,NV_SUB_IDS,"GeForce 6800 GT" },
873{ 0x10DE0047,NV_SUB_IDS,"GeForce 6800 GS" },
874{ 0x10DE0048,NV_SUB_IDS,"GeForce 6800 XT" },
875{ 0x10DE004D,NV_SUB_IDS,"Quadro FX 3400" },
876{ 0x10DE004E,NV_SUB_IDS,"Quadro FX 4000" },
877// 0050 - 005F
878// 0060 - 006F
879// 0070 - 007F
880// 0080 - 008F
881// 0090 - 009F
882{ 0x10DE0090,NV_SUB_IDS,"GeForce 7800 GTX" },
883{ 0x10DE0091,NV_SUB_IDS,"GeForce 7800 GTX" },
884{ 0x10DE0092,NV_SUB_IDS,"GeForce 7800 GT" },
885{ 0x10DE0093,NV_SUB_IDS,"GeForce 7800 GS" },
886{ 0x10DE0095,NV_SUB_IDS,"GeForce 7800 SLI" },
887{ 0x10DE0098,NV_SUB_IDS,"GeForce Go 7800" },
888{ 0x10DE0099,NV_SUB_IDS,"GeForce Go 7800 GTX" },
889{ 0x10DE009D,NV_SUB_IDS,"Quadro FX 4500" },
890// 00A0 - 00AF
891// 00B0 - 00BF
892// 00C0 - 00CF
893{ 0x10DE00C0,NV_SUB_IDS,"GeForce 6800 GS" },
894{ 0x10DE00C1,NV_SUB_IDS,"GeForce 6800" },
895{ 0x10DE00C2,NV_SUB_IDS,"GeForce 6800 LE" },
896{ 0x10DE00C3,NV_SUB_IDS,"GeForce 6800 XT" },
897{ 0x10DE00C8,NV_SUB_IDS,"GeForce Go 6800" },
898{ 0x10DE00C9,NV_SUB_IDS,"GeForce Go 6800 Ultra" },
899{ 0x10DE00CC,NV_SUB_IDS,"Quadro FX Go1400" },
900{ 0x10DE00CD,NV_SUB_IDS,"Quadro FX 3450/4000 SDI" },
901{ 0x10DE00CE,NV_SUB_IDS,"Quadro FX 1400" },
902// 00D0 - 00DF
903// 00E0 - 00EF
904// 00F0 - 00FF
905{ 0x10DE00F1,NV_SUB_IDS,"GeForce 6600 GT" },
906{ 0x10DE00F2,NV_SUB_IDS,"GeForce 6600" },
907{ 0x10DE00F3,NV_SUB_IDS,"GeForce 6200" },
908{ 0x10DE00F4,NV_SUB_IDS,"GeForce 6600 LE" },
909{ 0x10DE00F5,NV_SUB_IDS,"GeForce 7800 GS" },
910{ 0x10DE00F6,NV_SUB_IDS,"GeForce 6800 GS/XT" },
911{ 0x10DE00F8,NV_SUB_IDS,"Quadro FX 3400/4400" },
912{ 0x10DE00F9,NV_SUB_IDS,"GeForce 6800 Series GPU" },
913// 0100 - 010F
914// 0110 - 011F
915// 0120 - 012F
916// 0130 - 013F
917// 0140 - 014F
918{ 0x10DE0140,NV_SUB_IDS,"GeForce 6600 GT" },
919{ 0x10DE0141,NV_SUB_IDS,"GeForce 6600" },
920{ 0x10DE0142,NV_SUB_IDS,"GeForce 6600 LE" },
921{ 0x10DE0143,NV_SUB_IDS,"GeForce 6600 VE" },
922{ 0x10DE0144,NV_SUB_IDS,"GeForce Go 6600" },
923{ 0x10DE0145,NV_SUB_IDS,"GeForce 6610 XL" },
924{ 0x10DE0146,NV_SUB_IDS,"GeForce Go 6600 TE/6200 TE" },
925{ 0x10DE0147,NV_SUB_IDS,"GeForce 6700 XL" },
926{ 0x10DE0148,NV_SUB_IDS,"GeForce Go 6600" },
927{ 0x10DE0149,NV_SUB_IDS,"GeForce Go 6600 GT" },
928{ 0x10DE014A,NV_SUB_IDS,"Quadro NVS 440" },
929{ 0x10DE014C,NV_SUB_IDS,"Quadro FX 550" },
930{ 0x10DE014D,NV_SUB_IDS,"Quadro FX 550" },
931{ 0x10DE014E,NV_SUB_IDS,"Quadro FX 540" },
932{ 0x10DE014F,NV_SUB_IDS,"GeForce 6200" },
933// 0150 - 015F
934// 0160 - 016F
935{ 0x10DE0160,NV_SUB_IDS,"GeForce 6500" },
936{ 0x10DE0161,NV_SUB_IDS,"GeForce 6200 TurboCache(TM)" },
937{ 0x10DE0162,NV_SUB_IDS,"GeForce 6200SE TurboCache(TM)" },
938{ 0x10DE0163,NV_SUB_IDS,"GeForce 6200 LE" },
939{ 0x10DE0164,NV_SUB_IDS,"GeForce Go 6200" },
940{ 0x10DE0165,NV_SUB_IDS,"Quadro NVS 285" },
941{ 0x10DE0166,NV_SUB_IDS,"GeForce Go 6400" },
942{ 0x10DE0167,NV_SUB_IDS,"GeForce Go 6200" },
943{ 0x10DE0168,NV_SUB_IDS,"GeForce Go 6400" },
944{ 0x10DE0169,NV_SUB_IDS,"GeForce 6250" },
945{ 0x10DE016A,NV_SUB_IDS,"GeForce 7100 GS" },
946{ 0x10DE016C,NV_SUB_IDS,"NVIDIA NV44GLM" },
947{ 0x10DE016D,NV_SUB_IDS,"NVIDIA NV44GLM" },
948// 0170 - 017F
949// 0180 - 018F
950// 0190 - 019F
951{ 0x10DE0191,NV_SUB_IDS,"GeForce 8800 GTX" },
952{ 0x10DE0193,NV_SUB_IDS,"GeForce 8800 GTS" },
953{ 0x10DE0194,NV_SUB_IDS,"GeForce 8800 Ultra" },
954{ 0x10DE0197,NV_SUB_IDS,"Tesla C870" },
955{ 0x10DE019D,NV_SUB_IDS,"Quadro FX 5600" },
956{ 0x10DE019E,NV_SUB_IDS,"Quadro FX 4600" },
957// 01A0 - 01AF
958// 01B0 - 01BF
959// 01C0 - 01CF
960// 01D0 - 01DF
961{ 0x10DE01D0,NV_SUB_IDS,"GeForce 7350 LE" },
962{ 0x10DE01D1,NV_SUB_IDS,"GeForce 7300 LE" },
963{ 0x10DE01D2,NV_SUB_IDS,"GeForce 7550 LE" },
964{ 0x10DE01D3,NV_SUB_IDS,"GeForce 7300 SE/7200 GS" },
965{ 0x10DE01D6,NV_SUB_IDS,"GeForce Go 7200" },
966{ 0x10DE01D7,NV_SUB_IDS,"Quadro NVS 110M / GeForce Go 7300" }, // 71 SubID
967{ 0x10DE01D8,NV_SUB_IDS,"GeForce Go 7400" },
968{ 0x10DE01D9,NV_SUB_IDS,"GeForce Go 7450" },
969{ 0x10DE01DA,NV_SUB_IDS,"Quadro NVS 110M" },
970{ 0x10DE01DB,NV_SUB_IDS,"Quadro NVS 120M" },
971{ 0x10DE01DC,NV_SUB_IDS,"Quadro FX 350M" },
972{ 0x10DE01DD,NV_SUB_IDS,"GeForce 7500 LE" },
973{ 0x10DE01DE,NV_SUB_IDS,"Quadro FX 350" },
974{ 0x10DE01DF,NV_SUB_IDS,"GeForce 7300 GS" },
975// 01E0 - 01EF
976// 01F0 - 01FF
977{ 0x10DE01F0,NV_SUB_IDS,"GeForce4 MX" },
978// 0200 - 020F
979// 0210 - 021F
980{ 0x10DE0211,NV_SUB_IDS,"GeForce 6800" },
981{ 0x10DE0212,NV_SUB_IDS,"GeForce 6800 LE" },
982{ 0x10DE0215,NV_SUB_IDS,"GeForce 6800 GT" },
983{ 0x10DE0218,NV_SUB_IDS,"GeForce 6800 XT" },
984// 0220 - 022F
985{ 0x10DE0221,NV_SUB_IDS,"GeForce 6200" },
986{ 0x10DE0222,NV_SUB_IDS,"GeForce 6200 A-LE" },
987{ 0x10DE0228,NV_SUB_IDS,"NVIDIA NV44M" },
988// 0230 - 023F
989// 0240 - 024F
990{ 0x10DE0240,NV_SUB_IDS,"GeForce 6150" },
991{ 0x10DE0241,NV_SUB_IDS,"GeForce 6150 LE" },
992{ 0x10DE0242,NV_SUB_IDS,"GeForce 6100" },
993{ 0x10DE0243,NV_SUB_IDS,"NVIDIA C51" },
994{ 0x10DE0244,NV_SUB_IDS,"GeForce Go 6150" },
995{ 0x10DE0245,NV_SUB_IDS,"Quadro NVS 210S / GeForce 6150LE" },
996{ 0x10DE0247,NV_SUB_IDS,"GeForce Go 6100" },
997// 0250 - 025F
998{ 0x10DE025B,NV_SUB_IDS,"Quadro4 700 XGL" },
999// 0260 - 026F
1000// 0270 - 027F
1001// 0280 - 028F
1002// 0290 - 029F
1003{ 0x10DE0290,NV_SUB_IDS,"GeForce 7900 GTX" },
1004{ 0x10DE0291,NV_SUB_IDS,"GeForce 7900 GT/GTO" },
1005{ 0x10DE0292,NV_SUB_IDS,"GeForce 7900 GS" },
1006{ 0x10DE0293,NV_SUB_IDS,"GeForce 7950 GX2" },
1007{ 0x10DE0294,NV_SUB_IDS,"GeForce 7950 GX2" },
1008{ 0x10DE0295,NV_SUB_IDS,"GeForce 7950 GT" },
1009{ 0x10DE0298,NV_SUB_IDS,"GeForce Go 7900 GS" },
1010{ 0x10DE0299,NV_SUB_IDS,"GeForce Go 7900 GTX" },
1011{ 0x10DE029A,NV_SUB_IDS,"Quadro FX 2500M" },
1012{ 0x10DE029B,NV_SUB_IDS,"Quadro FX 1500M" },
1013{ 0x10DE029C,NV_SUB_IDS,"Quadro FX 5500" },
1014{ 0x10DE029D,NV_SUB_IDS,"Quadro FX 3500" },
1015{ 0x10DE029E,NV_SUB_IDS,"Quadro FX 1500" },
1016{ 0x10DE029F,NV_SUB_IDS,"Quadro FX 4500 X2" },
1017// 02A0 - 02AF
1018// 02B0 - 02BF
1019// 02C0 - 02CF
1020// 02D0 - 02DF
1021// 02E0 - 02EF
1022{ 0x10DE02E0,NV_SUB_IDS,"GeForce 7600 GT" },
1023{ 0x10DE02E1,NV_SUB_IDS,"GeForce 7600 GS" },
1024{ 0x10DE02E2,NV_SUB_IDS,"GeForce 7300 GT" },
1025{ 0x10DE02E3,NV_SUB_IDS,"GeForce 7900 GS" },
1026{ 0x10DE02E4,NV_SUB_IDS,"GeForce 7950 GT" },
1027// 02F0 - 02FF
1028// 0300 - 030F
1029{ 0x10DE0301,NV_SUB_IDS,"GeForce FX 5800 Ultra" },
1030{ 0x10DE0302,NV_SUB_IDS,"GeForce FX 5800" },
1031{ 0x10DE0308,NV_SUB_IDS,"Quadro FX 2000" },
1032{ 0x10DE0309,NV_SUB_IDS,"Quadro FX 1000" },
1033// 0310 - 031F
1034{ 0x10DE0311,NV_SUB_IDS,"GeForce FX 5600 Ultra" },
1035{ 0x10DE0312,NV_SUB_IDS,"GeForce FX 5600" },
1036{ 0x10DE0314,NV_SUB_IDS,"GeForce FX 5600XT" },
1037{ 0x10DE031A,NV_SUB_IDS,"GeForce FX Go5600" },
1038{ 0x10DE031B,NV_SUB_IDS,"GeForce FX Go5650" },
1039{ 0x10DE031C,NV_SUB_IDS,"Quadro FX Go700" },
1040// 0320 - 032F
1041{ 0x10DE0320,NV_SUB_IDS,"GeForce FX 5200" },
1042{ 0x10DE0321,NV_SUB_IDS,"GeForce FX 5200 Ultra" },
1043{ 0x10DE0322,NV_SUB_IDS,"GeForce FX 5200" },
1044{ 0x10DE0323,NV_SUB_IDS,"GeForce FX 5200 LE" },
1045{ 0x10DE0324,NV_SUB_IDS,"GeForce FX Go5200" },
1046{ 0x10DE0325,NV_SUB_IDS,"GeForce FX Go5250" },
1047{ 0x10DE0326,NV_SUB_IDS,"GeForce FX 5500" },
1048{ 0x10DE0328,NV_SUB_IDS,"GeForce FX Go5200 32M/64M" },
1049{ 0x10DE0329,NV_SUB_IDS,"GeForce FX Go5200" },
1050{ 0x10DE032A,NV_SUB_IDS,"Quadro NVS 55/280 PCI" },
1051{ 0x10DE032B,NV_SUB_IDS,"Quadro FX 500/600 PCI" },
1052{ 0x10DE032C,NV_SUB_IDS,"GeForce FX Go53xx Series" },
1053{ 0x10DE032D,NV_SUB_IDS,"GeForce FX Go5100" },
1054// { 0x10DE032F,NV_SUB_IDS,"NVIDIA NV34GL" },
1055// 0330 - 033F
1056{ 0x10DE0330,NV_SUB_IDS,"GeForce FX 5900 Ultra" },
1057{ 0x10DE0331,NV_SUB_IDS,"GeForce FX 5900" },
1058{ 0x10DE0332,NV_SUB_IDS,"GeForce FX 5900XT" },
1059{ 0x10DE0333,NV_SUB_IDS,"GeForce FX 5950 Ultra" },
1060{ 0x10DE0334,NV_SUB_IDS,"GeForce FX 5900ZT" },
1061{ 0x10DE0338,NV_SUB_IDS,"Quadro FX 3000" },
1062{ 0x10DE033F,NV_SUB_IDS,"Quadro FX 700" },
1063// 0340 - 034F
1064{ 0x10DE0341,NV_SUB_IDS,"GeForce FX 5700 Ultra" },
1065{ 0x10DE0342,NV_SUB_IDS,"GeForce FX 5700" },
1066{ 0x10DE0343,NV_SUB_IDS,"GeForce FX 5700LE" },
1067{ 0x10DE0344,NV_SUB_IDS,"GeForce FX 5700VE" },
1068// { 0x10DE0345,NV_SUB_IDS,"NVIDIA NV36.5" },
1069{ 0x10DE0347,NV_SUB_IDS,"GeForce FX Go5700" },
1070{ 0x10DE0348,NV_SUB_IDS,"GeForce FX Go5700" },
1071// { 0x10DE0349,NV_SUB_IDS,"NVIDIA NV36M Pro" },
1072// { 0x10DE034B,NV_SUB_IDS,"NVIDIA NV36MAP" },
1073{ 0x10DE034C,NV_SUB_IDS,"Quadro FX Go1000" },
1074{ 0x10DE034E,NV_SUB_IDS,"Quadro FX 1100" },
1075// { 0x10DE034F,NV_SUB_IDS,"NVIDIA NV36GL" },
1076// 0350 - 035F
1077// 0360 - 036F
1078// 0370 - 037F
1079// 0380 - 038F
1080{ 0x10DE038B,NV_SUB_IDS,"GeForce 7650 GS" },
1081// 0390 - 039F
1082{ 0x10DE0390,NV_SUB_IDS,"GeForce 7650 GS" },
1083{ 0x10DE0391,NV_SUB_IDS,"GeForce 7600 GT" },
1084{ 0x10DE0392,NV_SUB_IDS,"GeForce 7600 GS" },
1085{ 0x10DE0393,NV_SUB_IDS,"GeForce 7300 GT" },
1086{ 0x10DE0394,NV_SUB_IDS,"GeForce 7600 LE" },
1087{ 0x10DE0395,NV_SUB_IDS,"GeForce 7300 GT" },
1088{ 0x10DE0397,NV_SUB_IDS,"GeForce Go 7700" },
1089{ 0x10DE0398,NV_SUB_IDS,"GeForce Go 7600" },
1090{ 0x10DE0399,NV_SUB_IDS,"GeForce Go 7600 GT"},
1091{ 0x10DE039A,NV_SUB_IDS,"Quadro NVS 300M" },
1092{ 0x10DE039B,NV_SUB_IDS,"GeForce Go 7900 SE" },
1093{ 0x10DE039C,NV_SUB_IDS,"Quadro FX 560M" },
1094{ 0x10DE039E,NV_SUB_IDS,"Quadro FX 560" },
1095// 03A0 - 03AF
1096// 03B0 - 03BF
1097// 03C0 - 03CF
1098// 03D0 - 03DF
1099{ 0x10DE03D0,NV_SUB_IDS,"GeForce 6150SE nForce 430" },
1100{ 0x10DE03D1,NV_SUB_IDS,"GeForce 6100 nForce 405" },
1101{ 0x10DE03D2,NV_SUB_IDS,"GeForce 6100 nForce 400" },
1102{ 0x10DE03D5,NV_SUB_IDS,"GeForce 6100 nForce 420" },
1103{ 0x10DE03D6,NV_SUB_IDS,"GeForce 7025 / nForce 630a" },
1104// 03E0 - 03EF
1105// 03F0 - 03FF
1106// 0400 - 040F
1107{ 0x10DE0400,NV_SUB_IDS,"GeForce 8600 GTS" },
1108{ 0x10DE0401,NV_SUB_IDS,"GeForce 8600 GT" },
1109{ 0x10DE0402,NV_SUB_IDS,"GeForce 8600 GT" },
1110{ 0x10DE0403,NV_SUB_IDS,"GeForce 8600 GS" },
1111{ 0x10DE0404,NV_SUB_IDS,"GeForce 8400 GS" },
1112{ 0x10DE0405,NV_SUB_IDS,"GeForce 9500M GS" },
1113{ 0x10DE0406,NV_SUB_IDS,"GeForce 8300 GS" },
1114{ 0x10DE0407,NV_SUB_IDS,"GeForce 8600M GT" },
1115{ 0x10DE0408,NV_SUB_IDS,"GeForce 9650M GS" },
1116{ 0x10DE0409,NV_SUB_IDS,"GeForce 8700M GT" },
1117{ 0x10DE040A,NV_SUB_IDS,"Quadro FX 370" },
1118{ 0x10DE040B,NV_SUB_IDS,"Quadro NVS 320M" },
1119{ 0x10DE040C,NV_SUB_IDS,"Quadro FX 570M" },
1120{ 0x10DE040D,NV_SUB_IDS,"Quadro FX 1600M" },
1121{ 0x10DE040E,NV_SUB_IDS,"Quadro FX 570" },
1122{ 0x10DE040F,NV_SUB_IDS,"Quadro FX 1700" },
1123// 0410 - 041F
1124{ 0x10DE0410,NV_SUB_IDS,"GeForce GT 330" },
1125// 0420 - 042F
1126{ 0x10DE0420,NV_SUB_IDS,"GeForce 8400 SE" },
1127{ 0x10DE0421,NV_SUB_IDS,"GeForce 8500 GT" },
1128{ 0x10DE0422,NV_SUB_IDS,"GeForce 8400 GS" },
1129{ 0x10DE0423,NV_SUB_IDS,"GeForce 8300 GS" },
1130{ 0x10DE0424,NV_SUB_IDS,"GeForce 8400 GS" },
1131{ 0x10DE0425,NV_SUB_IDS,"GeForce 8600M GS" },
1132{ 0x10DE0426,NV_SUB_IDS,"GeForce 8400M GT" },
1133{ 0x10DE0427,NV_SUB_IDS,"GeForce 8400M GS" },
1134{ 0x10DE0428,NV_SUB_IDS,"GeForce 8400M G" },
1135{ 0x10DE0429,NV_SUB_IDS,"Quadro NVS 140M" },
1136{ 0x10DE042A,NV_SUB_IDS,"Quadro NVS 130M" },
1137{ 0x10DE042B,NV_SUB_IDS,"Quadro NVS 135M" },
1138{ 0x10DE042C,NV_SUB_IDS,"GeForce 9400 GT" },
1139{ 0x10DE042D,NV_SUB_IDS,"Quadro FX 360M" },
1140{ 0x10DE042E,NV_SUB_IDS,"GeForce 9300M G" },
1141{ 0x10DE042F,NV_SUB_IDS,"Quadro NVS 290" },
1142// 0430 - 043F
1143// 0440 - 044F
1144// 0450 - 045F
1145// 0460 - 046F
1146// 0470 - 047F
1147// 0480 - 048F
1148// 0490 - 049F
1149// 04A0 - 04AF
1150// 04B0 - 04BF
1151// 04C0 - 04CF
1152{ 0x10DE04C0,NV_SUB_IDS,"NVIDIA G78" },
1153{ 0x10DE04C1,NV_SUB_IDS,"NVIDIA G78" },
1154{ 0x10DE04C2,NV_SUB_IDS,"NVIDIA G78" },
1155{ 0x10DE04C3,NV_SUB_IDS,"NVIDIA G78" },
1156{ 0x10DE04C4,NV_SUB_IDS,"NVIDIA G78" },
1157{ 0x10DE04C5,NV_SUB_IDS,"NVIDIA G78" },
1158{ 0x10DE04C6,NV_SUB_IDS,"NVIDIA G78" },
1159{ 0x10DE04C7,NV_SUB_IDS,"NVIDIA G78" },
1160{ 0x10DE04C8,NV_SUB_IDS,"NVIDIA G78" },
1161{ 0x10DE04C9,NV_SUB_IDS,"NVIDIA G78" },
1162{ 0x10DE04CA,NV_SUB_IDS,"NVIDIA G78" },
1163{ 0x10DE04CB,NV_SUB_IDS,"NVIDIA G78" },
1164{ 0x10DE04CC,NV_SUB_IDS,"NVIDIA G78" },
1165{ 0x10DE04CD,NV_SUB_IDS,"NVIDIA G78" },
1166{ 0x10DE04CE,NV_SUB_IDS,"NVIDIA G78" },
1167{ 0x10DE04CF,NV_SUB_IDS,"NVIDIA G78" },
1168// 04D0 - 04DF
1169// 04E0 - 04EF
1170// 04F0 - 04FF
1171// 0500 - 050F
1172// 0510 - 051F
1173// 0520 - 052F
1174// 0530 - 053F
1175{ 0x10DE0530,NV_SUB_IDS,"GeForce 7190M / nForce 650M" },
1176{ 0x10DE0531,NV_SUB_IDS,"GeForce 7150M / nForce 630M" },
1177{ 0x10DE0533,NV_SUB_IDS,"GeForce 7000M / nForce 610M" },
1178{ 0x10DE053A,NV_SUB_IDS,"GeForce 7050 PV / nForce 630a" },
1179{ 0x10DE053B,NV_SUB_IDS,"GeForce 7050 PV / nForce 630a" },
1180{ 0x10DE053E,NV_SUB_IDS,"GeForce 7025 / nForce 630a" },
1181// 0540 - 054F
1182// 0550 - 055F
1183// 0560 - 056F
1184// 0570 - 057F
1185// 0580 - 058F
1186// 0590 - 059F
1187// 05A0 - 05AF
1188// 05B0 - 05BF
1189// 05C0 - 05CF
1190// 05D0 - 05DF
1191// 05E0 - 05EF
1192{ 0x10DE05E0,NV_SUB_IDS,"GeForce GTX 295" },
1193{ 0x10DE05E1,NV_SUB_IDS,"GeForce GTX 280" },
1194{ 0x10DE05E2,NV_SUB_IDS,"GeForce GTX 260" },
1195{ 0x10DE05E3,NV_SUB_IDS,"GeForce GTX 285" },
1196{ 0x10DE05E4,NV_SUB_IDS,"NVIDIA GT200" },
1197{ 0x10DE05E5,NV_SUB_IDS,"NVIDIA GT200" },
1198{ 0x10DE05E6,NV_SUB_IDS,"GeForce GTX 275" },
1199{ 0x10DE05E7,NV_SUB_IDS,"nVidia Tesla C1060" },
1200{ 0x10DE05E8,NV_SUB_IDS,"NVIDIA GT200" },
1201{ 0x10DE05E9,NV_SUB_IDS,"NVIDIA GT200" },
1202{ 0x10DE05EA,NV_SUB_IDS,"GeForce GTX 260" },
1203{ 0x10DE05EB,NV_SUB_IDS,"GeForce GTX 295" },
1204{ 0x10DE05EC,NV_SUB_IDS,"NVIDIA GT200" },
1205{ 0x10DE05ED,NV_SUB_IDS,"Quadroplex 2200 D2" },
1206{ 0x10DE05EE,NV_SUB_IDS,"NVIDIA GT200" },
1207{ 0x10DE05EF,NV_SUB_IDS,"NVIDIA GT200" },
1208// 05F0 - 05FF
1209{ 0x10DE05F0,NV_SUB_IDS,"NVIDIA GT200" },
1210{ 0x10DE05F1,NV_SUB_IDS,"NVIDIA GT200" },
1211{ 0x10DE05F2,NV_SUB_IDS,"NVIDIA GT200" },
1212{ 0x10DE05F3,NV_SUB_IDS,"NVIDIA GT200" },
1213{ 0x10DE05F4,NV_SUB_IDS,"NVIDIA GT200" },
1214{ 0x10DE05F5,NV_SUB_IDS,"NVIDIA GT200" },
1215{ 0x10DE05F6,NV_SUB_IDS,"NVIDIA GT200" },
1216{ 0x10DE05F7,NV_SUB_IDS,"NVIDIA GT200" },
1217{ 0x10DE05F8,NV_SUB_IDS,"Quadroplex 2200 S4" },
1218{ 0x10DE05F9,NV_SUB_IDS,"NVIDIA Quadro CX" },
1219{ 0x10DE05FA,NV_SUB_IDS,"NVIDIA GT200" },
1220{ 0x10DE05FB,NV_SUB_IDS,"NVIDIA GT200" },
1221{ 0x10DE05FC,NV_SUB_IDS,"NVIDIA GT200" },
1222{ 0x10DE05FD,NV_SUB_IDS,"Quadro FX 5800" },
1223{ 0x10DE05FE,NV_SUB_IDS,"Quadro FX 4800" },
1224{ 0x10DE05FF,NV_SUB_IDS,"Quadro FX 3800" },
1225// 0600 - 060F
1226{ 0x10DE0600,NV_SUB_IDS,"GeForce 8800 GTS 512" },
1227{ 0x10DE0601,NV_SUB_IDS,"GeForce 9800 GT" },
1228{ 0x10DE0602,NV_SUB_IDS,"GeForce 8800 GT" },
1229{ 0x10DE0603,NV_SUB_IDS,"GeForce GT 230" },
1230{ 0x10DE0604,NV_SUB_IDS,"GeForce 9800 GX2" },
1231{ 0x10DE0605,NV_SUB_IDS,"GeForce 9800 GT" },
1232{ 0x10DE0606,NV_SUB_IDS,"GeForce 8800 GS" },
1233{ 0x10DE0607,NV_SUB_IDS,"GeForce GTS 240" },
1234{ 0x10DE0608,NV_SUB_IDS,"GeForce 9800M GTX" },
1235{ 0x10DE0609,NV_SUB_IDS,"GeForce 8800M GTS" },
1236{ 0x10DE060A,NV_SUB_IDS,"GeForce GTX 280M" },
1237{ 0x10DE060B,NV_SUB_IDS,"GeForce 9800M GT" },
1238{ 0x10DE060C,NV_SUB_IDS,"GeForce 8800M GTX" },
1239{ 0x10DE060D,NV_SUB_IDS,"GeForce 8800 GS" },
1240{ 0x10DE060F,NV_SUB_IDS,"GeForce GTX 285M" },
1241// 0610 - 061F
1242{ 0x10DE0610,NV_SUB_IDS,"GeForce 9600 GSO" },
1243{ 0x10DE0611,NV_SUB_IDS,"GeForce 8800 GT" },
1244{ 0x10DE0612,NV_SUB_IDS,"GeForce 9800 GTX" },
1245{ 0x10DE0613,NV_SUB_IDS,"GeForce 9800 GTX+" },
1246{ 0x10DE0614,NV_SUB_IDS,"GeForce 9800 GT" },
1247{ 0x10DE0615,NV_SUB_IDS,"GeForce GTS 250" },
1248{ 0x10DE0617,NV_SUB_IDS,"GeForce 9800M GTX" },
1249{ 0x10DE0618,NV_SUB_IDS,"GeForce GTX 170M" },
1250{ 0x10DE0619,NV_SUB_IDS,"Quadro FX 4700 X2" },
1251{ 0x10DE061A,NV_SUB_IDS,"Quadro FX 3700" },
1252{ 0x10DE061B,NV_SUB_IDS,"Quadro VX 200" },
1253{ 0x10DE061C,NV_SUB_IDS,"Quadro FX 3600M" },
1254{ 0x10DE061D,NV_SUB_IDS,"Quadro FX 2800M" },
1255{ 0x10DE061E,NV_SUB_IDS,"Quadro FX 3700M" },
1256{ 0x10DE061F,NV_SUB_IDS,"Quadro FX 3800M" },
1257// 0620 - 062F
1258{ 0x10DE0620,NV_SUB_IDS,"NVIDIA G94" },
1259{ 0x10DE0621,NV_SUB_IDS,"GeForce GT 230" },
1260{ 0x10DE0622,NV_SUB_IDS,"GeForce 9600 GT" },
1261{ 0x10DE0623,NV_SUB_IDS,"GeForce 9600 GS" },
1262{ 0x10DE0624,NV_SUB_IDS,"NVIDIA G94" },
1263{ 0x10DE0625,NV_SUB_IDS,"GeForce 9600 GSO 512"},
1264{ 0x10DE0626,NV_SUB_IDS,"GeForce GT 130" },
1265{ 0x10DE0627,NV_SUB_IDS,"GeForce GT 140" },
1266{ 0x10DE0628,NV_SUB_IDS,"GeForce 9800M GTS" },
1267{ 0x10DE0629,NV_SUB_IDS,"NVIDIA G94" },
1268{ 0x10DE062A,NV_SUB_IDS,"GeForce 9700M GTS" },
1269{ 0x10DE062B,NV_SUB_IDS,"GeForce 9800M GS" },
1270{ 0x10DE062C,NV_SUB_IDS,"GeForce 9800M GTS" },
1271{ 0x10DE062D,NV_SUB_IDS,"GeForce 9600 GT" },
1272{ 0x10DE062E,NV_SUB_IDS,"GeForce 9600 GT" },
1273{ 0x10DE062F,NV_SUB_IDS,"GeForce 9800 S" },
1274// 0630 - 063F
1275{ 0x10DE0630,NV_SUB_IDS,"NVIDIA G94" },
1276{ 0x10DE0631,NV_SUB_IDS,"GeForce GTS 160M" },
1277{ 0x10DE0632,NV_SUB_IDS,"GeForce GTS 150M" },
1278{ 0x10DE0633,NV_SUB_IDS,"NVIDIA G94" },
1279{ 0x10DE0634,NV_SUB_IDS,"NVIDIA G94" },
1280{ 0x10DE0635,NV_SUB_IDS,"GeForce 9600 GSO" },
1281{ 0x10DE0636,NV_SUB_IDS,"NVIDIA G94" },
1282{ 0x10DE0637,NV_SUB_IDS,"GeForce 9600 GT" },
1283{ 0x10DE0638,NV_SUB_IDS,"Quadro FX 1800" },
1284{ 0x10DE0639,NV_SUB_IDS,"NVIDIA G94" },
1285{ 0x10DE063A,NV_SUB_IDS,"Quadro FX 2700M" },
1286{ 0x10DE063B,NV_SUB_IDS,"NVIDIA G94" },
1287{ 0x10DE063C,NV_SUB_IDS,"NVIDIA G94" },
1288{ 0x10DE063D,NV_SUB_IDS,"NVIDIA G94" },
1289{ 0x10DE063E,NV_SUB_IDS,"NVIDIA G94" },
1290{ 0x10DE063F,NV_SUB_IDS,"NVIDIA G94" },
1291// 0640 - 064F
1292{ 0x10DE0640,NV_SUB_IDS,"GeForce 9500 GT" },
1293{ 0x10DE0641,NV_SUB_IDS,"GeForce 9400 GT" },
1294{ 0x10DE0642,NV_SUB_IDS,"GeForce 8400 GS" },
1295{ 0x10DE0643,NV_SUB_IDS,"GeForce 9500 GT" },
1296{ 0x10DE0644,NV_SUB_IDS,"GeForce 9500 GS" },
1297{ 0x10DE0645,NV_SUB_IDS,"GeForce 9500 GS" },
1298{ 0x10DE0646,NV_SUB_IDS,"GeForce GT 120" },
1299{ 0x10DE0647,NV_SUB_IDS,"GeForce 9600M GT" },
1300{ 0x10DE0648,NV_SUB_IDS,"GeForce 9600M GS" },
1301{ 0x10DE0649,NV_SUB_IDS,"GeForce 9600M GT" },
1302{ 0x10DE064A,NV_SUB_IDS,"GeForce 9700M GT" },
1303{ 0x10DE064B,NV_SUB_IDS,"GeForce 9500M G" },
1304{ 0x10DE064C,NV_SUB_IDS,"GeForce 9650M GT" },
1305// 0650 - 065F
1306{ 0x10DE0650,NV_SUB_IDS,"NVIDIA G96-825" },
1307{ 0x10DE0651,NV_SUB_IDS,"GeForce G 110M" },
1308{ 0x10DE0652,NV_SUB_IDS,"GeForce GT 130M" },
1309{ 0x10DE0653,NV_SUB_IDS,"GeForce GT 120M" },
1310{ 0x10DE0654,NV_SUB_IDS,"GeForce GT 220M" },
1311{ 0x10DE0655,NV_SUB_IDS,"GeForce GT 120" },
1312{ 0x10DE0656,NV_SUB_IDS,"GeForce 9650 S" },
1313{ 0x10DE0657,NV_SUB_IDS,"NVIDIA G96" },
1314{ 0x10DE0658,NV_SUB_IDS,"Quadro FX 380" },
1315{ 0x10DE0659,NV_SUB_IDS,"Quadro FX 580" },
1316{ 0x10DE065A,NV_SUB_IDS,"Quadro FX 1700M" },
1317{ 0x10DE065B,NV_SUB_IDS,"GeForce 9400 GT" },
1318{ 0x10DE065C,NV_SUB_IDS,"Quadro FX 770M" },
1319{ 0x10DE065D,NV_SUB_IDS,"NVIDIA G96" },
1320{ 0x10DE065E,NV_SUB_IDS,"NVIDIA G96" },
1321{ 0x10DE065F,NV_SUB_IDS,"GeForce G210" },
1322// 0660 - 066F
1323// 0670 - 067F
1324// 0680 - 068F
1325// 0690 - 069F
1326// 06A0 - 06AF
1327{ 0x10DE06A0,NV_SUB_IDS,"NVIDIA GT214" },
1328// 06B0 - 06BF
1329{ 0x10DE06B0,NV_SUB_IDS,"NVIDIA GT214" },
1330// 06C0 - 06CF
1331{ 0x10DE06C0,NV_SUB_IDS,"GeForce GTX 480" },
1332{ 0x10DE06C3,NV_SUB_IDS,"GeForce GTX D12U" },
1333{ 0x10DE06C4,NV_SUB_IDS,"GeForce GTX 465" },
1334{ 0x10DE06CA,NV_SUB_IDS,"GeForce GTX 480M" },
1335{ 0x10DE06CD,NV_SUB_IDS,"GeForce GTX 470" },
1336// 06D0 - 06DF
1337{ 0x10DE06D1,NV_SUB_IDS,"Tesla C2050 / C2070" },
1338{ 0x10DE06D2,NV_SUB_IDS,"Tesla M2070 / X2070" },
1339{ 0x10DE06D8,NV_SUB_IDS,"Quadro 6000" },
1340{ 0x10DE06D9,NV_SUB_IDS,"Quadro 5000" },
1341{ 0x10DE06DC,NV_SUB_IDS,"Quadro 6000" },
1342{ 0x10DE06DD,NV_SUB_IDS,"nVidia Quadro 4000" },
1343{ 0x10DE06DE,NV_SUB_IDS,"nVidia Tesla S2050" },
1344{ 0x10DE06DF,NV_SUB_IDS,"Tesla M2070Q" },
1345// 06E0 - 06EF
1346{ 0x10DE06E0,NV_SUB_IDS,"GeForce 9300 GE" },
1347{ 0x10DE06E1,NV_SUB_IDS,"GeForce 9300 GS" },
1348{ 0x10DE06E2,NV_SUB_IDS,"GeForce 8400" },
1349{ 0x10DE06E3,NV_SUB_IDS,"GeForce 8400 SE" },
1350{ 0x10DE06E4,NV_SUB_IDS,"GeForce 8400 GS" },
1351{ 0x10DE06E5,NV_SUB_IDS,"GeForce 9300M GS" },
1352{ 0x10DE06E6,NV_SUB_IDS,"GeForce G100" },
1353{ 0x10DE06E7,NV_SUB_IDS,"GeForce 9300 SE" },
1354{ 0x10DE06E8,NV_SUB_IDS,"GeForce 9200M GS" },
1355{ 0x10DE06E9,NV_SUB_IDS,"GeForce 9300M GS" },
1356{ 0x10DE06EA,NV_SUB_IDS,"Quadro NVS 150M" },
1357{ 0x10DE06EB,NV_SUB_IDS,"Quadro NVS 160M" },
1358{ 0x10DE06EC,NV_SUB_IDS,"GeForce G 105M" },
1359{ 0x10DE06ED,NV_SUB_IDS,"NVIDIA G98" },
1360{ 0x10DE06EF,NV_SUB_IDS,"GeForce G 103M" },
1361// 06F0 - 06FF
1362{ 0x10DE06F0,NV_SUB_IDS,"NVIDIA G98" },
1363{ 0x10DE06F1,NV_SUB_IDS,"GeForce G105M" },
1364{ 0x10DE06F2,NV_SUB_IDS,"NVIDIA G98" },
1365{ 0x10DE06F3,NV_SUB_IDS,"NVIDIA G98" },
1366{ 0x10DE06F4,NV_SUB_IDS,"NVIDIA G98" },
1367{ 0x10DE06F5,NV_SUB_IDS,"NVIDIA G98" },
1368{ 0x10DE06F6,NV_SUB_IDS,"NVIDIA G98" },
1369{ 0x10DE06F7,NV_SUB_IDS,"NVIDIA G98" },
1370{ 0x10DE06F8,NV_SUB_IDS,"Quadro NVS 420" },
1371{ 0x10DE06F9,NV_SUB_IDS,"Quadro FX 370 LP" },
1372{ 0x10DE06FA,NV_SUB_IDS,"Quadro NVS 450" },
1373{ 0x10DE06FB,NV_SUB_IDS,"Quadro FX 370M" },
1374{ 0x10DE06FC,NV_SUB_IDS,"NVIDIA G98" },
1375{ 0x10DE06FD,NV_SUB_IDS,"Quadro NVS 295" },
1376{ 0x10DE06FE,NV_SUB_IDS,"NVIDIA G98" },
1377// { 0x10DE06FF,NV_SUB_IDS,"HICx16 + Graphics" },
1378// 0700 - 070F
1379// 0710 - 071F
1380// 0720 - 072F
1381// 0730 - 073F
1382// 0740 - 074F
1383// 0750 - 075F
1384// 0760 - 076F
1385// 0770 - 077F
1386// 0780 - 078F
1387// 0790 - 079F
1388// 07A0 - 07AF
1389// 07B0 - 07BF
1390// 07C0 - 07CF
1391// 07D0 - 07DF
1392// 07E0 - 07EF
1393{ 0x10DE07E0,NV_SUB_IDS,"GeForce 7150 / nForce 630i" },
1394{ 0x10DE07E1,NV_SUB_IDS,"GeForce 7100 / nForce 630i" },
1395{ 0x10DE07E2,NV_SUB_IDS,"GeForce 7050 / nForce 630i" },
1396{ 0x10DE07E3,NV_SUB_IDS,"GeForce 7050 / nForce 610i" },
1397{ 0x10DE07E5,NV_SUB_IDS,"GeForce 7050 / nForce 620i" },
1398// 07F0 - 07FF
1399// 0800 - 080F
1400// 0810 - 081F
1401// 0820 - 082F
1402// 0830 - 083F
1403// 0840 - 084F
1404{ 0x10DE0840,NV_SUB_IDS,"GeForce 8200M" },
1405{ 0x10DE0844,NV_SUB_IDS,"GeForce 9100M G" },
1406{ 0x10DE0845,NV_SUB_IDS,"GeForce 8200M G" },
1407{ 0x10DE0846,NV_SUB_IDS,"GeForce 9200" },
1408{ 0x10DE0847,NV_SUB_IDS,"GeForce 9100" },
1409{ 0x10DE0848,NV_SUB_IDS,"GeForce 8300" },
1410{ 0x10DE0849,NV_SUB_IDS,"GeForce 8200" },
1411{ 0x10DE084A,NV_SUB_IDS,"nForce 730a" },
1412{ 0x10DE084B,NV_SUB_IDS,"GeForce 9200" },
1413{ 0x10DE084C,NV_SUB_IDS,"nForce 980a/780a SLI" },
1414{ 0x10DE084D,NV_SUB_IDS,"nForce 750a SLI" },
1415{ 0x10DE084F,NV_SUB_IDS,"GeForce 8100 / nForce 720a" },
1416// 0850 - 085F
1417// 0860 - 086F
1418{ 0x10DE0860,NV_SUB_IDS,"GeForce 9300" },
1419{ 0x10DE0861,NV_SUB_IDS,"GeForce 9400" },
1420{ 0x10DE0862,NV_SUB_IDS,"GeForce 9400M G" },
1421{ 0x10DE0863,NV_SUB_IDS,"GeForce 9400M" },
1422{ 0x10DE0864,NV_SUB_IDS,"GeForce 9300" },
1423{ 0x10DE0865,NV_SUB_IDS,"GeForce 9300" },
1424{ 0x10DE0866,NV_SUB_IDS,"GeForce 9400M G" },
1425{ 0x10DE0867,NV_SUB_IDS,"GeForce 9400" },
1426{ 0x10DE0868,NV_SUB_IDS,"nForce 760i SLI" },
1427{ 0x10DE0869,NV_SUB_IDS,"GeForce 9400" },
1428{ 0x10DE086A,NV_SUB_IDS,"GeForce 9400" },
1429{ 0x10DE086C,NV_SUB_IDS,"GeForce 9300 / nForce 730i" },
1430{ 0x10DE086D,NV_SUB_IDS,"GeForce 9200" },
1431{ 0x10DE086E,NV_SUB_IDS,"GeForce 9100M G" },
1432{ 0x10DE086F,NV_SUB_IDS,"GeForce 8200M G" },
1433// 0870 - 087F
1434{ 0x10DE0870,NV_SUB_IDS,"GeForce 9400M" },
1435{ 0x10DE0871,NV_SUB_IDS,"GeForce 9200" },
1436{ 0x10DE0872,NV_SUB_IDS,"GeForce G102M" },
1437{ 0x10DE0873,NV_SUB_IDS,"GeForce G102M" },
1438{ 0x10DE0874,NV_SUB_IDS,"ION 9300M" },
1439{ 0x10DE0876,NV_SUB_IDS,"ION 9400M" },
1440{ 0x10DE087A,NV_SUB_IDS,"GeForce 9400" },
1441{ 0x10DE087D,NV_SUB_IDS,"ION 9400M" },
1442{ 0x10DE087E,NV_SUB_IDS,"ION LE" },
1443{ 0x10DE087F,NV_SUB_IDS,"ION LE" },
1444// 0880 - 088F
1445// 0890 - 089F
1446// 08A0 - 08AF
1447{ 0x10DE08A0,NV_SUB_IDS,"GeForce 320M" },
1448// { 0x10DE08A1,NV_SUB_IDS,"NVIDIA MCP89-MZT" },
1449// { 0x10DE08A2,NV_SUB_IDS,"NVIDIA MCP89-EPT" },
1450{ 0x10DE08A3,NV_SUB_IDS,"GeForce 320M" },
1451{ 0x10DE08A4,NV_SUB_IDS,"GeForce 320M" },
1452{ 0x10DE08A5,NV_SUB_IDS,"GeForce 320M" },
1453// 08B0 - 08BF
1454// { 0x10DE08B0,NV_SUB_IDS,"MCP83 MMD" },
1455{ 0x10DE08B1,NV_SUB_IDS,"GeForce 300M" },
1456// { 0x10DE08B2,NV_SUB_IDS,"NVIDIA MCP83-MJ" },
1457// { 0x10DE08B3,NV_SUB_IDS,"NVIDIA MCP89 MM9" },
1458// 08C0 - 08CF
1459// 08D0 - 08DF
1460// 08E0 - 08EF
1461// 08F0 - 08FF
1462// 0900 - 090F
1463// 0910 - 091F
1464// 0920 - 092F
1465// 0930 - 093F
1466// 0940 - 094F
1467// 0950 - 095F
1468// 0960 - 096F
1469// 0970 - 097F
1470// 0980 - 098F
1471// 0990 - 099F
1472// 09A0 - 09AF
1473// 09B0 - 09BF
1474// 09C0 - 09CF
1475// 09D0 - 09DF
1476// 09E0 - 09EF
1477// 09F0 - 09FF
1478// 0A00 - 0A0F
1479// { 0x10DE0A00,NV_SUB_IDS,"NVIDIA GT212" },
1480// 0A10 - 0A1F
1481// { 0x10DE0A10,NV_SUB_IDS,"NVIDIA GT212" },
1482// 0A20 - 0A2F
1483{ 0x10DE0A20,NV_SUB_IDS,"GeForce GT 220" },
1484// { 0x10DE0A21,NV_SUB_IDS,"NVIDIA D10M2-20" },
1485{ 0x10DE0A22,NV_SUB_IDS,"GeForce 315" },
1486{ 0x10DE0A23,NV_SUB_IDS,"GeForce 210" },
1487{ 0x10DE0A26,NV_SUB_IDS,"GeForce 405" },
1488{ 0x10DE0A27,NV_SUB_IDS,"GeForce 405" },
1489{ 0x10DE0A28,NV_SUB_IDS,"GeForce GT 230M" },
1490{ 0x10DE0A29,NV_SUB_IDS,"GeForce GT 330M" },
1491{ 0x10DE0A2A,NV_SUB_IDS,"GeForce GT 230M" },
1492{ 0x10DE0A2B,NV_SUB_IDS,"GeForce GT 330M" },
1493{ 0x10DE0A2C,NV_SUB_IDS,"NVS 5100M" },
1494{ 0x10DE0A2D,NV_SUB_IDS,"GeForce GT 320M" },
1495// 0A30 - 0A3F
1496// { 0x10DE0A30,NV_SUB_IDS,"NVIDIA GT216" },
1497{ 0x10DE0A32,NV_SUB_IDS,"GeForce GT 415" },
1498{ 0x10DE0A34,NV_SUB_IDS,"GeForce GT 240M" },
1499{ 0x10DE0A35,NV_SUB_IDS,"GeForce GT 325M" },
1500{ 0x10DE0A38,NV_SUB_IDS,"Quadro 400" },
1501{ 0x10DE0A3C,NV_SUB_IDS,"Quadro FX 880M" },
1502// { 0x10DE0A3D,NV_SUB_IDS,"NVIDIA N10P-ES" },
1503// { 0x10DE0A3F,NV_SUB_IDS,"NVIDIA GT216-INT" },
1504// 0A40 - 0A4F
1505// 0A50 - 0A5F
1506// 0A60 - 0A6F
1507{ 0x10DE0A60,NV_SUB_IDS,"GeForce G210" },
1508// { 0x10DE0A61,NV_SUB_IDS,"NVIDIA NVS 2100" },
1509{ 0x10DE0A62,NV_SUB_IDS,"GeForce 205" },
1510{ 0x10DE0A63,NV_SUB_IDS,"GeForce 310" },
1511{ 0x10DE0A64,NV_SUB_IDS,"ION" },
1512{ 0x10DE0A65,NV_SUB_IDS,"GeForce 210" },
1513{ 0x10DE0A66,NV_SUB_IDS,"GeForce 310" },
1514{ 0x10DE0A67,NV_SUB_IDS,"GeForce 315" },
1515{ 0x10DE0A68,NV_SUB_IDS,"GeForce G105M" },
1516{ 0x10DE0A69,NV_SUB_IDS,"GeForce G105M" },
1517{ 0x10DE0A6A,NV_SUB_IDS,"NVS 2100M" },
1518{ 0x10DE0A6C,NV_SUB_IDS,"NVS 3100M" },
1519{ 0x10DE0A6E,NV_SUB_IDS,"GeForce 305M" },
1520{ 0x10DE0A6F,NV_SUB_IDS,"ION" },
1521// 0A70 - 0A7F
1522{ 0x10DE0A70,NV_SUB_IDS,"GeForce 310M" },
1523{ 0x10DE0A71,NV_SUB_IDS,"GeForce 305M" },
1524{ 0x10DE0A72,NV_SUB_IDS,"GeForce 310M" },
1525{ 0x10DE0A73,NV_SUB_IDS,"GeForce 305M" },
1526{ 0x10DE0A74,NV_SUB_IDS,"GeForce G210M" },
1527{ 0x10DE0A75,NV_SUB_IDS,"GeForce G310M" },
1528{ 0x10DE0A76,NV_SUB_IDS,"ION" },
1529{ 0x10DE0A78,NV_SUB_IDS,"Quadro FX 380 LP" },
1530// { 0x10DE0A79,NV_SUB_IDS,"N12M-NS-S" },
1531{ 0x10DE0A7A,NV_SUB_IDS,"GeForce 315M" },
1532{ 0x10DE0A7B,NV_SUB_IDS,"GeForce 505" },
1533{ 0x10DE0A7C,NV_SUB_IDS,"Quadro FX 380M" },
1534// { 0x10DE0A7D,NV_SUB_IDS,"NVIDIA GT218-ES" },
1535// { 0x10DE0A7E,NV_SUB_IDS,"NVIDIA GT218-INT-S" },
1536// { 0x10DE0A7F,NV_SUB_IDS,"NVIDIA GT218-INT-B" },
1537// 0A80 - 0A8F
1538// 0A90 - 0A9F
1539// 0AA0 - 0AAF
1540// 0AB0 - 0ABF
1541// 0AC0 - 0ACF
1542// 0AD0 - 0ADF
1543// 0AE0 - 0AEF
1544// 0AF0 - 0AFF
1545// 0B00 - 0B0F
1546// 0B10 - 0B1F
1547// 0B20 - 0B2F
1548// 0B30 - 0B3F
1549// 0B40 - 0B4F
1550// 0B50 - 0B5F
1551// 0B60 - 0B6F
1552// 0B70 - 0B7F
1553// 0B80 - 0B8F
1554// 0B90 - 0B9F
1555// 0BA0 - 0BAF
1556// 0BB0 - 0BBF
1557// 0BC0 - 0BCF
1558// 0BD0 - 0BDF
1559// 0BE0 - 0BEF
1560// 0BF0 - 0BFF
1561// 0C00 - 0C0F
1562// 0C10 - 0C1F
1563// 0C20 - 0C2F
1564// 0C30 - 0C3F
1565// 0C40 - 0C4F
1566// 0C50 - 0C5F
1567// 0C60 - 0C6F
1568// 0C70 - 0C7F
1569// 0C80 - 0C8F
1570// 0C90 - 0C9F
1571// 0CA0 - 0CAF
1572{ 0x10DE0CA0,NV_SUB_IDS,"GeForce GT 330 " },
1573{ 0x10DE0CA2,NV_SUB_IDS,"GeForce GT 320" },
1574{ 0x10DE0CA3,NV_SUB_IDS,"GeForce GT 240" },
1575{ 0x10DE0CA4,NV_SUB_IDS,"GeForce GT 340" },
1576{ 0x10DE0CA5,NV_SUB_IDS,"GeForce GT 220" },
1577{ 0x10DE0CA7,NV_SUB_IDS,"GeForce GT 330" },
1578{ 0x10DE0CA8,NV_SUB_IDS,"GeForce GTS 260M" },
1579{ 0x10DE0CA9,NV_SUB_IDS,"GeForce GTS 250M" },
1580{ 0x10DE0CAC,NV_SUB_IDS,"GeForce GT 220" },
1581// { 0x10DE0CAD,NV_SUB_IDS,"NVIDIA N10E-ES" },
1582// { 0x10DE0CAE,NV_SUB_IDS,"NVIDIA GT215-INT" },
1583{ 0x10DE0CAF,NV_SUB_IDS,"GeForce GT 335M" },
1584// 0CB0 - 0CBF
1585{ 0x10DE0CB0,NV_SUB_IDS,"GeForce GTS 350M" },
1586{ 0x10DE0CB1,NV_SUB_IDS,"GeForce GTS 360M" },
1587{ 0x10DE0CBC,NV_SUB_IDS,"Quadro FX 1800M" },
1588// 0CC0 - 0CCF
1589// 0CD0 - 0CDF
1590// 0CE0 - 0CEF
1591// 0CF0 - 0CFF
1592// 0D00 - 0D0F
1593// 0D10 - 0D1F
1594// 0D20 - 0D2F
1595// 0D30 - 0D3F
1596// 0D40 - 0D4F
1597// 0D50 - 0D5F
1598// 0D60 - 0D6F
1599// 0D70 - 0D7F
1600// 0D80 - 0D8F
1601// 0D90 - 0D9F
1602// 0DA0 - 0DAF
1603// 0DB0 - 0DBF
1604// 0DC0 - 0DCF
1605{ 0x10DE0DC0,NV_SUB_IDS,"GeForce GT 440" },
1606// { 0x10DE0DC1,NV_SUB_IDS,"D12-P1-35" },
1607// { 0x10DE0DC2,NV_SUB_IDS,"D12-P1-35" },
1608{ 0x10DE0DC4,NV_SUB_IDS,"GeForce GTS 450" },
1609{ 0x10DE0DC5,NV_SUB_IDS,"GeForce GTS 450" },
1610{ 0x10DE0DC6,NV_SUB_IDS,"GeForce GTS 450" },
1611// { 0x10DE0DCA,NV_SUB_IDS,"GF10x" },
1612// { 0x10DE0DCC,NV_SUB_IDS,"N12E-GS" },
1613{ 0x10DE0DCD,NV_SUB_IDS,"GeForce GT 555M" },
1614{ 0x10DE0DCE,NV_SUB_IDS,"GeForce GT 555M" },
1615// { 0x10DE0DCF,NV_SUB_IDS,"N12P-GT-B" },
1616// 0DD0 - 0DDF
1617// { 0x10DE0DD0,NV_SUB_IDS,"N11E-GT" },
1618{ 0x10DE0DD1,NV_SUB_IDS,"GeForce GTX 460M" },
1619{ 0x10DE0DD2,NV_SUB_IDS,"GeForce GT 445M" },
1620{ 0x10DE0DD3,NV_SUB_IDS,"GeForce GT 435M" },
1621{ 0x10DE0DD6,NV_SUB_IDS,"GeForce GT 550M" },
1622{ 0x10DE0DD8,NV_SUB_IDS,"Quadro 2000" },
1623{ 0x10DE0DDA,NV_SUB_IDS,"Quadro 2000M" },
1624// { 0x10DE0DDE,NV_SUB_IDS,"GF106-ES" },
1625// { 0x10DE0DDF,NV_SUB_IDS,"GF106-INT" },
1626// 0DE0 - 0DEF
1627{ 0x10DE0DE0,NV_SUB_IDS,"GeForce GT 440" },
1628{ 0x10DE0DE1,NV_SUB_IDS,"GeForce GT 430" },
1629{ 0x10DE0DE2,NV_SUB_IDS,"GeForce GT 420" },
1630{ 0x10DE0DE4,NV_SUB_IDS,"GeForce GT 520" },
1631{ 0x10DE0DE5,NV_SUB_IDS,"GeForce GT 530" },
1632{ 0x10DE0DE8,NV_SUB_IDS,"GeForce GT 620M" },
1633{ 0x10DE0DE9,NV_SUB_IDS,"GeForce GT 630M" },
1634{ 0x10DE0DEA,NV_SUB_IDS,"GeForce GT 610M" },
1635{ 0x10DE0DEB,NV_SUB_IDS,"GeForce GT 555M" },
1636{ 0x10DE0DEC,NV_SUB_IDS,"GeForce GT 525M" },
1637{ 0x10DE0DED,NV_SUB_IDS,"GeForce GT 520M" },
1638{ 0x10DE0DEE,NV_SUB_IDS,"GeForce GT 415M" },
1639// { 0x10DE0DEF,NV_SUB_IDS,"N13P-NS1-A1" },
1640// 0DF0 - 0DFF
1641{ 0x10DE0DF0,NV_SUB_IDS,"GeForce GT 425M" },
1642{ 0x10DE0DF1,NV_SUB_IDS,"GeForce GT 420M" },
1643{ 0x10DE0DF2,NV_SUB_IDS,"GeForce GT 435M" },
1644{ 0x10DE0DF3,NV_SUB_IDS,"GeForce GT 420M" },
1645{ 0x10DE0DF4,NV_SUB_IDS,"GeForce GT 540M" },
1646{ 0x10DE0DF5,NV_SUB_IDS,"GeForce GT 525M" },
1647{ 0x10DE0DF6,NV_SUB_IDS,"GeForce GT 550M" },
1648{ 0x10DE0DF7,NV_SUB_IDS,"GeForce GT 520M" },
1649{ 0x10DE0DF8,NV_SUB_IDS,"Quadro 600" },
1650{ 0x10DE0DF9,NV_SUB_IDS,"Quadro 500M" },
1651{ 0x10DE0DFA,NV_SUB_IDS,"Quadro 1000M" },
1652{ 0x10DE0DFC,NV_SUB_IDS,"NVS 5200M" },
1653// { 0x10DE0DFE,NV_SUB_IDS,"GF108 ES" },
1654// { 0x10DE0DFF,NV_SUB_IDS,"GF108 INT" },
1655// 0E00 - 0E0F
1656// 0E10 - 0E1F
1657// 0E20 - 0E2F
1658{ 0x10DE0E21,NV_SUB_IDS,"D12U-25" },
1659{ 0x10DE0E22,NV_SUB_IDS,"GeForce GTX 460" },
1660{ 0x10DE0E23,NV_SUB_IDS,"GeForce GTX 460 SE" },
1661{ 0x10DE0E24,NV_SUB_IDS,"GeForce GTX 460" },
1662// { 0x10DE0E25,NV_SUB_IDS,"D12U-50" },
1663{ 0x10DE0E28,NV_SUB_IDS,"GeForce GTX 460" },
1664// 0E30 - 0E3F
1665{ 0x10DE0E30,NV_SUB_IDS,"GeForce GTX 470M" },
1666{ 0x10DE0E31,NV_SUB_IDS,"GeForce GTX 485M" },
1667// { 0x10DE0E32,NV_SUB_IDS,"N12E-GT" },
1668{ 0x10DE0E38,NV_SUB_IDS,"GF104GL" },
1669{ 0x10DE0E3A,NV_SUB_IDS,"Quadro 3000M" },
1670{ 0x10DE0E3B,NV_SUB_IDS,"Quadro 4000M" },
1671// { 0x10DE0E3E,NV_SUB_IDS,"GF104-ES" },
1672// { 0x10DE0E3F,NV_SUB_IDS,"GF104-INT" },
1673// 0E40 - 0E4F
1674// 0E50 - 0E5F
1675// 0E60 - 0E6F
1676// 0E70 - 0E7F
1677// 0E80 - 0E8F
1678// 0E90 - 0E9F
1679// 0EA0 - 0EAF
1680// 0EB0 - 0EBF
1681// 0EC0 - 0ECF
1682// 0ED0 - 0EDF
1683// 0EE0 - 0EEF
1684// 0EF0 - 0EFF
1685// 0F00 - 0F0F
1686// 0F10 - 0F1F
1687// 0F20 - 0F2F
1688// 0F30 - 0F3F
1689// 0F40 - 0F4F
1690// 0F50 - 0F5F
1691// 0F60 - 0F6F
1692// 0F70 - 0F7F
1693// 0F80 - 0F8F
1694// 0F90 - 0F9F
1695// 0FA0 - 0FAF
1696// 0FB0 - 0FBF
1697// 0FC0 - 0FCF
1698// 0FD0 - 0FDF
1699{ 0x10DE0FD1,NV_SUB_IDS,"GeForce GT 650M" },
1700{ 0x10DE0FD2,NV_SUB_IDS,"GeForce GT 640M" },
1701{ 0x10DE0FD4,NV_SUB_IDS,"GeForce GTX 660M" },
1702// { 0x10DE0FDB,NV_SUB_IDS,"GK107-ESP-A1" },
1703// 0FE0 - 0FEF
1704// 0FF0 - 0FFF
1705// 1000 - 100F
1706// 1010 - 101F
1707// 1020 - 102F
1708// 1030 - 103F
1709// 1040 - 104F
1710{ 0x10DE1040,NV_SUB_IDS,"GeForce GT 520" },
1711// { 0x10DE1041,NV_SUB_IDS,"D13M1-45" },
1712{ 0x10DE1042,NV_SUB_IDS,"GeForce 510" },
1713{ 0x10DE1048,NV_SUB_IDS,"GeForce 605" },
1714{ 0x10DE1049,NV_SUB_IDS,"GeForce GT 620" },
1715// 1050 - 105F
1716{ 0x10DE1050,NV_SUB_IDS,"GeForce GT 520M" },
1717{ 0x10DE1051,NV_SUB_IDS,"GeForce GT 520MX" },
1718{ 0x10DE1052,NV_SUB_IDS,"GeForce GT 520M" },
1719{ 0x10DE1054,NV_SUB_IDS,"GeForce GT 410M" },
1720{ 0x10DE1055,NV_SUB_IDS,"GeForce 410M" },
1721{ 0x10DE1056,NV_SUB_IDS,"Quadro NVS 4200M" },
1722{ 0x10DE1057,NV_SUB_IDS,"Quadro NVS 4200M" },
1723{ 0x10DE1058,NV_SUB_IDS,"GeForce 610M" },
1724{ 0x10DE1059,NV_SUB_IDS,"GeForce 610M" },
1725{ 0x10DE105A,NV_SUB_IDS,"GeForce 610M" },
1726// 1060 - 106F
1727// 1070 - 107F
1728// { 0x10DE107D,NV_SUB_IDS,"GF119" },
1729// { 0x10DE107E,NV_SUB_IDS,"GF119-INT" },
1730// { 0x10DE107F,NV_SUB_IDS,"GF119-ES" },
1731// 1080 - 108F
1732{ 0x10DE1080,NV_SUB_IDS,"GeForce GTX 580" },
1733{ 0x10DE1081,NV_SUB_IDS,"GeForce GTX 570" },
1734{ 0x10DE1082,NV_SUB_IDS,"GeForce GTX 560 Ti" },
1735{ 0x10DE1083,NV_SUB_IDS,"D13U" },
1736{ 0x10DE1084,NV_SUB_IDS,"GeForce GTX 560" },
1737{ 0x10DE1086,NV_SUB_IDS,"GeForce GTX 570" },
1738{ 0x10DE1087,NV_SUB_IDS,"GeForce GTX 560 Ti-448" },
1739{ 0x10DE1088,NV_SUB_IDS,"GeForce GTX 590" },
1740{ 0x10DE1089,NV_SUB_IDS,"GeForce GTX 580" },
1741{ 0x10DE108B,NV_SUB_IDS,"GeForce GTX 590" },
1742// { 0x10DE108C,NV_SUB_IDS,"D13U" },
1743{ 0x10DE108E,NV_SUB_IDS,"Tesla C2090" },
1744// 1090 - 109F
1745{ 0x10DE1091,NV_SUB_IDS,"nVidia Tesla M2090" },
1746{ 0x10DE1094,NV_SUB_IDS,"Tesla M2075 Dual-Slot Computing Processor Module" },
1747{ 0x10DE1096,NV_SUB_IDS,"Tesla C2075" },
1748// { 0x10DE1098,NV_SUB_IDS,"D13U" },
1749{ 0x10DE109A,NV_SUB_IDS,"Quadro 5010M" },
1750{ 0x10DE109B,NV_SUB_IDS,"Quadro 7000" },
1751// 10A0 - 10AF
1752// 10B0 - 10BF
1753// 10C0 - 10CF
1754{ 0x10DE10C0,NV_SUB_IDS,"GeForce 9300 GS" },
1755{ 0x10DE10C3,NV_SUB_IDS,"GeForce 8400 GS" },
1756{ 0x10DE10C4,NV_SUB_IDS,"NVIDIA ION" },
1757{ 0x10DE10C5,NV_SUB_IDS,"GeForce 405" },
1758// 10D0 - 10DF
1759{ 0x10DE10D8,NV_SUB_IDS,"NVS 300" },
1760// 10E0 - 10EF
1761// 10F0 - 10FF
1762// 1100 - 110F
1763// 1110 - 111F
1764// 1120 - 112F
1765// 1130 - 113F
1766// 1140 - 114F
1767// { 0x10DE1140,NV_SUB_IDS,"GF117" },
1768{ 0x10DE1141,NV_SUB_IDS,"GeForce 610M" },
1769{ 0x10DE1142,NV_SUB_IDS,"GeForce 620M" },
1770// { 0x10DE1143,NV_SUB_IDS,"N13P-GV" },
1771// { 0x10DE1144,NV_SUB_IDS,"GF117" },
1772// { 0x10DE1145,NV_SUB_IDS,"GF117" },
1773// { 0x10DE1146,NV_SUB_IDS,"GF117" },
1774// { 0x10DE1147,NV_SUB_IDS,"GF117" },
1775// { 0x10DE1149,NV_SUB_IDS,"GF117-ES" },
1776// { 0x10DE114A,NV_SUB_IDS,"GF117-INT" },
1777// { 0x10DE114B,NV_SUB_IDS,"PCI-GEN3-B" },
1778// 1150 - 115F
1779// 1160 - 116F
1780// 1170 - 117F
1781// 1180 - 118F
1782{ 0x10DE1180,NV_SUB_IDS,"GeForce GTX 680" },
1783{ 0x10DE1188,NV_SUB_IDS,"GeForce GTX 690" },
1784{ 0x10DE1189,NV_SUB_IDS,"GeForce GTX 670" },
1785// 1190 - 119F
1786// 11A0 - 11AF
1787// 11B0 - 11BF
1788// 11C0 - 11CF
1789// 11D0 - 11DF
1790// 11E0 - 11EF
1791// 11F0 - 11FF
1792// 1200 - 120F
1793{ 0x10DE1200,NV_SUB_IDS,"GeForce GTX 560 Ti" },
1794{ 0x10DE1201,NV_SUB_IDS,"GeForce GTX 560" },
1795{ 0x10DE1202,NV_SUB_IDS,"GeForce GTX 560 Ti" },
1796{ 0x10DE1203,NV_SUB_IDS,"GeForce GTX 460 SE v2" },
1797{ 0x10DE1205,NV_SUB_IDS,"GeForce GTX 460 v2" },
1798{ 0x10DE1206,NV_SUB_IDS,"GeForce GTX 555" },
1799{ 0x10DE1208,NV_SUB_IDS,"GeForce GTX 560 SE" },
1800{ 0x10DE1210,NV_SUB_IDS,"GeForce GTX 570M" },
1801{ 0x10DE1211,NV_SUB_IDS,"GeForce GTX 580M" },
1802{ 0x10DE1212,NV_SUB_IDS,"GeForce GTX 675M" },
1803{ 0x10DE1213,NV_SUB_IDS,"GeForce GTX 670M" },
1804{ 0x10DE1240,NV_SUB_IDS,"GeForce GT 620M" },
1805{ 0x10DE1241,NV_SUB_IDS,"GeForce GT 545" },
1806{ 0x10DE1243,NV_SUB_IDS,"GeForce GT 545" },
1807{ 0x10DE1244,NV_SUB_IDS,"GeForce GTX 550 Ti" },
1808{ 0x10DE1245,NV_SUB_IDS,"GeForce GTS 450" },
1809{ 0x10DE1246,NV_SUB_IDS,"GeForce GTX 550M" },
1810{ 0x10DE1247,NV_SUB_IDS,"GeForce GT 635M" },
1811{ 0x10DE1248,NV_SUB_IDS,"GeForce GTX 555M" },
1812{ 0x10DE124B,NV_SUB_IDS,"GeForce GT 640" },
1813{ 0x10DE124D,NV_SUB_IDS,"GeForce GTX 555M" },
1814// { 0x10DE1250,NV_SUB_IDS,"GF116-INT" },
1815{ 0x10DE1251,NV_SUB_IDS,"GeForce GTX 560M" },
1816// 1260 - 126F
1817// 1270 - 127F
1818// 1280 - 128F
1819// 1290 - 129F
1820// 12A0 - 12AF
1821// 12B0 - 12BF
1822// 12C0 - 12CF
1823// 12D0 - 12DF
1824// 12E0 - 12EF
1825// 12F0 - 12FF
1826};
1827
1828static int patch_nvidia_rom(uint8_t *rom)
1829{
1830if (!rom || (rom[0] != 0x55 && rom[1] != 0xaa)) {
1831printf("False ROM signature: 0x%02x%02x\n", rom[0], rom[1]);
1832return PATCH_ROM_FAILED;
1833}
1834
1835uint16_t dcbptr = READ_LE_SHORT(rom, 0x36);
1836
1837if (!dcbptr) {
1838printf("no dcb table found\n");
1839return PATCH_ROM_FAILED;
1840}
1841//else
1842//printf("dcb table at offset 0x%04x\n", dcbptr);
1843
1844uint8_t *dcbtable = &rom[dcbptr];
1845uint8_t dcbtable_version = dcbtable[0];
1846uint8_t headerlength = 0;
1847uint8_t numentries = 0;
1848uint8_t recordlength = 0;
1849
1850if (dcbtable_version >= 0x20)
1851{
1852uint32_t sig;
1853
1854if (dcbtable_version >= 0x30)
1855{
1856headerlength = dcbtable[1];
1857numentries = dcbtable[2];
1858recordlength = dcbtable[3];
1859
1860sig = READ_LE_INT(dcbtable, 6);
1861}
1862else
1863{
1864sig = READ_LE_INT(dcbtable, 4);
1865headerlength = 8;
1866}
1867
1868if (sig != 0x4edcbdcb)
1869{
1870printf("Bad display config block signature (0x%8x)\n", sig); //Azi: issue #48
1871return PATCH_ROM_FAILED;
1872}
1873}
1874else if (dcbtable_version >= 0x14) /* some NV15/16, and NV11+ */
1875{
1876char sig[8] = { 0 };
1877
1878strncpy(sig, (char *)&dcbtable[-7], 7);
1879recordlength = 10;
1880
1881if (strcmp(sig, "DEV_REC"))
1882{
1883printf("Bad Display Configuration Block signature (%s)\n", sig);
1884return PATCH_ROM_FAILED;
1885}
1886}
1887else
1888{
1889printf("ERROR: dcbtable_version is 0x%X\n", dcbtable_version);
1890return PATCH_ROM_FAILED;
1891}
1892
1893if (numentries >= MAX_NUM_DCB_ENTRIES)
1894numentries = MAX_NUM_DCB_ENTRIES;
1895
1896uint8_t num_outputs = 0, i = 0;
1897
1898struct dcbentry
1899{
1900uint8_t type;
1901uint8_t index;
1902uint8_t *heads;
1903} entries[numentries];
1904
1905for (i = 0; i < numentries; i++)
1906{
1907uint32_t connection;
1908connection = READ_LE_INT(dcbtable,headerlength + recordlength * i);
1909
1910/* Should we allow discontinuous DCBs? Certainly DCB I2C tables can be discontinuous */
1911if ((connection & 0x0000000f) == 0x0000000f) /* end of records */
1912continue;
1913if (connection == 0x00000000) /* seen on an NV11 with DCB v1.5 */
1914continue;
1915if ((connection & 0xf) == 0x6) /* we skip type 6 as it doesnt appear on macbook nvcaps */
1916continue;
1917
1918entries[num_outputs].type = connection & 0xf;
1919entries[num_outputs].index = num_outputs;
1920entries[num_outputs++].heads = (uint8_t*)&(dcbtable[(headerlength + recordlength * i) + 1]);
1921}
1922
1923int has_lvds = false;
1924uint8_t channel1 = 0, channel2 = 0;
1925
1926for (i = 0; i < num_outputs; i++)
1927{
1928if (entries[i].type == 3)
1929{
1930has_lvds = true;
1931//printf("found LVDS\n");
1932channel1 |= ( 0x1 << entries[i].index);
1933entries[i].type = TYPE_GROUPED;
1934}
1935}
1936
1937// if we have a LVDS output, we group the rest to the second channel
1938if (has_lvds)
1939{
1940for (i = 0; i < num_outputs; i++)
1941{
1942if (entries[i].type == TYPE_GROUPED)
1943continue;
1944
1945channel2 |= ( 0x1 << entries[i].index);
1946entries[i].type = TYPE_GROUPED;
1947}
1948}
1949else
1950{
1951int x;
1952// we loop twice as we need to generate two channels
1953for (x = 0; x <= 1; x++)
1954{
1955for (i=0; i<num_outputs; i++)
1956{
1957if (entries[i].type == TYPE_GROUPED)
1958continue;
1959// if type is TMDS, the prior output is ANALOG
1960// we always group ANALOG and TMDS
1961// if there is a TV output after TMDS, we group it to that channel as well
1962if (i && entries[i].type == 0x2)
1963{
1964switch (x)
1965{
1966case 0:
1967//printf("group channel 1\n");
1968channel1 |= ( 0x1 << entries[i].index);
1969entries[i].type = TYPE_GROUPED;
1970
1971if ((entries[i-1].type == 0x0))
1972{
1973channel1 |= ( 0x1 << entries[i-1].index);
1974entries[i-1].type = TYPE_GROUPED;
1975}
1976// group TV as well if there is one
1977if ( ((i+1) < num_outputs) && (entries[i+1].type == 0x1) )
1978{
1979//printf("group tv1\n");
1980channel1 |= ( 0x1 << entries[i+1].index);
1981entries[i+1].type = TYPE_GROUPED;
1982}
1983break;
1984
1985case 1:
1986//printf("group channel 2 : %d\n", i);
1987channel2 |= ( 0x1 << entries[i].index);
1988entries[i].type = TYPE_GROUPED;
1989
1990if ((entries[i - 1].type == 0x0))
1991{
1992channel2 |= ( 0x1 << entries[i-1].index);
1993entries[i-1].type = TYPE_GROUPED;
1994}
1995// group TV as well if there is one
1996if ( ((i+1) < num_outputs) && (entries[i+1].type == 0x1) )
1997{
1998//printf("group tv2\n");
1999channel2 |= ( 0x1 << entries[i+1].index);
2000entries[i+1].type = TYPE_GROUPED;
2001}
2002break;
2003}
2004break;
2005}
2006}
2007}
2008}
2009
2010// if we have left ungrouped outputs merge them to the empty channel
2011uint8_t *togroup;// = (channel1 ? (channel2 ? NULL : &channel2) : &channel1);
2012togroup = &channel2;
2013
2014for (i = 0; i < num_outputs; i++)
2015{
2016if (entries[i].type != TYPE_GROUPED)
2017{
2018//printf("%d not grouped\n", i);
2019if (togroup)
2020{
2021*togroup |= ( 0x1 << entries[i].index);
2022}
2023entries[i].type = TYPE_GROUPED;
2024}
2025}
2026
2027if (channel1 > channel2)
2028{
2029uint8_t buff = channel1;
2030channel1 = channel2;
2031channel2 = buff;
2032}
2033
2034default_NVCAP[6] = channel1;
2035default_NVCAP[8] = channel2;
2036
2037// patching HEADS
2038for (i = 0; i < num_outputs; i++)
2039{
2040if (channel1 & (1 << i))
2041{
2042*entries[i].heads = 1;
2043}
2044else if(channel2 & (1 << i))
2045{
2046*entries[i].heads = 2;
2047}
2048}
2049return (has_lvds ? PATCH_ROM_SUCCESS_HAS_LVDS : PATCH_ROM_SUCCESS);
2050}
2051
2052static char *get_nvidia_model(uint32_t device_id, uint32_t subsys_id)
2053{
2054int i;
2055for (i = 1; i < (sizeof(nvidia_cards) / sizeof(nvidia_cards[0])); i++) // size of NVKnowChipsets array for-loop
2056{
2057if ((nvidia_cards[i].device == device_id) && (nvidia_cards[i].subdev == subsys_id))
2058 {
2059 return nvidia_cards[i].name_model;
2060 break;
2061 }
2062 else if ((nvidia_cards[i].device == device_id) && (nvidia_cards[i].subdev == 0x00000000))
2063 {
2064 return nvidia_cards[i].name_model;
2065 break;
2066 }
2067}
2068 return nvidia_cards[0].name_model;
2069}
2070
2071static uint32_t load_nvidia_bios_file(const char *filename, uint8_t *buf, int bufsize)
2072{
2073int fd;
2074int size;
2075
2076if ((fd = open_bvdev("bt(0,0)", filename, 0)) < 0)
2077{
2078return 0;
2079}
2080
2081size = file_size(fd);
2082
2083if (size > bufsize)
2084{
2085printf("Filesize of %s is bigger than expected! Truncating to 0x%x Bytes!\n",
2086filename, bufsize);
2087size = bufsize;
2088}
2089size = read(fd, (char *)buf, size);
2090close(fd);
2091
2092return size > 0 ? size : 0;
2093}
2094
2095static int devprop_add_nvidia_template(struct DevPropDevice *device)
2096{
2097char tmp[16];
2098
2099if (!device)
2100return 0;
2101
2102if (!DP_ADD_TEMP_VAL(device, nvidia_compatible_0))
2103return 0;
2104if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_0))
2105return 0;
2106if (!DP_ADD_TEMP_VAL(device, nvidia_name_0))
2107return 0;
2108if (!DP_ADD_TEMP_VAL(device, nvidia_compatible_1))
2109return 0;
2110if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_1))
2111return 0;
2112if (!DP_ADD_TEMP_VAL(device, nvidia_name_1))
2113return 0;
2114if (devices_number == 1)
2115{
2116 if (!DP_ADD_TEMP_VAL(device, nvidia_device_type))
2117 return 0;
2118}
2119else
2120{
2121 if (!DP_ADD_TEMP_VAL(device, nvidia_device_type_child))
2122 return 0;
2123}
2124
2125// Rek : Dont use sprintf return, it does not WORK !! our custom sprintf() always return 0!
2126// len = sprintf(tmp, "Slot-%x", devices_number);
2127sprintf(tmp, "Slot-%x",devices_number);
2128devprop_add_value(device, "AAPL,slot-name", (uint8_t *) tmp, strlen(tmp));
2129devices_number++;
2130
2131return 1;
2132}
2133
2134int hex2bin(const char *hex, uint8_t *bin, int len)
2135{
2136char*p;
2137inti;
2138charbuf[3];
2139
2140if (hex == NULL || bin == NULL || len <= 0 || strlen(hex) != len * 2) {
2141printf("[ERROR] bin2hex input error\n");
2142return -1;
2143}
2144
2145buf[2] = '\0';
2146p = (char *) hex;
2147
2148for (i = 0; i < len; i++)
2149{
2150if (p[0] == '\0' || p[1] == '\0' || !isxdigit(p[0]) || !isxdigit(p[1])) {
2151printf("[ERROR] bin2hex '%s' syntax error\n", hex);
2152return -2;
2153}
2154buf[0] = *p++;
2155buf[1] = *p++;
2156bin[i] = (unsigned char) strtoul(buf, NULL, 16);
2157}
2158return 0;
2159}
2160
2161unsigned long long mem_detect(volatile uint8_t *regs, uint8_t nvCardType, pci_dt_t *nvda_dev)
2162{
2163unsigned long long vram_size = 0;
2164
2165if (nvCardType < NV_ARCH_50)
2166{
2167vram_size = REG32(NV04_PFB_FIFO_DATA);
2168vram_size &= NV10_PFB_FIFO_DATA_RAM_AMOUNT_MB_MASK;
2169}
2170else if (nvCardType < NV_ARCH_C0)
2171{
2172vram_size = REG32(NV04_PFB_FIFO_DATA);
2173vram_size |= (vram_size & 0xff) << 32;
2174vram_size &= 0xffffffff00ll;
2175}
2176else // >= NV_ARCH_C0
2177{
2178vram_size = REG32(NVC0_MEM_CTRLR_RAM_AMOUNT) << 20;
2179vram_size *= REG32(NVC0_MEM_CTRLR_COUNT);
2180}
2181
2182// Workaround for 9600M GT, GT 210/420/430/440/525M/540M & GTX 560M
2183switch (nvda_dev->device_id)
2184{
2185case 0x0647: vram_size = 512*1024*1024; break;// 9600M GT 0647
2186//case 0x0649: vram_size = 1024*1024*1024; break;// 9600M GT 0649
2187case 0x0A65: vram_size = 1024*1024*1024; break; // GT 210
2188case 0x0DE0: vram_size = 1024*1024*1024; break; // GT 440
2189case 0x0DE1: vram_size = 1024*1024*1024; break; // GT 430
2190case 0x0DE2: vram_size = 1024*1024*1024; break; // GT 420
2191case 0x0DEC: vram_size = 1024*1024*1024; break; // GT 525M 0DEC
2192case 0x0DF4: vram_size = 1024*1024*1024; break; // GT 540M
2193case 0x0DF5: vram_size = 1024*1024*1024; break; // GT 525M 0DF5
2194case 0x1251: vram_size = 1536*1024*1024; break; // GTX 560M
2195default: break;
2196}
2197
2198return vram_size;
2199}
2200
2201static bool checkNvRomSig(uint8_t * aRom){
2202 return aRom != NULL && (aRom[0] == 0x55 && aRom[1] == 0xaa);
2203}
2204
2205bool setup_nvidia_devprop(pci_dt_t *nvda_dev)
2206{
2207struct DevPropDevice*device;
2208char*devicepath;
2209option_rom_pci_header_t *rom_pci_header;
2210volatile uint8_t*regs;
2211uint8_t*rom;
2212uint8_t*nvRom;
2213uint8_tnvCardType;
2214unsigned long longvideoRam;
2215uint32_tnvBiosOveride;
2216uint32_tbar[7];
2217uint32_tboot_display;
2218intnvPatch;
2219intlen;
2220charbiosVersion[32];
2221charnvFilename[32];
2222charkNVCAP[12];
2223char*model;
2224const char*value;
2225booldoit;
2226
2227devicepath = get_pci_dev_path(nvda_dev);
2228bar[0] = pci_config_read32(nvda_dev->dev.addr, 0x10 );
2229regs = (uint8_t *) (bar[0] & ~0x0f);
2230
2231// get card type
2232nvCardType = (REG32(0) >> 20) & 0x1ff;
2233
2234// Amount of VRAM in kilobytes
2235videoRam = mem_detect(regs, nvCardType, nvda_dev);
2236model = get_nvidia_model(((nvda_dev->vendor_id << 16) | nvda_dev->device_id),((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id));
2237
2238verbose("%s %dMB NV%02x [%04x:%04x]-[%04x:%04x] :: %s device number: %d\n",
2239model, (uint32_t)(videoRam / 1024 / 1024),
2240(REG32(0) >> 20) & 0x1ff, nvda_dev->vendor_id, nvda_dev->device_id,
2241nvda_dev->subsys_id.subsys.vendor_id, nvda_dev->subsys_id.subsys.device_id,
2242devicepath, devices_number);
2243
2244rom = malloc(NVIDIA_ROM_SIZE);
2245sprintf(nvFilename, "/Extra/%04x_%04x.rom", (uint16_t)nvda_dev->vendor_id,
2246(uint16_t)nvda_dev->device_id);
2247
2248if (getBoolForKey(kUseNvidiaROM, &doit, &bootInfo->chameleonConfig) && doit)
2249{
2250verbose("Looking for nvidia video bios file %s\n", nvFilename);
2251nvBiosOveride = load_nvidia_bios_file(nvFilename, rom, NVIDIA_ROM_SIZE);
2252
2253if (nvBiosOveride > 0)
2254{
2255verbose("Using nVidia Video BIOS File %s (%d Bytes)\n", nvFilename, nvBiosOveride);
2256DBG("%s Signature 0x%02x%02x %d bytes\n", nvFilename, rom[0], rom[1], nvBiosOveride);
2257}
2258else
2259{
2260printf("ERROR: unable to open nVidia Video BIOS File %s\n", nvFilename);
2261return false;
2262}
2263}
2264else
2265{
2266// Otherwise read bios from card
2267nvBiosOveride = 0;
2268
2269 // PROM first
2270 // Enable PROM access
2271 (REG32(NV_PBUS_PCI_NV_20)) = NV_PBUS_PCI_NV_20_ROM_SHADOW_DISABLED;
2272 nvRom = (uint8_t*)&regs[NV_PROM_OFFSET];
2273
2274 // Valid Signature ?
2275if (checkNvRomSig(nvRom))
2276{
2277 bcopy((uint8_t *)nvRom, rom, NVIDIA_ROM_SIZE);
2278 DBG("PROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]);
2279 }
2280 else
2281 {
2282
2283 // disable PROM access
2284 (REG32(NV_PBUS_PCI_NV_20)) = NV_PBUS_PCI_NV_20_ROM_SHADOW_ENABLED;
2285
2286 //PRAM next
2287 nvRom = (uint8_t*)&regs[NV_PRAMIN_OFFSET];
2288
2289 if(checkNvRomSig(nvRom))
2290 {
2291 bcopy((uint32_t *)nvRom, rom, NVIDIA_ROM_SIZE);
2292 DBG("PRAM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]);
2293 }
2294 else
2295 {
2296// 0xC0000 last
2297bcopy((char *)0xc0000, rom, NVIDIA_ROM_SIZE);
2298
2299// Valid Signature ?
2300if (!checkNvRomSig(rom))
2301{
2302printf("ERROR: Unable to locate nVidia Video BIOS\n");
2303return false;
2304}
2305 else
2306 {
2307 DBG("ROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]);
2308 }
2309 }//end PRAM check
2310 }//end PROM check
2311 }//end load rom from bios
2312
2313if ((nvPatch = patch_nvidia_rom(rom)) == PATCH_ROM_FAILED)
2314{
2315printf("ERROR: nVidia ROM Patching Failed!\n");
2316//return false;
2317}
2318
2319rom_pci_header = (option_rom_pci_header_t*)(rom + *(uint16_t *)&rom[24]);
2320
2321// check for 'PCIR' sig
2322if (rom_pci_header->signature == 0x50434952)
2323{
2324if (rom_pci_header->device_id != nvda_dev->device_id)
2325{
2326// Get Model from the OpROM
2327model = get_nvidia_model(((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), NV_SUB_IDS);
2328}
2329else
2330{
2331printf("nVidia incorrect PCI ROM signature: 0x%x\n", rom_pci_header->signature);
2332}
2333}
2334
2335if (!string) {
2336string = devprop_create_string();
2337}
2338device = devprop_add_device(string, devicepath);
2339
2340/* FIXME: for primary graphics card only */
2341boot_display = 1;
2342if (devices_number == 1)
2343{
2344 devprop_add_value(device, "@0,AAPL,boot-display", (uint8_t*)&boot_display, 4);
2345}
2346
2347if (nvPatch == PATCH_ROM_SUCCESS_HAS_LVDS) {
2348uint8_t built_in = 0x01;
2349devprop_add_value(device, "@0,built-in", &built_in, 1);
2350}
2351
2352// get bios version
2353const int MAX_BIOS_VERSION_LENGTH = 32;
2354char* version_str = (char*)malloc(MAX_BIOS_VERSION_LENGTH);
2355
2356memset(version_str, 0, MAX_BIOS_VERSION_LENGTH);
2357
2358int i, version_start;
2359int crlf_count = 0;
2360
2361// only search the first 384 bytes
2362for (i = 0; i < 0x180; i++)
2363{
2364if (rom[i] == 0x0D && rom[i+1] == 0x0A)
2365{
2366crlf_count++;
2367// second 0x0D0A was found, extract bios version
2368if (crlf_count == 2)
2369{
2370if (rom[i-1] == 0x20) i--; // strip last " "
2371
2372for (version_start = i; version_start > (i-MAX_BIOS_VERSION_LENGTH); version_start--)
2373{
2374// find start
2375if (rom[version_start] == 0x00)
2376{
2377version_start++;
2378
2379// strip "Version "
2380if (strncmp((const char*)rom+version_start, "Version ", 8) == 0)
2381{
2382version_start += 8;
2383}
2384
2385strncpy(version_str, (const char*)rom+version_start, i-version_start);
2386break;
2387}
2388}
2389break;
2390}
2391}
2392}
2393
2394sprintf(biosVersion, "%s", (nvBiosOveride > 0) ? nvFilename : version_str);
2395sprintf(kNVCAP, "NVCAP_%04x", nvda_dev->device_id);
2396
2397if (getValueForKey(kNVCAP, &value, &len, &bootInfo->chameleonConfig) && len == NVCAP_LEN * 2)
2398{
2399uint8_t new_NVCAP[NVCAP_LEN];
2400
2401if (hex2bin(value, new_NVCAP, NVCAP_LEN) == 0)
2402{
2403verbose("Using user supplied NVCAP for %s :: %s\n", model, devicepath);
2404memcpy(default_NVCAP, new_NVCAP, NVCAP_LEN);
2405}
2406}
2407
2408if (getValueForKey(kDcfg0, &value, &len, &bootInfo->chameleonConfig) && len == DCFG0_LEN * 2)
2409{
2410uint8_t new_dcfg0[DCFG0_LEN];
2411
2412if (hex2bin(value, new_dcfg0, DCFG0_LEN) == 0)
2413{
2414memcpy(default_dcfg_0, new_dcfg0, DCFG0_LEN);
2415
2416verbose("Using user supplied @0,display-cfg\n");
2417printf("@0,display-cfg: %02x%02x%02x%02x\n",
2418 default_dcfg_0[0], default_dcfg_0[1], default_dcfg_0[2], default_dcfg_0[3]);
2419}
2420}
2421
2422if (getValueForKey(kDcfg1, &value, &len, &bootInfo->chameleonConfig) && len == DCFG1_LEN * 2)
2423{
2424uint8_t new_dcfg1[DCFG1_LEN];
2425
2426if (hex2bin(value, new_dcfg1, DCFG1_LEN) == 0)
2427{
2428memcpy(default_dcfg_1, new_dcfg1, DCFG1_LEN);
2429
2430verbose("Using user supplied @1,display-cfg\n");
2431printf("@1,display-cfg: %02x%02x%02x%02x\n",
2432 default_dcfg_1[0], default_dcfg_1[1], default_dcfg_1[2], default_dcfg_1[3]);
2433}
2434}
2435
2436#if DEBUG_NVCAP
2437printf("NVCAP: %02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x\n",
2438default_NVCAP[0], default_NVCAP[1], default_NVCAP[2], default_NVCAP[3],
2439default_NVCAP[4], default_NVCAP[5], default_NVCAP[6], default_NVCAP[7],
2440default_NVCAP[8], default_NVCAP[9], default_NVCAP[10], default_NVCAP[11],
2441default_NVCAP[12], default_NVCAP[13], default_NVCAP[14], default_NVCAP[15],
2442default_NVCAP[16], default_NVCAP[17], default_NVCAP[18], default_NVCAP[19]);
2443#endif
2444
2445devprop_add_nvidia_template(device);
2446devprop_add_value(device, "NVCAP", default_NVCAP, NVCAP_LEN);
2447devprop_add_value(device, "NVPM", default_NVPM, NVPM_LEN);
2448devprop_add_value(device, "VRAM,totalsize", (uint8_t*)&videoRam, 4);
2449devprop_add_value(device, "model", (uint8_t*)model, strlen(model) + 1);
2450devprop_add_value(device, "rom-revision", (uint8_t*)biosVersion, strlen(biosVersion) + 1);
2451devprop_add_value(device, "@0,display-cfg", default_dcfg_0, DCFG0_LEN);
2452devprop_add_value(device, "@1,display-cfg", default_dcfg_1, DCFG1_LEN);
2453
2454
2455if (getBoolForKey(kVBIOS, &doit, &bootInfo->chameleonConfig) && doit)
2456{
2457devprop_add_value(device, "vbios", rom, (nvBiosOveride > 0) ? nvBiosOveride : (rom[2] * 512));
2458}
2459
2460//add HDMI Audio back to nvidia
2461doit = false;
2462//http://forge.voodooprojects.org/p/chameleon/issues/67/
2463if(getBoolForKey(kEnableHDMIAudio, &doit, &bootInfo->chameleonConfig) && doit)
2464{
2465 static uint8_t connector_type_1[]= {0x00, 0x08, 0x00, 0x00};
2466devprop_add_value(device, "@1,connector-type",connector_type_1, 4);
2467}
2468//end Nvidia HDMI Audio
2469
2470stringdata = malloc(sizeof(uint8_t) * string->length);
2471memcpy(stringdata, (uint8_t*)devprop_generate_string(string), string->length);
2472stringlength = string->length;
2473
2474return true;
2475}
2476

Archive Download this file

Revision: 1985