Chameleon

Chameleon Commit Details

Date:2013-06-21 17:31:19 (6 years 7 months ago)
Author:MacMan
Commit:2249
Parents: 2248
Message:Chimera 2.1.0: Adds Haswell CPU support with model and proper speed detection, disabled writing of boot arguments to nvram, implemented most Chameleon 2.2 r2246 changes while retaining all previous Chimera v2.0.1 fixes and enhancements.
Changes:
D/branches/Chimera/i386/modules/Resolution
D/branches/Chimera/i386/modules/FileNVRAM
A/branches/Chimera/i386/modules/HDAEnabler/Makefile
A/branches/Chimera/artwork/themes/default/device_hfsraid_mav_o.png
A/branches/Chimera/i386/modules/HDAEnabler/include
A/branches/Chimera/i386/modules/HDAEnabler
A/branches/Chimera/artwork/themes/default/device_hfsraid_mav.png
A/branches/Chimera/artwork/themes/default/device_hfsfusion_mav_o.png
A/branches/Chimera/i386/modules/HDAEnabler/Cconfig
A/branches/Chimera/i386/libsaio/base64-decode.c
A/branches/Chimera/artwork/themes/default/device_hfsplus_mav_o.png
A/branches/Chimera/artwork/themes/default/device_hfsfusion_mav.png
A/branches/Chimera/i386/modules/HDAEnabler/HDAEnabler.dylib
A/branches/Chimera/i386/libsaio/ati.h
A/branches/Chimera/artwork/themes/default/device_hfsplus_mav.png
A/branches/Chimera/i386/modules/HDAEnabler/Readme.txt
M/branches/Chimera/i386/libsa/libsa.h
M/branches/Chimera/i386/libsaio/bootstruct.c
M/branches/Chimera/autoconf.h
M/branches/Chimera/i386/libsaio/nvidia_helper.c
M/branches/Chimera/i386/modules/AcpiCodec/acpi_codec.c
M/branches/Chimera/i386/libsaio/nvidia.c
M/branches/Chimera/i386/boot2/modules.c
M/branches/Chimera/i386/libsaio/pci.c
M/branches/Chimera/i386/libsaio/bootstruct.h
M/branches/Chimera/i386/libsaio/nvidia.h
M/branches/Chimera/i386/libsaio/pci.h
M/branches/Chimera/i386/libsaio/acpi_patcher.c
M/branches/Chimera/i386/boot2/gui.c
M/branches/Chimera/i386/libsaio/platform.h
M/branches/Chimera/i386/libsaio/disk.c
M/branches/Chimera/autoconf.inc
M/branches/Chimera/i386/libsaio/device_inject.c
M/branches/Chimera/package/bin/clean_po_headers.sh
M/branches/Chimera/i386/libsaio/Makefile
M/branches/Chimera/i386/libsaio/saio_internal.h
M/branches/Chimera/i386/libsaio/smbios.c
M/branches/Chimera/i386/boot2/options.c
M/branches/Chimera/i386/libsaio/xml.c
M/branches/Chimera/i386/libsaio/device_inject.h
M/branches/Chimera/CREDITS
M/branches/Chimera/i386/modules/Keylayout/Keylayout.c
M/branches/Chimera/i386/boot2/graphics.c
M/branches/Chimera/i386/libsaio/xml.h
M/branches/Chimera/i386/boot2/graphics.h
M/branches/Chimera/CHANGES
M/branches/Chimera/i386/modules/Cconfig
M/branches/Chimera/i386/libsaio/ati.c
M/branches/Chimera/i386/boot2/drivers.c
M/branches/Chimera/i386/modules/Makefile
M/branches/Chimera/i386/libsaio/spd.c
M/branches/Chimera/i386/libsaio/cpu.c
M/branches/Chimera/.config
M/branches/Chimera/i386/libsaio/fake_efi.c
M/branches/Chimera/i386/libsaio/smbios_getters.c
M/branches/Chimera/version
M/branches/Chimera/auto.conf
M/branches/Chimera/revision
M/branches/Chimera/i386/libsaio/gma.c
M/branches/Chimera/doc/README
M/branches/Chimera/i386/boot2/boot.c

File differences

branches/Chimera/.config
11
22
33
4
4
55
66
77
......
2121
2222
2323
24
25
26
27
28
24
25
26
2927
30
31
28
29
3230
31
3332
#
# Automatically generated make config: don't edit
# Chameleon Configuration
# Mon May 13 13:47:19 2013
# Thu Jun 20 17:46:59 2013
#
CONFIG_OPTIMIZATION_LEVEL="-Oz"
CONFIG_BDMESG=y
#
# Modules
#
CONFIG_RESOLUTION_MODULE=m
CONFIG_KLIBC_MODULE=m
CONFIG_UCLIBCXX_MODULE=m
# CONFIG_HELLOWORLD_MODULE is not set
CONFIG_SATA_MODULE=m
# CONFIG_RESOLUTION_MODULE is not set
# CONFIG_KLIBC_MODULE is not set
# CONFIG_SATA_MODULE is not set
CONFIG_KEYLAYOUT_MODULE=m
CONFIG_ACPICODEC_MODULE=m
CONFIG_KERNELPATCHER_MODULE=y
# CONFIG_ACPICODEC_MODULE is not set
# CONFIG_KERNELPATCHER_MODULE is not set
CONFIG_FILENVRAM_MODULE=y
CONFIG_HDAENABLER_MODULE=y
# CONFIG_EMBED_THEME is not set
branches/Chimera/version
1
1
2.0.1
2.1.0
branches/Chimera/autoconf.inc
11
22
33
4
4
55
6
76
8
9
7
8
109
10
1111
1212
1313
1414
15
1615
1716
18
19
17
18
2019
2120
2221
2322
2423
2524
26
25
2726
2827
;
; Automatically generated make config: don't edit
; Chameleon Configuration
; Mon May 13 13:47:19 2013
; Thu Jun 20 17:46:59 2013
;
CONFIG_UCLIBCXX_MODULE EQU 1
CONFIG_BOOT1_HFS_DEBUG EQU 0
CONFIG_SATA_MODULE EQU 1
CONFIG_KLIBC_MODULE EQU 1
CONFIG_SATA_MODULE EQU 0
CONFIG_KLIBC_MODULE EQU 0
CONFIG_BOOT0_DEBUG EQU 0
CONFIG_HDAENABLER_MODULE EQU 1
CONFIG_OPENUP EQU 0
CONFIG_BOOT1_HFS_VERBOSE EQU 1
CONFIG_EMBED_THEME EQU 0
CONFIG_BOOT1_HFS EQU 1
CONFIG_HELLOWORLD_MODULE EQU 0
CONFIG_MODULES EQU 1
CONFIG_BOOT0_VERBOSE EQU 1
CONFIG_ACPICODEC_MODULE EQU 1
CONFIG_KERNELPATCHER_MODULE EQU 1
CONFIG_ACPICODEC_MODULE EQU 0
CONFIG_KERNELPATCHER_MODULE EQU 0
CONFIG_BDMESG EQU 1
CONFIG_BOOT1_HFS_ACTIVE_VERBOSE EQU 1
CONFIG_BOOT1_HFS_ACTIVE EQU 1
CONFIG_FILENVRAM_MODULE EQU 1
CONFIG_BOOT1_HFS_ACTIVE_DEBUG EQU 0
CONFIG_FDISK440 EQU 1
CONFIG_RESOLUTION_MODULE EQU 1
CONFIG_RESOLUTION_MODULE EQU 0
CONFIG_KEYLAYOUT_MODULE EQU 1
CONFIG_MODULE_DEBUG EQU 0
branches/Chimera/i386/libsaio/xml.c
793793
794794
795795
796
796797
797798
798799
......
806807
807808
808809
809
810
811
810
812811
813812
814813
815
814
816815
817816
818817
......
972971
973972
974973
975
974
976975
977976
978977
......
11141113
11151114
11161115
1116
1117
1118
1119
11171120
11181121
11191122
......
11391142
11401143
11411144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
11421159
11431160
11441161
static long
ParseTagData( char * buffer, TagPtr * tag )
{
int actuallen = 0;
long length;
TagPtr tmpTag;
//printf("Data: %s\n", buffer);
//getchar();
// TODO: base64 decode
char* string = NewSymbol(buffer);
char* string = BASE64Decode(buffer, strlen(buffer), &actuallen);
tmpTag->type = kTagTypeData;
tmpTag->string = string;
tmpTag->tag = 0;
tmpTag->offset = buffer_start ? buffer - buffer_start: 0;
tmpTag->offset = actuallen; // buffer_start ? buffer - buffer_start: 0;
tmpTag->tagNext = 0;
*tag = tmpTag;
#if DOFREE
if (tag == 0) return;
if (tag->string) FreeSymbol(tag->string);
if (!XMLIsInteger(tag) && tag->string) FreeSymbol(tag->string);
XMLFreeTag(tag->tag);
XMLFreeTag(tag->tagNext);
return entry && (entry->type == kTagTypeDict);
}
bool XMLIsData(TagPtr entry)
{
return entry && (entry->type == kTagTypeData);
}
TagPtr XMLCastDict(TagPtr dict)
{
return NULL;
}
char* XMLCastData(TagPtr dict, int* length)
{
if(!dict) return NULL;
if((dict->type == kTagTypeData) ||
(dict->type == kTagTypeKey))
{
*length = dict->offset;
return dict->string;
}
*length = 0;
return NULL;
}
long XMLCastStringOffset(TagPtr dict)
{
if(dict &&
branches/Chimera/i386/libsaio/xml.h
9797
9898
9999
100
100101
101102
102103
103104
104105
105106
107
106108
107
108109
109110
110111
int XMLCastInteger ( TagPtr dict );
TagPtr XMLCastDict ( TagPtr dict );
TagPtr XMLCastArray( TagPtr dict );
char* XMLCastData( TagPtr dict, int* length );
bool XMLIsBoolean(TagPtr entry);
bool XMLIsString (TagPtr entry);
bool XMLIsInteger(TagPtr entry);
bool XMLIsDict (TagPtr entry);
bool XMLIsArray (TagPtr entry);
bool XMLIsData (TagPtr entry);
bool XMLAddTagToDictionary(TagPtr dict, char* key, TagPtr value);
long XMLParseNextTag(char *buffer, TagPtr *tag);
branches/Chimera/i386/libsaio/bootstruct.c
110110
111111
112112
113
113
114114
115115
116116
......
146146
147147
148148
149
149
150150
151151
152152
reserveKernBootStruct(void)
{
if ((gMacOSVersion[0] == '1') && (gMacOSVersion[1] == '0')
&& (gMacOSVersion[2] == '.') && (gMacOSVersion[3] == '7' || gMacOSVersion[3] == '8'))
&& (gMacOSVersion[2] == '.') && (gMacOSVersion[3] == '7' || gMacOSVersion[3] == '8' || gMacOSVersion[3] == '9'))
{
void *oldAddr = bootArgs;
bootArgs = (boot_args *)AllocateKernelMemory(sizeof(boot_args));
bootArgs->MemoryMapDescriptorSize = sizeof(EfiMemoryRange);
bootArgs->MemoryMapDescriptorVersion = 0;
for (i=0; i<memoryMapCount; i++, memoryMap++) {
for (i = 0; i < memoryMapCount; i++, memoryMap++) {
range = &bootInfo->memoryMap[i];
switch(range->type) {
case kMemoryRangeACPI:
branches/Chimera/i386/libsaio/bootstruct.h
5252
5353
5454
55
55
5656
5757
5858
#define CONFIG_SIZE (40 * 4096)
#define kMemoryMapCountMax 40
#define kMemoryMapCountMax 1000
/*
* PCI bus information.
branches/Chimera/i386/libsaio/acpi_patcher.c
572572
573573
574574
575
575576
576577
577578
578
579
580
579581
580582
581583
case CPU_MODEL_SANDYBRIDGE:// Intel Core i3, i5, i7 LGA1155 (32nm)
case CPU_MODEL_IVYBRIDGE:// Intel Core i3, i5, i7 LGA1155 (22nm)
case CPU_MODEL_JAKETOWN:// Intel Core i7, Xeon E5 LGA2011 (32nm)
case CPU_MODEL_HASWELL: // Intel Core i3, i5, i7, Xeon E3 LGA1155 (22nm)
{
if ((Platform.CPU.Model == CPU_MODEL_SANDYBRIDGE) ||
(Platform.CPU.Model == CPU_MODEL_JAKETOWN))
(Platform.CPU.Model == CPU_MODEL_JAKETOWN) ||
(Platform.CPU.Model == CPU_MODEL_HASWELL))
{
maximum.Control = (rdmsr64(MSR_IA32_PERF_STATUS) >> 8) & 0xff;
} else {
branches/Chimera/i386/libsaio/spd.c
373373
374374
375375
376
376377
377378
378379
{0x8086, 0x3B30, "5 Series",read_smb_intel },
{0x8086, 0x1C22, "6 Series",read_smb_intel },
{0x8086, 0x1E22, "7 Series",read_smb_intel },
{0x8086, 0x8C22, "8 Series",read_smb_intel },
{0x8086, 0x1D22, "X79 Series",read_smb_intel },
};
branches/Chimera/i386/libsaio/Makefile
3838
3939
4040
41
41
4242
4343
4444
fake_efi.o ext2fs.o \
hpet.o dram_controllers.o spd.o usb.o pci_setup.o \
device_inject.o nvidia_helper.o nvidia.o ati.o gma.o pci_root.o \
convert.o aml_generator.o console.o exfat.o
convert.o aml_generator.o console.o exfat.o base64-decode.o
SAIO_OBJS := $(addprefix $(OBJROOT)/, $(SAIO_OBJS))
branches/Chimera/i386/libsaio/gma.c
1212
1313
1414
15
16
1517
1618
1719
#include "platform.h"
#include "device_inject.h"
#include "gma.h"
#include "vbe.h"
#include "graphics.h"
#ifndef DEBUG_GMA
#define DEBUG_GMA 0
branches/Chimera/i386/libsaio/device_inject.c
171171
172172
173173
174
174
175175
176176
177177
string->length += device->length;
if(!string->entries)
if((string->entries = (struct DevPropDevice**)malloc(sizeof(device)))== NULL)
if((string->entries = (struct DevPropDevice**)malloc(sizeof(device)*DEV_PROP_DEVICE_MAX_ENTRIES))== NULL)
return 0;
string->entries[string->numentries++] = (struct DevPropDevice*)malloc(sizeof(device));
branches/Chimera/i386/libsaio/device_inject.h
1111
1212
1313
14
1415
1516
1617
#define DP_ADD_TEMP_VAL(dev, val) devprop_add_value(dev, (char*)val[0], (uint8_t*)val[1], strlen(val[1]) + 1)
#define DP_ADD_TEMP_VAL_DATA(dev, val) devprop_add_value(dev, (char*)val.name, (uint8_t*)val.data, val.size)
#define MAX_PCI_DEV_PATHS 4
#define DEV_PROP_DEVICE_MAX_ENTRIES 64
extern struct DevPropString *string;
extern uint8_t *stringdata;
branches/Chimera/i386/libsaio/base64-decode.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* This code implements the BASE64 algorithm.
* This code is in the public domain; do with it what you wish.
*
* @file base64.c
* @brief This code implements the BASE64 algorithm
* @author Matthieu Speder
*/
#include <libsaio.h>
//static const char base64_chars[] =
//"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const char base64_digits[] =
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 62, 0, 0, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
0, 0, 0, -1, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
char *BASE64Decode(const char* src, int in_len, int* out_len)
{
int endpad = 0;
char* dest;
char* result;
if (in_len % 4)
{
/* Wrong base64 string length */
return NULL;
}
result = dest = malloc(in_len / 4 * 3 + 1);
if (result == NULL)
return NULL; /* out of memory */
while (*src) {
char a = base64_digits[(unsigned char)*(src++)];
char b = base64_digits[(unsigned char)*(src++)];
char c = base64_digits[(unsigned char)*(src++)];
char d = base64_digits[(unsigned char)*(src++)];
*(dest++) = (a << 2) | ((b & 0x30) >> 4);
if (c == (char)-1)
{
// padding char.
endpad += 2;
break;
}
*(dest++) = ((b & 0x0f) << 4) | ((c & 0x3c) >> 2);
if (d == (char)-1)
{
// padding char.
endpad += 1;
break;
}
*(dest++) = ((c & 0x03) << 6) | d;
}
*dest = 0;
*out_len = in_len / 4 * 3 - endpad; // not including NULL terminator
return result;
}
/* end of base64.c */
branches/Chimera/i386/libsaio/nvidia.c
6565
6666
6767
68
68
6969
70
70
7171
7272
7373
......
112112
113113
114114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
135184
136185
137186
138187
139188
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
160209
161210
162211
163
164
165
166
167
168
169
170
212
213
214
215
216
217
218
219
171220
172221
173222
174223
175224
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
191240
192241
193
194
195
196
197
198
199
200
201
202
203
242
243
244
245
246
247
248
249
250
251
252
253
254
204255
205256
206257
207
208
209
210
211
212
258
259
260
261
262
263
213264
214265
215266
216267
217
218
219
220
221
222
223
224
225
226
227
228
229
230
268
269
270
271
272
273
274
275
276
277
278
279
280
281
231282
232283
284
233285
234286
235
236
237
238
287
288
289
290
239291
240
241
292
293
294
242295
243296
244
245
246
247
248
249
297
298
299
300
301
302
303
250304
305
251306
252307
253308
254309
255
256
257
258
259
260
261
262
263
264
265
266
267
268
310
311
312
313
314
315
316
317
318
319
320
321
322
323
269324
270325
271326
272327
273328
274
275
276
277
278
329
330
331
332
333
279334
280335
281
282
283
284
336
337
338
339
285340
286
287
288
289
290
291
341
342
343
344
345
346
292347
293
294
295
296
297
298
299
300
301
302
303
304
305
348
349
350
351
352
353
354
355
356
357
358
359
360
361
306362
307
308
309
310
311
312
313
363
364
365
366
367
368
369
314370
315
316
317
318
319
320
321
322
371
372
373
374
375
376
377
378
379
380
381
382
323383
324384
325385
326386
327
387
328388
329
330
331
332
333
334
335
336
337
338
339
340
341
389
390
391
392
393
394
395
396
397
398
399
400
401
342402
343403
344404
345405
346
347
348
349
350
406
407
408
409
410
351411
352412
353413
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
370430
371
431
372432
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
389449
390450
391451
......
396456
397457
398458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
399475
400476
401477
......
403479
404480
405481
406
407
408
409
410
411
482
483
484
485
486
487
412488
413489
414490
......
420496
421497
422498
423
424
425
426
427
428
429
430
431
432
433
434
435
436
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
437515
438
439
440
441
442
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
443532
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
459548
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
475564
476
477
478
479
480
481
482
483
484
485
486
487
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
488581
489
490
491
492
493
494
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
495598
496
497
498
499
500
501
502
503
504
505
506
507
508
599
600
601
602
603
604
605
606
607
608
609
610
611
509612
510
511
512
513
514
515
516
517
518
519
520
521
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
522629
523630
524631
525632
526633
634
527635
636
528637
529
530
531
532
638
639
640
641
642
533643
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
644
645
646
647
648
649
650
651
652
562653
563
564
565
566
567
568
569
570
571
572
573
574
575
576
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
577669
578
579
580
581
582
583
584
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
585686
586687
587688
......
597698
598699
599700
600
601
602
603
604
701
702
703
704
705
605706
606707
607708
608709
609710
610711
611
612
613
614
615
616
617
618
619
620
621
622
712
713
714
715
716
717
718
719
720
721
722
723
623724
624725
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
640741
641
642
643
644
645
646
647
648
649
650
742
743
744
745
746
747
748
749
750
751
651752
652753
653754
654
655
656
755
756
757
758
759
760
657761
762
763
764
765
658766
659767
660768
......
676784
677785
678786
787
679788
789
680790
681
682
683
684
685
686
687
688
689
690
691
791
792
793
794
795
796
797
798
799
800
801
802
692803
693
694
695
696
697
804
805
806
807
808
809
810
811
698812
699813
700814
701
702
703
704
705
706
707
708
709
710
711
712
713
815
816
817
818
819
820
821
822
823
824
825
826
827
828
714829
715
716
717
718
719
720
721
722
723
724
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
725845
726846
727847
......
757877
758878
759879
760
761
762
763
764
765
766
767
768
769
770
771
772
773
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
774896
775897
776898
......
788910
789911
790912
791
792
793
794
795
796
797
798
799
800
801
802
803
804
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
805934
806
807
808
809
810
811
812
813
814
815
816
817
818
935
936
937
938
939
940
941
942
943
944
945
946
947
948
819949
820
821
822
823
824
825
826
827
828
829
830
831
950
951
952
953
954
955
956
957
958
959
960
961
962
963
832964
833965
834966
835
836
837
967
968
969
970
971
972
838973
839
840
841
842
974
975
976
977
978
979
980
981
843982
844983
845984
......
853992
854993
855994
856
857
995
996
858997
859998
860999
......
8671006
8681007
8691008
870
871
872
873
1009
1010
1011
1012
8741013
875
876
877
878
879
880
1014
1015
1016
1017
1018
1019
1020
1021
1022
8811023
882
1024
1025
1026
1027
8831028
884
1029
1030
1031
1032
1033
1034
1035
1036
1037
8851038
1039
1040
1041
8861042
1043
8871044
1045
1046
1047
1048
1049
8881050
8891051
890
891
892
893
894
1052
1053
1054
1055
1056
1057
1058
8951059
896
897
898
899
900
901
902
903
904
905
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
9061071
9071072
908
1073
1074
1075
1076
9091077
910
911
912
913
914
915
916
917
918
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
9191090
920
921
922
923
924
925
926
1091
1092
1093
1094
1095
1096
9271097
9281098
9291099
930
931
932
1100
1101
1102
1103
9331104
934
1105
9351106
9361107
9371108
......
9391110
9401111
9411112
942
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
9431124
9441125
9451126
9461127
947
948
949
1128
1129
1130
1131
1132
1133
9501134
1135
9511136
1137
1138
1139
1140
1141
9521142
1143
1144
1145
1146
1147
9531148
1149
1150
1151
1152
1153
9541154
9551155
1156
1157
1158
1159
9561160
1161
9571162
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
9901188
9911189
9921190
1191
9931192
1193
1194
1195
1196
1197
9941198
1199
9951200
9961201
9971202
......
9991204
10001205
10011206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
10021405
10031406
10041407
......
12261629
12271630
12281631
1229
1632
1633
1634
12301635
12311636
12321637
......
12381643
12391644
12401645
1241
1646
1647
12421648
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1649
1650
1651
1652
1653
1654
1655
1656
12531657
1254
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
12551681
12561682
1257
1683
12581684
12591685
12601686
......
12651691
12661692
12671693
1268
1269
1270
1271
1272
1273
1274
1275
1694
1695
1696
1697
1698
12761699
12771700
12781701
......
13661789
13671790
13681791
1792
1793
1794
1795
1796
1797
1798
13691799
13701800
13711801
13721802
1373
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
13741813
1375
1814
13761815
13771816
1817
1818
1819
1820
1821
1822
1823
13781824
13791825
13801826
......
13821828
13831829
13841830
1385
1831
13861832
13871833
13881834
......
14451891
14461892
14471893
1448
14491894
14501895
14511896
14521897
14531898
14541899
1455
1900
14561901
14571902
14581903
......
14621907
14631908
14641909
1910
14651911
14661912
14671913
14681914
14691915
1916
1917
14701918
14711919
14721920
......
15061954
15071955
15081956
1509
1510
1511
1512
1513
1957
1958
1959
1960
1961
15141962
15151963
15161964
......
15281976
15291977
15301978
1531
1979
15321980
15331981
1534
1982
15351983
15361984
15371985
......
16042052
16052053
16062054
1607
2055
16082056
16092057
16102058
#define DBG(x...)
#endif
#define NVIDIA_ROM_SIZE0x10000
#define NVIDIA_ROM_SIZE0x20000
#define PATCH_ROM_SUCCESS1
#define PATCH_ROM_SUCCESS_HAS_LVDS2
#define PATCH_ROM_SUCCESS_HAS_LVDS2
#define PATCH_ROM_FAILED0
#define MAX_NUM_DCB_ENTRIES16
#define TYPE_GROUPED0xff
#define NVPM_LEN ( sizeof(default_NVPM) / sizeof(uint8_t) )
static nvidia_card_info_t nvidia_cards[] = {
/* ========================================================================================
* Layout is device(VendorId + DeviceId), subdev (SubvendorId + SubdeviceId), display name.
* ========================================================================================
*/
/*Unknown*/{ 0x10DE0000,NV_SUB_IDS,"Unknown" },
/* ------ Specific DeviceID and SubDevID. ------ */
// 0000 - 0040
// 0040 - 004F
{ 0x10DE0040, NV_SUB_IDS, "GeForce 6800 Ultra" },
{ 0x10DE0041,NV_SUB_IDS, "GeForce 6800" },
{ 0x10DE0042,NV_SUB_IDS, "GeForce 6800 LE" },
{ 0x10DE0043,NV_SUB_IDS, "GeForce 6800 XE" },
{ 0x10DE0044,NV_SUB_IDS, "GeForce 6800 XT" },
{ 0x10DE0045,NV_SUB_IDS, "GeForce 6800 GT" },
{ 0x10DE0046,NV_SUB_IDS, "GeForce 6800 GT" },
{ 0x10DE0047,NV_SUB_IDS, "GeForce 6800 GS" },
{ 0x10DE0048,NV_SUB_IDS, "GeForce 6800 XT" },
{ 0x10DE004D,NV_SUB_IDS, "Quadro FX 3400" },
{ 0x10DE004E,NV_SUB_IDS, "Quadro FX 4000" },
/*static nvidia_pci_info_t nvidia_card_vendors[] = {
{ 0x10190000,"Elitegroup" },
{ 0x10250000,"Acer" },
{ 0x10280000,"Dell" },
{ 0x10330000,"NEC" },
{ 0x103C0000,"HP" },
{ 0x10430000,"Asus" },
{ 0x104D0000,"Sony" },
{ 0x105B0000,"Foxconn" },
{ 0x106B0000,"Apple" },
{ 0x10710000,"Mitac" },
{ 0x107B0000,"Gateway" },
{ 0x107D0000,"Leadtek" },
{ 0x109F0000,"Trigem" },
{ 0x10B00000,"Gainward" },
{ 0x10CF0000,"Fujitsu" },
{ 0x10DE0000,"nVidia" },
{ 0x11790000,"Toshiba" },
{ 0x12970000,"Shuttle" },
{ 0x13DC0000,"Netbost" },
{ 0x144D0000,"Samsung" },
{ 0x14580000,"Gigabyte" },
{ 0x14620000,"MSi" },
{ 0x14C00000,"Compal" },
{ 0x152D0000,"Quanta" },
{ 0x15540000,"Prolink" },
{ 0x15580000,"Clevo" },
{ 0x15690000,"Palit" },
{ 0x161F0000,"Arima" },
{ 0x16310000,"NEC" },
{ 0x16420000,"Bitland" },
{ 0x16820000,"XFX" },
{ 0x17340000,"Fujitsu" },
{ 0x174B0000,"PC Partner" },
{ 0x17AA0000,"Lenovo" },
{ 0x17C00000,"Wistron" },
{ 0x17FF0000,"Benq" },
{ 0x18490000,"ASRock" },
{ 0x18540000,"LG" },
{ 0x18640000,"LG" },
{ 0x18940000,"LG" },
{ 0x19610000,"ESS" },
{ 0x196E0000,"PNY" },
{ 0x19910000,"Topstar" },
{ 0x19DA0000,"Zotac" },
{ 0x19F10000,"BFG" },
{ 0x1ACC0000,"Point of View" },
{ 0x1B0A0000,"Pegatron" },
{ 0x1B130000,"Jaton" },
{ 0x34420000,"Bihl" },
{ 0x38420000,"EVGA" },
{ 0x73770000,"Colorful" },
}; */
static nvidia_pci_info_t nvidia_card_generic[] = {
// 0000 - 0040
{ 0x10DE0000,"Unknown" },
// 0040 - 004F
{ 0x10DE0040,"GeForce 6800 Ultra" },
{ 0x10DE0041,"GeForce 6800" },
{ 0x10DE0042,"GeForce 6800 LE" },
{ 0x10DE0043,"GeForce 6800 XE" },
{ 0x10DE0044,"GeForce 6800 XT" },
{ 0x10DE0045,"GeForce 6800 GT" },
{ 0x10DE0046,"GeForce 6800 GT" },
{ 0x10DE0047,"GeForce 6800 GS" },
{ 0x10DE0048,"GeForce 6800 XT" },
{ 0x10DE004D,"Quadro FX 3400" },
{ 0x10DE004E,"Quadro FX 4000" },
// 0050 - 005F
// 0060 - 006F
// 0070 - 007F
// 0080 - 008F
// 0090 - 009F
{ 0x10DE0090,NV_SUB_IDS, "GeForce 7800 GTX" },
{ 0x10DE0091,NV_SUB_IDS, "GeForce 7800 GTX" },
{ 0x10DE0092,NV_SUB_IDS, "GeForce 7800 GT" },
{ 0x10DE0093,NV_SUB_IDS, "GeForce 7800 GS" },
{ 0x10DE0095,NV_SUB_IDS, "GeForce 7800 SLI" },
{ 0x10DE0098,NV_SUB_IDS, "GeForce Go 7800" },
{ 0x10DE0099,NV_SUB_IDS, "GeForce Go 7800 GTX" },
{ 0x10DE009D,NV_SUB_IDS, "Quadro FX 4500" },
// 00A0 - 00AF
// 00B0 - 00BF
// 00C0 - 00CF
{ 0x10DE00C0,NV_SUB_IDS, "GeForce 6800 GS" },
{ 0x10DE00C1,NV_SUB_IDS, "GeForce 6800" },
{ 0x10DE00C2,NV_SUB_IDS, "GeForce 6800 LE" },
{ 0x10DE00C3,NV_SUB_IDS, "GeForce 6800 XT" },
{ 0x10DE00C8,NV_SUB_IDS, "GeForce Go 6800" },
{ 0x10DE00C9,NV_SUB_IDS, "GeForce Go 6800 Ultra" },
{ 0x10DE00CC,NV_SUB_IDS, "Quadro FX Go1400" },
{ 0x10DE00CD,NV_SUB_IDS, "Quadro FX 3450/4000 SDI" },
{ 0x10DE00CE,NV_SUB_IDS, "Quadro FX 1400" },
{ 0x10DE0090,"GeForce 7800 GTX" },
{ 0x10DE0091,"GeForce 7800 GTX" },
{ 0x10DE0092,"GeForce 7800 GT" },
{ 0x10DE0093,"GeForce 7800 GS" },
{ 0x10DE0095,"GeForce 7800 SLI" },
{ 0x10DE0098,"GeForce Go 7800" },
{ 0x10DE0099,"GeForce Go 7800 GTX" },
{ 0x10DE009D,"Quadro FX 4500" },
// 00A0 - 00AF
// 00B0 - 00BF
// 00C0 - 00CF
{ 0x10DE00C0,"GeForce 6800 GS" },
{ 0x10DE00C1,"GeForce 6800" },
{ 0x10DE00C2,"GeForce 6800 LE" },
{ 0x10DE00C3,"GeForce 6800 XT" },
{ 0x10DE00C8,"GeForce Go 6800" },
{ 0x10DE00C9,"GeForce Go 6800 Ultra" },
{ 0x10DE00CC,"Quadro FX Go1400" },
{ 0x10DE00CD,"Quadro FX 3450/4000 SDI" },
{ 0x10DE00CE,"Quadro FX 1400" },
// 00D0 - 00DF
// 00E0 - 00EF
// 00F0 - 00FF
{ 0x10DE00F1,NV_SUB_IDS, "GeForce 6600 GT" },
{ 0x10DE00F2,NV_SUB_IDS, "GeForce 6600" },
{ 0x10DE00F3,NV_SUB_IDS, "GeForce 6200" },
{ 0x10DE00F4,NV_SUB_IDS, "GeForce 6600 LE" },
{ 0x10DE00F5,NV_SUB_IDS, "GeForce 7800 GS" },
{ 0x10DE00F6,NV_SUB_IDS, "GeForce 6800 GS/XT" },
{ 0x10DE00F8,NV_SUB_IDS, "Quadro FX 3400/4400" },
{ 0x10DE00F9,NV_SUB_IDS, "GeForce 6800 Series GPU" },
{ 0x10DE00F1,"GeForce 6600 GT" },
{ 0x10DE00F2,"GeForce 6600" },
{ 0x10DE00F3,"GeForce 6200" },
{ 0x10DE00F4,"GeForce 6600 LE" },
{ 0x10DE00F5,"GeForce 7800 GS" },
{ 0x10DE00F6,"GeForce 6800 GS/XT" },
{ 0x10DE00F8,"Quadro FX 3400/4400" },
{ 0x10DE00F9,"GeForce 6800 Series GPU" },
// 0100 - 010F
// 0110 - 011F
// 0120 - 012F
// 0130 - 013F
// 0140 - 014F
{ 0x10DE0140, NV_SUB_IDS, "GeForce 6600 GT" },
{ 0x10DE0141,NV_SUB_IDS, "GeForce 6600" },
{ 0x10DE0142,NV_SUB_IDS, "GeForce 6600 LE" },
{ 0x10DE0143,NV_SUB_IDS, "GeForce 6600 VE" },
{ 0x10DE0144,NV_SUB_IDS, "GeForce Go 6600" },
{ 0x10DE0145,NV_SUB_IDS, "GeForce 6610 XL" },
{ 0x10DE0146,NV_SUB_IDS, "GeForce Go 6600 TE/6200 TE" },
{ 0x10DE0147,NV_SUB_IDS, "GeForce 6700 XL" },
{ 0x10DE0148,NV_SUB_IDS, "GeForce Go 6600" },
{ 0x10DE0149,NV_SUB_IDS, "GeForce Go 6600 GT" },
{ 0x10DE014A,NV_SUB_IDS, "Quadro NVS 440" },
{ 0x10DE014C,NV_SUB_IDS, "Quadro FX 550" },
{ 0x10DE014D,NV_SUB_IDS, "Quadro FX 550" },
{ 0x10DE014E,NV_SUB_IDS, "Quadro FX 540" },
{ 0x10DE014F,NV_SUB_IDS, "GeForce 6200" },
{ 0x10DE0140,"GeForce 6600 GT" },
{ 0x10DE0141,"GeForce 6600" },
{ 0x10DE0142,"GeForce 6600 LE" },
{ 0x10DE0143,"GeForce 6600 VE" },
{ 0x10DE0144,"GeForce Go 6600" },
{ 0x10DE0145,"GeForce 6610 XL" },
{ 0x10DE0146,"GeForce Go 6600 TE/6200 TE" },
{ 0x10DE0147,"GeForce 6700 XL" },
{ 0x10DE0148,"GeForce Go 6600" },
{ 0x10DE0149,"GeForce Go 6600 GT" },
{ 0x10DE014A,"Quadro NVS 440" },
{ 0x10DE014C,"Quadro FX 550" },
{ 0x10DE014D,"Quadro FX 550" },
{ 0x10DE014E,"Quadro FX 540" },
{ 0x10DE014F,"GeForce 6200" },
// 0150 - 015F
// 0160 - 016F
{ 0x10DE0160,NV_SUB_IDS, "GeForce 6500" },
{ 0x10DE0161,NV_SUB_IDS, "GeForce 6200 TurboCache(TM)" },
{ 0x10DE0162,NV_SUB_IDS, "GeForce 6200SE TurboCache(TM)" },
{ 0x10DE0163,NV_SUB_IDS, "GeForce 6200 LE" },
{ 0x10DE0164,NV_SUB_IDS, "GeForce Go 6200" },
{ 0x10DE0165,NV_SUB_IDS, "Quadro NVS 285" },
{ 0x10DE0166,NV_SUB_IDS, "GeForce Go 6400" },
{ 0x10DE0167,NV_SUB_IDS, "GeForce Go 6200" },
{ 0x10DE0168,NV_SUB_IDS, "GeForce Go 6400" },
{ 0x10DE0169,NV_SUB_IDS, "GeForce 6250" },
{ 0x10DE016A,NV_SUB_IDS, "GeForce 7100 GS" },
{ 0x10DE0160,"GeForce 6500" },
{ 0x10DE0161,"GeForce 6200 TurboCache(TM)" },
{ 0x10DE0162,"GeForce 6200SE TurboCache(TM)" },
{ 0x10DE0163,"GeForce 6200 LE" },
{ 0x10DE0164,"GeForce Go 6200" },
{ 0x10DE0165,"Quadro NVS 285" },
{ 0x10DE0166,"GeForce Go 6400" },
{ 0x10DE0167,"GeForce Go 6200" },
{ 0x10DE0168,"GeForce Go 6400" },
{ 0x10DE0169,"GeForce 6250" },
{ 0x10DE016A,"GeForce 7100 GS" },
{ 0x10DE016C,"NVIDIA NV44GLM" },
{ 0x10DE016D,"NVIDIA NV44GLM" },
// 0170 - 017F
// 0180 - 018F
// 0190 - 019F
{ 0x10DE0191,NV_SUB_IDS, "GeForce 8800 GTX" },
{ 0x10DE0193,NV_SUB_IDS, "GeForce 8800 GTS" },
{ 0x10DE0194,NV_SUB_IDS, "GeForce 8800 Ultra" },
{ 0x10DE0197,NV_SUB_IDS, "Tesla C870" },
{ 0x10DE019D,NV_SUB_IDS, "Quadro FX 5600" },
{ 0x10DE019E,NV_SUB_IDS, "Quadro FX 4600" },
{ 0x10DE0191,"GeForce 8800 GTX" },
{ 0x10DE0193,"GeForce 8800 GTS" },
{ 0x10DE0194,"GeForce 8800 Ultra" },
{ 0x10DE0197,"Tesla C870" },
{ 0x10DE019D,"Quadro FX 5600" },
{ 0x10DE019E,"Quadro FX 4600" },
// 01A0 - 01AF
// 01B0 - 01BF
// 01C0 - 01CF
// 01D0 - 01DF
{ 0x10DE01D0,NV_SUB_IDS, "GeForce 7350 LE" },
{ 0x10DE01D1,NV_SUB_IDS, "GeForce 7300 LE" },
{ 0x10DE01D2,NV_SUB_IDS, "GeForce 7550 LE" },
{ 0x10DE01D3,NV_SUB_IDS, "GeForce 7300 SE/7200 GS" },
{ 0x10DE01D6,NV_SUB_IDS, "GeForce Go 7200" },
{ 0x10DE01D7,NV_SUB_IDS, "GeForce Go 7300" },
{ 0x10DE01D8,NV_SUB_IDS, "GeForce Go 7400" },
{ 0x10DE01D9,NV_SUB_IDS, "GeForce Go 7400 GS" },
{ 0x10DE01DA,NV_SUB_IDS, "Quadro NVS 110M" },
{ 0x10DE01DB,NV_SUB_IDS, "Quadro NVS 120M" },
{ 0x10DE01DC,NV_SUB_IDS, "Quadro FX 350M" },
{ 0x10DE01DD,NV_SUB_IDS, "GeForce 7500 LE" },
{ 0x10DE01DE,NV_SUB_IDS, "Quadro FX 350" },
{ 0x10DE01DF,NV_SUB_IDS, "GeForce 7300 GS" },
{ 0x10DE01D0,"GeForce 7350 LE" },
{ 0x10DE01D1,"GeForce 7300 LE" },
{ 0x10DE01D2,"GeForce 7550 LE" },
{ 0x10DE01D3,"GeForce 7300 SE/7200 GS" },
{ 0x10DE01D6,"GeForce Go 7200" },
{ 0x10DE01D7,"GeForce Go 7300" },
{ 0x10DE01D8,"GeForce Go 7400" },
{ 0x10DE01D9,"GeForce Go 7450" },
{ 0x10DE01DA,"Quadro NVS 110M" },
{ 0x10DE01DB,"Quadro NVS 120M" },
{ 0x10DE01DC,"Quadro FX 350M" },
{ 0x10DE01DD,"GeForce 7500 LE" },
{ 0x10DE01DE,"Quadro FX 350" },
{ 0x10DE01DF,"GeForce 7300 GS" },
// 01E0 - 01EF
// 01F0 - 01FF
{ 0x10DE01F0,"GeForce4 MX" },
// 0200 - 020F
// 0210 - 021F
{ 0x10DE0211,NV_SUB_IDS, "GeForce 6800" },
{ 0x10DE0212,NV_SUB_IDS, "GeForce 6800 LE" },
{ 0x10DE0215,NV_SUB_IDS, "GeForce 6800 GT" },
{ 0x10DE0218,NV_SUB_IDS, "GeForce 6800 XT" },
{ 0x10DE0211,"GeForce 6800" },
{ 0x10DE0212,"GeForce 6800 LE" },
{ 0x10DE0215,"GeForce 6800 GT" },
{ 0x10DE0218,"GeForce 6800 XT" },
// 0220 - 022F
{ 0x10DE0221,NV_SUB_IDS, "GeForce 6200" },
{ 0x10DE0222,NV_SUB_IDS, "GeForce 6200 A-LE" },
{ 0x10DE0221,"GeForce 6200" },
{ 0x10DE0222,"GeForce 6200 A-LE" },
{ 0x10DE0228,"NVIDIA NV44M" },
// 0230 - 023F
// 0240 - 024F
{ 0x10DE0240,NV_SUB_IDS, "GeForce 6150" },
{ 0x10DE0241,NV_SUB_IDS, "GeForce 6150 LE" },
{ 0x10DE0242,NV_SUB_IDS, "GeForce 6100" },
{ 0x10DE0244,NV_SUB_IDS, "GeForce Go 6150" },
{ 0x10DE0245,NV_SUB_IDS, "Quadro NVS 210S / GeForce 6150LE" },
{ 0x10DE0247,NV_SUB_IDS, "GeForce Go 6100" },
{ 0x10DE0240,"GeForce 6150" },
{ 0x10DE0241,"GeForce 6150 LE" },
{ 0x10DE0242,"GeForce 6100" },
{ 0x10DE0243,"NVIDIA C51" },
{ 0x10DE0244,"GeForce Go 6150" },
{ 0x10DE0245,"Quadro NVS 210S / GeForce 6150LE" },
{ 0x10DE0247,"GeForce Go 6100" },
// 0250 - 025F
{ 0x10DE025B,"Quadro4 700 XGL" },
// 0260 - 026F
// 0270 - 027F
// 0280 - 028F
// 0290 - 029F
{ 0x10DE0290,NV_SUB_IDS, "GeForce 7900 GTX" },
{ 0x10DE0291,NV_SUB_IDS, "GeForce 7900 GT/GTO" },
{ 0x10DE0292,NV_SUB_IDS, "GeForce 7900 GS" },
{ 0x10DE0293,NV_SUB_IDS, "GeForce 7950 GX2" },
{ 0x10DE0294,NV_SUB_IDS, "GeForce 7950 GX2" },
{ 0x10DE0295,NV_SUB_IDS, "GeForce 7950 GT" },
{ 0x10DE0298,NV_SUB_IDS, "GeForce Go 7900 GS" },
{ 0x10DE0299,NV_SUB_IDS, "Quadro NVS 510M" },
{ 0x10DE029A,NV_SUB_IDS, "Quadro FX 2500M" },
{ 0x10DE029B,NV_SUB_IDS, "Quadro FX 1500M" },
{ 0x10DE029C,NV_SUB_IDS, "Quadro FX 5500" },
{ 0x10DE029D,NV_SUB_IDS, "Quadro FX 3500" },
{ 0x10DE029E,NV_SUB_IDS, "Quadro FX 1500" },
{ 0x10DE029F,NV_SUB_IDS, "Quadro FX 4500 X2" },
{ 0x10DE0290,"GeForce 7900 GTX" },
{ 0x10DE0291,"GeForce 7900 GT/GTO" },
{ 0x10DE0292,"GeForce 7900 GS" },
{ 0x10DE0293,"GeForce 7950 GX2" },
{ 0x10DE0294,"GeForce 7950 GX2" },
{ 0x10DE0295,"GeForce 7950 GT" },
{ 0x10DE0298,"GeForce Go 7900 GS" },
{ 0x10DE0299,"GeForce Go 7900 GTX" },
{ 0x10DE029A,"Quadro FX 2500M" },
{ 0x10DE029B,"Quadro FX 1500M" },
{ 0x10DE029C,"Quadro FX 5500" },
{ 0x10DE029D,"Quadro FX 3500" },
{ 0x10DE029E,"Quadro FX 1500" },
{ 0x10DE029F,"Quadro FX 4500 X2" },
// 02A0 - 02AF
// 02B0 - 02BF
// 02C0 - 02CF
// 02D0 - 02DF
// 02E0 - 02EF
{ 0x10DE02E0,NV_SUB_IDS, "GeForce 7600 GT" },
{ 0x10DE02E1,NV_SUB_IDS, "GeForce 7600 GS" },
{ 0x10DE02E2,NV_SUB_IDS, "GeForce 7300 GT" },
{ 0x10DE02E3,NV_SUB_IDS, "GeForce 7900 GS" },
{ 0x10DE02E4,NV_SUB_IDS, "GeForce 7950 GT" },
{ 0x10DE02E0,"GeForce 7600 GT" },
{ 0x10DE02E1,"GeForce 7600 GS" },
{ 0x10DE02E2,"GeForce 7300 GT" },
{ 0x10DE02E3,"GeForce 7900 GS" },
{ 0x10DE02E4,"GeForce 7950 GT" },
// 02F0 - 02FF
// 0300 - 030F
{ 0x10DE0301,NV_SUB_IDS, "GeForce FX 5800 Ultra" },
{ 0x10DE0302,NV_SUB_IDS, "GeForce FX 5800" },
{ 0x10DE0308,NV_SUB_IDS, "Quadro FX 2000" },
{ 0x10DE0309,NV_SUB_IDS, "Quadro FX 1000" },
{ 0x10DE0301,"GeForce FX 5800 Ultra" },
{ 0x10DE0302,"GeForce FX 5800" },
{ 0x10DE0308,"Quadro FX 2000" },
{ 0x10DE0309,"Quadro FX 1000" },
// 0310 - 031F
{ 0x10DE0311,NV_SUB_IDS, "GeForce FX 5600 Ultra" },
{ 0x10DE0312,NV_SUB_IDS, "GeForce FX 5600" },
{ 0x10DE0314,NV_SUB_IDS, "GeForce FX 5600XT" },
{ 0x10DE031A,NV_SUB_IDS, "GeForce FX Go5600" },
{ 0x10DE031B,NV_SUB_IDS, "GeForce FX Go5650" },
{ 0x10DE031C,NV_SUB_IDS, "Quadro FX Go700" },
{ 0x10DE0311,"GeForce FX 5600 Ultra" },
{ 0x10DE0312,"GeForce FX 5600" },
{ 0x10DE0314,"GeForce FX 5600XT" },
{ 0x10DE031A,"GeForce FX Go5600" },
{ 0x10DE031B,"GeForce FX Go5650" },
{ 0x10DE031C,"Quadro FX Go700" },
// 0320 - 032F
{ 0x10DE0320,NV_SUB_IDS, "GeForce FX 5200" },
{ 0x10DE0321,NV_SUB_IDS, "GeForce FX 5200 Ultra" },
{ 0x10DE0322,NV_SUB_IDS, "GeForce FX 5200" },
{ 0x10DE0323,NV_SUB_IDS, "GeForce FX 5200 LE" },
{ 0x10DE0324,NV_SUB_IDS, "GeForce FX Go5200" },
{ 0x10DE0325,NV_SUB_IDS, "GeForce FX Go5250" },
{ 0x10DE0326,NV_SUB_IDS, "GeForce FX 5500" },
{ 0x10DE0328,NV_SUB_IDS, "GeForce FX Go5200 32M/64M" },
{ 0x10DE0329,NV_SUB_IDS, "GeForce FX Go5200" },
{ 0x10DE032A,NV_SUB_IDS, "Quadro NVS 55/280 PCI" },
{ 0x10DE032B,NV_SUB_IDS, "Quadro FX 500/600 PCI" },
{ 0x10DE032C,NV_SUB_IDS, "GeForce FX Go53xx Series" },
{ 0x10DE032D,NV_SUB_IDS, "GeForce FX Go5100" },
{ 0x10DE0320,"GeForce FX 5200" },
{ 0x10DE0321,"GeForce FX 5200 Ultra" },
{ 0x10DE0322,"GeForce FX 5200" },
{ 0x10DE0323,"GeForce FX 5200 LE" },
{ 0x10DE0324,"GeForce FX Go5200" },
{ 0x10DE0325,"GeForce FX Go5250" },
{ 0x10DE0326,"GeForce FX 5500" },
{ 0x10DE0328,"GeForce FX Go5200 32M/64M" },
{ 0x10DE0329,"GeForce FX Go5200" },
{ 0x10DE032A,"Quadro NVS 55/280 PCI" },
{ 0x10DE032B,"Quadro FX 500/600 PCI" },
{ 0x10DE032C,"GeForce FX Go53xx Series" },
{ 0x10DE032D,"GeForce FX Go5100" },
{ 0x10DE032F,"NV34GL" },
// 0330 - 033F
{ 0x10DE0330,NV_SUB_IDS, "GeForce FX 5900 Ultra" },
{ 0x10DE0331,NV_SUB_IDS, "GeForce FX 5900" },
{ 0x10DE0332,NV_SUB_IDS, "GeForce FX 5900XT" },
{ 0x10DE0333,NV_SUB_IDS, "GeForce FX 5950 Ultra" },
{ 0x10DE0334,NV_SUB_IDS, "GeForce FX 5900ZT" },
{ 0x10DE0338,NV_SUB_IDS, "Quadro FX 3000" },
{ 0x10DE033F,NV_SUB_IDS, "Quadro FX 700" },
{ 0x10DE0330,"GeForce FX 5900 Ultra" },
{ 0x10DE0331,"GeForce FX 5900" },
{ 0x10DE0332,"GeForce FX 5900XT" },
{ 0x10DE0333,"GeForce FX 5950 Ultra" },
{ 0x10DE0334,"GeForce FX 5900ZT" },
{ 0x10DE0338,"Quadro FX 3000" },
{ 0x10DE033F,"Quadro FX 700" },
// 0340 - 034F
{ 0x10DE0341,NV_SUB_IDS, "GeForce FX 5700 Ultra" },
{ 0x10DE0342,NV_SUB_IDS, "GeForce FX 5700" },
{ 0x10DE0343,NV_SUB_IDS, "GeForce FX 5700LE" },
{ 0x10DE0344,NV_SUB_IDS, "GeForce FX 5700VE" },
{ 0x10DE0347,NV_SUB_IDS, "GeForce FX Go5700" },
{ 0x10DE0348, NV_SUB_IDS,"GeForce FX Go5700" },
{ 0x10DE034C,NV_SUB_IDS, "Quadro FX Go1000" },
{ 0x10DE034E,NV_SUB_IDS, "Quadro FX 1100" },
{ 0x10DE0341,"GeForce FX 5700 Ultra" },
{ 0x10DE0342,"GeForce FX 5700" },
{ 0x10DE0343,"GeForce FX 5700LE" },
{ 0x10DE0344,"GeForce FX 5700VE" },
{ 0x10DE0345,"NV36.5" },
{ 0x10DE0347,"GeForce FX Go5700" },
{ 0x10DE0348,"GeForce FX Go5700" },
{ 0x10DE0349,"NV36M Pro" },
{ 0x10DE034B,"NV36MAP" },
{ 0x10DE034C,"Quadro FX Go1000" },
{ 0x10DE034E,"Quadro FX 1100" },
{ 0x10DE034F,"NV36GL" },
// 0350 - 035F
// 0360 - 036F
// 0370 - 037F
// 0380 - 038F
{ 0x10DE038B,NV_SUB_IDS, "GeForce 7650 GS" },
{ 0x10DE038B,"GeForce 7650 GS" },
// 0390 - 039F
{ 0x10DE0390,NV_SUB_IDS, "GeForce 7650 GS" },
{ 0x10DE0391,NV_SUB_IDS, "GeForce 7600 GT" },
{ 0x10DE0392,NV_SUB_IDS, "GeForce 7600 GS" },
{ 0x10DE0393,NV_SUB_IDS, "GeForce 7300 GT" },
{ 0x10DE0394,NV_SUB_IDS, "GeForce 7600 LE" },
{ 0x10DE0395,NV_SUB_IDS, "GeForce 7300 GT" },
{ 0x10DE0397,NV_SUB_IDS, "GeForce Go 7700" },
{ 0x10DE0398,NV_SUB_IDS, "GeForce Go 7600" },
{ 0x10DE0399,NV_SUB_IDS, "GeForce Go 7600 GT"},
{ 0x10DE039A,NV_SUB_IDS, "Quadro NVS 300M" },
{ 0x10DE039B,NV_SUB_IDS, "GeForce Go 7900 SE" },
{ 0x10DE039C,NV_SUB_IDS, "Quadro FX 550M" },
{ 0x10DE039E,NV_SUB_IDS, "Quadro FX 560" },
{ 0x10DE0390,"GeForce 7650 GS" },
{ 0x10DE0391,"GeForce 7600 GT" },
{ 0x10DE0392,"GeForce 7600 GS" },
{ 0x10DE0393,"GeForce 7300 GT" },
{ 0x10DE0394,"GeForce 7600 LE" },
{ 0x10DE0395,"GeForce 7300 GT" },
{ 0x10DE0397,"GeForce Go 7700" },
{ 0x10DE0398,"GeForce Go 7600" },
{ 0x10DE0399,"GeForce Go 7600 GT"},
{ 0x10DE039A,"Quadro NVS 300M" },
{ 0x10DE039B,"GeForce Go 7900 SE" },
{ 0x10DE039C,"Quadro FX 560M" },
{ 0x10DE039E,"Quadro FX 560" },
// 03A0 - 03AF
// 03B0 - 03BF
// 03C0 - 03CF
// 03D0 - 03DF
{ 0x10DE03D0,NV_SUB_IDS, "GeForce 6150SE nForce 430" },
{ 0x10DE03D1,NV_SUB_IDS, "GeForce 6100 nForce 405" },
{ 0x10DE03D2,NV_SUB_IDS, "GeForce 6100 nForce 400" },
{ 0x10DE03D5,NV_SUB_IDS, "GeForce 6100 nForce 420" },
{ 0x10DE03D6,NV_SUB_IDS, "GeForce 7025 / nForce 630a" },
{ 0x10DE03D0,"GeForce 6150SE nForce 430" },
{ 0x10DE03D1,"GeForce 6100 nForce 405" },
{ 0x10DE03D2,"GeForce 6100 nForce 400" },
{ 0x10DE03D5,"GeForce 6100 nForce 420" },
{ 0x10DE03D6,"GeForce 7025 / nForce 630a" },
// 03E0 - 03EF
// 03F0 - 03FF
// 0400 - 040F
{ 0x10DE0400,NV_SUB_IDS, "GeForce 8600 GTS" },
{ 0x10DE0401,NV_SUB_IDS, "GeForce 8600 GT" },
{ 0x10DE0402,NV_SUB_IDS, "GeForce 8600 GT" },
{ 0x10DE0403,NV_SUB_IDS, "GeForce 8600 GS" },
{ 0x10DE0404,NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE0405,NV_SUB_IDS, "GeForce 9500M GS" },
{ 0x10DE0406,NV_SUB_IDS, "GeForce 8300 GS" },
{ 0x10DE0407,NV_SUB_IDS, "GeForce 8600M GT" },
{ 0x10DE0408,NV_SUB_IDS, "GeForce 9650M GS" },
{ 0x10DE0409,NV_SUB_IDS, "GeForce 8700M GT" },
{ 0x10DE040A,NV_SUB_IDS, "Quadro FX 370" },
{ 0x10DE040B,NV_SUB_IDS, "Quadro NVS 320M" },
{ 0x10DE040C,NV_SUB_IDS, "Quadro FX 570M" },
{ 0x10DE040D,NV_SUB_IDS, "Quadro FX 1600M" },
{ 0x10DE040E,NV_SUB_IDS, "Quadro FX 570" },
{ 0x10DE040F,NV_SUB_IDS, "Quadro FX 1700" },
{ 0x10DE0400,"GeForce 8600 GTS" },
{ 0x10DE0401,"GeForce 8600 GT" },
{ 0x10DE0402,"GeForce 8600 GT" },
{ 0x10DE0403,"GeForce 8600 GS" },
{ 0x10DE0404,"GeForce 8400 GS" },
{ 0x10DE0405,"GeForce 9500M GS" },
{ 0x10DE0406,"GeForce 8300 GS" },
{ 0x10DE0407,"GeForce 8600M GT" },
{ 0x10DE0408,"GeForce 9650M GS" },
{ 0x10DE0409,"GeForce 8700M GT" },
{ 0x10DE040A,"Quadro FX 370" },
{ 0x10DE040B,"Quadro NVS 320M" },
{ 0x10DE040C,"Quadro FX 570M" },
{ 0x10DE040D,"Quadro FX 1600M" },
{ 0x10DE040E,"Quadro FX 570" },
{ 0x10DE040F,"Quadro FX 1700" },
// 0410 - 041F
{ 0x10DE0410,NV_SUB_IDS, "GeForce GT 330" },
{ 0x10DE0410,"GeForce GT 330" },
// 0420 - 042F
{ 0x10DE0420,NV_SUB_IDS, "GeForce 8400 SE" },
{ 0x10DE0421,NV_SUB_IDS, "GeForce 8500 GT" },
{ 0x10DE0422,NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE0423,NV_SUB_IDS, "GeForce 8300 GS" },
{ 0x10DE0424,NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE0425,NV_SUB_IDS, "GeForce 8600M GS" },
{ 0x10DE0426,NV_SUB_IDS, "GeForce 8400M GT" },
{ 0x10DE0427,NV_SUB_IDS, "GeForce 8400M GS" },
{ 0x10DE0428,NV_SUB_IDS, "GeForce 8400M G" },
{ 0x10DE0429,NV_SUB_IDS, "Quadro NVS 140M" },
{ 0x10DE042A,NV_SUB_IDS, "Quadro NVS 130M" },
{ 0x10DE042B,NV_SUB_IDS, "Quadro NVS 135M" },
{ 0x10DE042C,NV_SUB_IDS, "GeForce 9400 GT" },
{ 0x10DE042D,NV_SUB_IDS, "Quadro FX 360M" },
{ 0x10DE042E,NV_SUB_IDS, "GeForce 9300M G" },
{ 0x10DE042F,NV_SUB_IDS, "Quadro NVS 290" },
{ 0x10DE0420,"GeForce 8400 SE" },
{ 0x10DE0421,"GeForce 8500 GT" },
{ 0x10DE0422,"GeForce 8400 GS" },
{ 0x10DE0423,"GeForce 8300 GS" },
{ 0x10DE0424,"GeForce 8400 GS" },
{ 0x10DE0425,"GeForce 8600M GS" },
{ 0x10DE0426,"GeForce 8400M GT" },
{ 0x10DE0427,"GeForce 8400M GS" },
{ 0x10DE0428,"GeForce 8400M G" },
{ 0x10DE0429,"Quadro NVS 140M" },
{ 0x10DE042A,"Quadro NVS 130M" },
{ 0x10DE042B,"Quadro NVS 135M" },
{ 0x10DE042C,"GeForce 9400 GT" },
{ 0x10DE042D,"Quadro FX 360M" },
{ 0x10DE042E,"GeForce 9300M G" },
{ 0x10DE042F,"Quadro NVS 290" },
// 0430 - 043F
// 0440 - 044F
// 0450 - 045F
// 04A0 - 04AF
// 04B0 - 04BF
// 04C0 - 04CF
{ 0x10DE04C0,"NVIDIA G78" },
{ 0x10DE04C1,"NVIDIA G78" },
{ 0x10DE04C2,"NVIDIA G78" },
{ 0x10DE04C3,"NVIDIA G78" },
{ 0x10DE04C4,"NVIDIA G78" },
{ 0x10DE04C5,"NVIDIA G78" },
{ 0x10DE04C6,"NVIDIA G78" },
{ 0x10DE04C7,"NVIDIA G78" },
{ 0x10DE04C8,"NVIDIA G78" },
{ 0x10DE04C9,"NVIDIA G78" },
{ 0x10DE04CA,"NVIDIA G78" },
{ 0x10DE04CB,"NVIDIA G78" },
{ 0x10DE04CC,"NVIDIA G78" },
{ 0x10DE04CD,"NVIDIA G78" },
{ 0x10DE04CE,"NVIDIA G78" },
{ 0x10DE04CF,"NVIDIA G78" },
// 04D0 - 04DF
// 04E0 - 04EF
// 04F0 - 04FF
// 0510 - 051F
// 0520 - 052F
// 0530 - 053F
{ 0x10DE0530,NV_SUB_IDS, "GeForce 7190M / nForce 650M" },
{ 0x10DE0531,NV_SUB_IDS, "GeForce 7150M / nForce 630M" },
{ 0x10DE0533,NV_SUB_IDS, "GeForce 7000M / nForce 610M" },
{ 0x10DE053A,NV_SUB_IDS, "GeForce 7050 PV / nForce 630a" },
{ 0x10DE053B,NV_SUB_IDS, "GeForce 7050 PV / nForce 630a" },
{ 0x10DE053E,NV_SUB_IDS, "GeForce 7025 / nForce 630a" },
{ 0x10DE0530,"GeForce 7190M / nForce 650M" },
{ 0x10DE0531,"GeForce 7150M / nForce 630M" },
{ 0x10DE0533,"GeForce 7000M / nForce 610M" },
{ 0x10DE053A,"GeForce 7050 PV / nForce 630a" },
{ 0x10DE053B,"GeForce 7050 PV / nForce 630a" },
{ 0x10DE053E,"GeForce 7025 / nForce 630a" },
// 0540 - 054F
// 0550 - 055F
// 0560 - 056F
// 05C0 - 05CF
// 05D0 - 05DF
// 05E0 - 05EF
{ 0x10DE05E0,NV_SUB_IDS, "GeForce GTX 295" },
{ 0x10DE05E1,NV_SUB_IDS, "GeForce GTX 280" },
{ 0x10DE05E2,NV_SUB_IDS, "GeForce GTX 260" },
{ 0x10DE05E3,NV_SUB_IDS, "GeForce GTX 285" },
{ 0x10DE05E6,NV_SUB_IDS, "GeForce GTX 275" },
{ 0x10DE05E7,0x10DE0595, "Tesla T10 Processor" },
{ 0x10DE05E7,0x10DE066A,"Tesla C1060" },
{ 0x10DE05E7,0x10DE068F,"Tesla T10 Processor" },
{ 0x10DE05E7,0x10DE0697,"Tesla M1060" },
{ 0x10DE05E7,0x10DE0714,"Tesla M1060" },
{ 0x10DE05E7,0x10DE0743,"Tesla M1060" },
{ 0x10DE05EA,NV_SUB_IDS, "GeForce GTX 260" },
{ 0x10DE05EB,NV_SUB_IDS, "GeForce GTX 295" },
{ 0x10DE05ED,NV_SUB_IDS, "Quadroplex 2200 D2" },
{ 0x10DE05E0,"GeForce GTX 295" },
{ 0x10DE05E1,"GeForce GTX 280" },
{ 0x10DE05E2,"GeForce GTX 260" },
{ 0x10DE05E3,"GeForce GTX 285" },
{ 0x10DE05E4,"NVIDIA GT200" },
{ 0x10DE05E5,"NVIDIA GT200" },
{ 0x10DE05E6,"GeForce GTX 275" },
{ 0x10DE05E7,"nVidia Tesla C1060" },
{ 0x10DE05E8,"NVIDIA GT200" },
{ 0x10DE05E9,"NVIDIA GT200" },
{ 0x10DE05EA,"GeForce GTX 260" },
{ 0x10DE05EB,"GeForce GTX 295" },
{ 0x10DE05EC,"NVIDIA GT200" },
{ 0x10DE05ED,"Quadroplex 2200 D2" },
{ 0x10DE05EE,"NVIDIA GT200" },
{ 0x10DE05EF,"NVIDIA GT200" },
// 05F0 - 05FF
{ 0x10DE05F8,NV_SUB_IDS, "Quadroplex 2200 S4" },
{ 0x10DE05F9,NV_SUB_IDS, "Quadro CX" },
{ 0x10DE05FD,NV_SUB_IDS, "Quadro FX 5800" },
{ 0x10DE05FE,NV_SUB_IDS, "Quadro FX 4800" },
{ 0x10DE05FF,NV_SUB_IDS, "Quadro FX 3800" },
{ 0x10DE05F0,"NVIDIA GT200" },
{ 0x10DE05F1,"NVIDIA GT200" },
{ 0x10DE05F2,"NVIDIA GT200" },
{ 0x10DE05F3,"NVIDIA GT200" },
{ 0x10DE05F4,"NVIDIA GT200" },
{ 0x10DE05F5,"NVIDIA GT200" },
{ 0x10DE05F6,"NVIDIA GT200" },
{ 0x10DE05F7,"NVIDIA GT200" },
{ 0x10DE05F8,"Quadroplex 2200 S4" },
{ 0x10DE05F9,"NVIDIA Quadro CX" },
{ 0x10DE05FA,"NVIDIA GT200" },
{ 0x10DE05FB,"NVIDIA GT200" },
{ 0x10DE05FC,"NVIDIA GT200" },
{ 0x10DE05FD,"Quadro FX 5800" },
{ 0x10DE05FE,"Quadro FX 4800" },
{ 0x10DE05FF,"Quadro FX 3800" },
// 0600 - 060F
{ 0x10DE0600,NV_SUB_IDS, "GeForce 8800 GTS 512" },
{ 0x10DE0601,NV_SUB_IDS, "GeForce 9800 GT" },
{ 0x10DE0602,NV_SUB_IDS, "GeForce 8800 GT" },
{ 0x10DE0603,NV_SUB_IDS, "GeForce GT 230" },
{ 0x10DE0604,NV_SUB_IDS, "GeForce 9800 GX2" },
{ 0x10DE0605,NV_SUB_IDS, "GeForce 9800 GT" },
{ 0x10DE0606,NV_SUB_IDS, "GeForce 8800 GS" },
{ 0x10DE0607,NV_SUB_IDS, "GeForce GTS 240" },
{ 0x10DE0608,NV_SUB_IDS, "GeForce 9800M GTX" },
{ 0x10DE0609,NV_SUB_IDS, "GeForce 8800M GTS" },
{ 0x10DE060A,NV_SUB_IDS, "GeForce GTX 280M" },
{ 0x10DE060B,NV_SUB_IDS, "GeForce 9800M GT" },
{ 0x10DE060C,NV_SUB_IDS, "GeForce 8800M GTX" },
{ 0x10DE060D,NV_SUB_IDS, "GeForce 8800 GS" },
{ 0x10DE060F,NV_SUB_IDS, "GeForce GTX 285M" },
{ 0x10DE0600,"GeForce 8800 GTS" },
{ 0x10DE0601,"GeForce 9800 GT" },
{ 0x10DE0602,"GeForce 8800 GT" },
{ 0x10DE0603,"GeForce GT 230" },
{ 0x10DE0604,"GeForce 9800 GX2" },
{ 0x10DE0605,"GeForce 9800 GT" },
{ 0x10DE0606,"GeForce 8800 GS" },
{ 0x10DE0607,"GeForce GTS 240" },
{ 0x10DE0608,"GeForce 9800M GTX" },
{ 0x10DE0609,"GeForce 8800M GTS" },
{ 0x10DE060A,"GeForce GTX 280M" },
{ 0x10DE060B,"GeForce 9800M GT" },
{ 0x10DE060C,"GeForce 8800M GTX" },
{ 0x10DE060D,"GeForce 8800 GS" },
{ 0x10DE060F,"GeForce GTX 285M" },
// 0610 - 061F
{ 0x10DE0610,NV_SUB_IDS, "GeForce 9600 GSO" },
{ 0x10DE0611,NV_SUB_IDS, "GeForce 8800 GT" },
{ 0x10DE0612,NV_SUB_IDS, "GeForce 9800 GTX" },
{ 0x10DE0613,NV_SUB_IDS, "GeForce 9800 GTX+" },
{ 0x10DE0614,NV_SUB_IDS, "GeForce 9800 GT" },
{ 0x10DE0615,NV_SUB_IDS, "GeForce GTS 250" },
{ 0x10DE0617,NV_SUB_IDS, "GeForce 9800M GTX" },
{ 0x10DE0618,NV_SUB_IDS, "GeForce GTX 260M" },
{ 0x10DE0619,NV_SUB_IDS, "Quadro FX 4700 X2" },
{ 0x10DE061A,NV_SUB_IDS, "Quadro FX 3700" },
{ 0x10DE061B,NV_SUB_IDS, "Quadro VX 200" },
{ 0x10DE061C,NV_SUB_IDS, "Quadro FX 3600M" },
{ 0x10DE061D,NV_SUB_IDS, "Quadro FX 2800M" },
{ 0x10DE061E,NV_SUB_IDS, "Quadro FX 3700M" },
{ 0x10DE061F,NV_SUB_IDS, "Quadro FX 3800M" },
{ 0x10DE0610,"GeForce 9600 GSO" },
{ 0x10DE0611,"GeForce 8800 GT" },
{ 0x10DE0612,"GeForce 9800 GTX" },
{ 0x10DE0613,"GeForce 9800 GTX+" },
{ 0x10DE0614,"GeForce 9800 GT" },
{ 0x10DE0615,"GeForce GTS 250" },
{ 0x10DE0617,"GeForce 9800M GTX" },
{ 0x10DE0618,"GeForce GTX 260M" },
{ 0x10DE0619,"Quadro FX 4700 X2" },
{ 0x10DE061A,"Quadro FX 3700" },
{ 0x10DE061B,"Quadro VX 200" },
{ 0x10DE061C,"Quadro FX 3600M" },
{ 0x10DE061D,"Quadro FX 2800M" },
{ 0x10DE061E,"Quadro FX 3700M" },
{ 0x10DE061F,"Quadro FX 3800M" },
// 0620 - 062F
{ 0x10DE0621,NV_SUB_IDS, "GeForce GT 230" },
{ 0x10DE0622,NV_SUB_IDS, "GeForce 9600 GT" },
{ 0x10DE0623,NV_SUB_IDS, "GeForce 9600 GS" },
{ 0x10DE0625,NV_SUB_IDS, "GeForce 9600 GSO 512"},
{ 0x10DE0626,NV_SUB_IDS, "GeForce GT 130" },
{ 0x10DE0627,NV_SUB_IDS, "GeForce GT 140" },
{ 0x10DE0628,NV_SUB_IDS, "GeForce 9800M GTS" },
{ 0x10DE062A,NV_SUB_IDS, "GeForce 9700M GTS" },
{ 0x10DE062B,NV_SUB_IDS, "GeForce 9800M GS" },
{ 0x10DE062C,NV_SUB_IDS, "GeForce 9800M GTS" },
{ 0x10DE062D,NV_SUB_IDS, "GeForce 9600 GT" },
{ 0x10DE062E,NV_SUB_IDS, "GeForce 9600 GT" },
{ 0x10DE0620,"NVIDIA G94" },
{ 0x10DE0621,"GeForce GT 230" },
{ 0x10DE0622,"GeForce 9600 GT" },
{ 0x10DE0623,"GeForce 9600 GS" },
{ 0x10DE0624,"NVIDIA G94" },
{ 0x10DE0625,"GeForce 9600 GSO 512"},
{ 0x10DE0626,"GeForce GT 130" },
{ 0x10DE0627,"GeForce GT 140" },
{ 0x10DE0628,"GeForce 9800M GTS" },
{ 0x10DE0629,"NVIDIA G94" },
{ 0x10DE062A,"GeForce 9700M GTS" },
{ 0x10DE062B,"GeForce 9800M GS" },
{ 0x10DE062C,"GeForce 9800M GTS" },
{ 0x10DE062D,"GeForce 9600 GT" },
{ 0x10DE062E,"GeForce 9600 GT" },
{ 0x10DE062F,"GeForce 9800 S" },
// 0630 - 063F
{ 0x10DE0631,NV_SUB_IDS, "GeForce GTS 160M" },
{ 0x10DE0632,NV_SUB_IDS, "GeForce GTS 150M" },
{ 0x10DE0635,NV_SUB_IDS, "GeForce 9600 GSO" },
{ 0x10DE0637,NV_SUB_IDS, "GeForce 9600 GT" },
{ 0x10DE0638,NV_SUB_IDS, "Quadro FX 1800" },
{ 0x10DE063A,NV_SUB_IDS, "Quadro FX 2700M" },
{ 0x10DE0630,"GeForce 9700 S" },
{ 0x10DE0631,"GeForce GTS 160M" },
{ 0x10DE0632,"GeForce GTS 150M" },
{ 0x10DE0633,"NVIDIA G94" },
{ 0x10DE0634,"NVIDIA G94" },
{ 0x10DE0635,"GeForce 9600 GSO" },
{ 0x10DE0636,"NVIDIA G94" },
{ 0x10DE0637,"GeForce 9600 GT" },
{ 0x10DE0638,"Quadro FX 1800" },
{ 0x10DE0639,"NVIDIA G94" },
{ 0x10DE063A,"Quadro FX 2700M" },
{ 0x10DE063B,"NVIDIA G94" },
{ 0x10DE063C,"NVIDIA G94" },
{ 0x10DE063D,"NVIDIA G94" },
{ 0x10DE063E,"NVIDIA G94" },
{ 0x10DE063F,"NVIDIA G94" },
// 0640 - 064F
{ 0x10DE0640,NV_SUB_IDS, "GeForce 9500 GT" },
{ 0x10DE0641,NV_SUB_IDS, "GeForce 9400 GT" },
{ 0x10DE0642,NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE0643,NV_SUB_IDS, "GeForce 9500 GT" },
{ 0x10DE0644,NV_SUB_IDS, "GeForce 9500 GS" },
{ 0x10DE0645,NV_SUB_IDS, "GeForce 9500 GS" },
{ 0x10DE0646,NV_SUB_IDS, "GeForce GT 120" },
{ 0x10DE0647,NV_SUB_IDS, "GeForce 9600M GT" },
{ 0x10DE0648,NV_SUB_IDS, "GeForce 9600M GS" },
{ 0x10DE0649,NV_SUB_IDS, "GeForce 9600M GT" },
{ 0x10DE064A,NV_SUB_IDS, "GeForce 9700M GT" },
{ 0x10DE064B,NV_SUB_IDS, "GeForce 9500M G" },
{ 0x10DE064C,NV_SUB_IDS, "GeForce 9650M GT" },
{ 0x10DE0640,"GeForce 9500 GT" },
{ 0x10DE0641,"GeForce 9400 GT" },
{ 0x10DE0642,"GeForce 8400 GS" },
{ 0x10DE0643,"GeForce 9500 GT" },
{ 0x10DE0644,"GeForce 9500 GS" },
{ 0x10DE0645,"GeForce 9500 GS" },
{ 0x10DE0646,"GeForce GT 120" },
{ 0x10DE0647,"GeForce 9600M GT" },
{ 0x10DE0648,"GeForce 9600M GS" },
{ 0x10DE0649,"GeForce 9600M GT" },
{ 0x10DE064A,"GeForce 9700M GT" },
{ 0x10DE064B,"GeForce 9500M G" },
{ 0x10DE064C,"GeForce 9650M GT" },
// 0650 - 065F
{ 0x10DE0651,NV_SUB_IDS, "GeForce G 110M" },
{ 0x10DE0652,NV_SUB_IDS, "GeForce GT 130M" },
{ 0x10DE0653,NV_SUB_IDS, "GeForce GT 120M" },
{ 0x10DE0654,NV_SUB_IDS, "GeForce GT 220M" },
{ 0x10DE0655,NV_SUB_IDS, "GeForce GT 120" },
{ 0x10DE0656,NV_SUB_IDS, "GeForce 9650 S" },
{ 0x10DE0658,NV_SUB_IDS, "Quadro FX 380" },
{ 0x10DE0659,NV_SUB_IDS, "Quadro FX 580" },
{ 0x10DE065A,NV_SUB_IDS, "Quadro FX 1700M" },
{ 0x10DE065B,NV_SUB_IDS, "GeForce 9400 GT" },
{ 0x10DE065C,NV_SUB_IDS, "Quadro FX 770M" },
{ 0x10DE065F,NV_SUB_IDS, "GeForce G210" },
{ 0x10DE0650,"NVIDIA G96-825" },
{ 0x10DE0651,"GeForce G 110M" },
{ 0x10DE0652,"GeForce GT 130M" },
{ 0x10DE0653,"GeForce GT 120M" },
{ 0x10DE0654,"GeForce GT 220M" },
{ 0x10DE0655,"GeForce GT 120" },
{ 0x10DE0656,"GeForce 9650 S" },
{ 0x10DE0657,"NVIDIA G96" },
{ 0x10DE0658,"Quadro FX 380" },
{ 0x10DE0659,"Quadro FX 580" },
{ 0x10DE065A,"Quadro FX 1700M" },
{ 0x10DE065B,"GeForce 9400 GT" },
{ 0x10DE065C,"Quadro FX 770M" },
{ 0x10DE065D,"NVIDIA G96" },
{ 0x10DE065E,"NVIDIA G96" },
{ 0x10DE065F,"GeForce G210" },
// 0660 - 066F
// 0670 - 067F
// 0680 - 068F
// 0690 - 069F
// 06A0 - 06AF
{ 0x10DE06A0,"NVIDIA GT214" },
// 06B0 - 06BF
{ 0x10DE06B0,"NVIDIA GT214" },
// 06C0 - 06CF
{ 0x10DE06C0,NV_SUB_IDS, "GeForce GTX 480" },
{ 0x10DE06C4,NV_SUB_IDS, "GeForce GTX 465" },
{ 0x10DE06CA,NV_SUB_IDS, "GeForce GTX 480M" },
{ 0x10DE06CD,NV_SUB_IDS, "GeForce GTX 470" },
{ 0x10DE06C0,"GeForce GTX 480" },
{ 0x10DE06C3,"GeForce GTX D12U" },
{ 0x10DE06C4,"GeForce GTX 465" },
{ 0x10DE06CA,"GeForce GTX 480M" },
{ 0x10DE06CD,"GeForce GTX 470" },
// 06D0 - 06DF
{ 0x10DE06D1,0x10DE0771,"Tesla C2050" },
{ 0x10DE06D1,0x10DE0772,"Tesla C2070" },
{ 0x10DE06D2,0x10DE0774,"Tesla M2070" },
{ 0x10DE06D2,0x10DE0830,"Tesla M2070" },
{ 0x10DE06D2,0x10DE0842,"Tesla M2070" },
{ 0x10DE06D2,0x10DE088F,"Tesla X2070" },
{ 0x10DE06D2,0x10DE0908,"Tesla M2070" },
{ 0x10DE06D8,NV_SUB_IDS, "Quadro 6000" },
{ 0x10DE06D9,NV_SUB_IDS, "Quadro 5000" },
{ 0x10DE06DA,NV_SUB_IDS, "Quadro 5000M" },
{ 0x10DE06DC,NV_SUB_IDS, "Quadro 6000" },
{ 0x10DE06DD,NV_SUB_IDS, "Quadro 4000" },
{ 0x10DE06DE,0x10DE0773,"Tesla S2050" },
{ 0x10DE06DE,0x10DE077A,"Tesla M2050" },
{ 0x10DE06DE,0x10DE082F,"Tesla M2050" },
{ 0x10DE06DE,0x10DE0830,"Tesla M2070" },
{ 0x10DE06DE,0x10DE0831,"Tesla M2070" },
{ 0x10DE06DE,0x10DE0832,"Tesla M2070" },
{ 0x10DE06DE,0x10DE0840,"Tesla X2070" },
{ 0x10DE06DE,0x10DE0842,"Tesla M2050" },
{ 0x10DE06DE,0x10DE0843,"Tesla M2050" },
{ 0x10DE06DE,0x10DE0846,"Tesla M2050" },
{ 0x10DE06DE,0x10DE0866,"Tesla M2050" },
{ 0x10DE06DE,0x10DE0907,"Tesla M2050" },
{ 0x10DE06DE,0x10DE091E,"Tesla M2050" },
{ 0x10DE06DF,0x10DE0842,"Tesla M2070-Q" },
{ 0x10DE06DF,0x10DE084D,"Tesla M2070-Q" },
{ 0x10DE06DF,0x10DE087F,"Tesla M2070-Q" },
{ 0x10DE06D1,"Tesla C2050" },
{ 0x10DE06D2,"Tesla M2070" },
{ 0x10DE06D8,"Quadro 6000" },
{ 0x10DE06D9,"Quadro 5000" },
{ 0x10DE06DA,"Quadro 5000M" },
{ 0x10DE06DC,"Quadro 6000" },
{ 0x10DE06DD,"Quadro 4000" },
{ 0x10DE06DE,"Tesla M2050" },
{ 0x10DE06DF,"Tesla M2070-Q" },
// 06E0 - 06EF
{ 0x10DE06E0, NV_SUB_IDS, "GeForce 9300 GE" },
{ 0x10DE06E1, NV_SUB_IDS, "GeForce 9300 GS" },
{ 0x10DE06E2, NV_SUB_IDS, "GeForce 8400" },
{ 0x10DE06E3, NV_SUB_IDS, "GeForce 8400 SE" },
{ 0x10DE06E4, NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE06E5, NV_SUB_IDS, "GeForce 9300M GS" },
{ 0x10DE06E6, NV_SUB_IDS, "GeForce G100" },
{ 0x10DE06E7, NV_SUB_IDS, "GeForce 9300 SE" },
{ 0x10DE06E8, NV_SUB_IDS, "GeForce 9200M GS" },
{ 0x10DE06E9, NV_SUB_IDS, "GeForce 9300M GS" },
{ 0x10DE06EA, NV_SUB_IDS, "Quadro NVS 150M" },
{ 0x10DE06EB, NV_SUB_IDS, "Quadro NVS 160M" },
{ 0x10DE06EC, NV_SUB_IDS, "GeForce G 105M" },
{ 0x10DE06EF, NV_SUB_IDS, "GeForce G 103M" },
{ 0x10DE06E0,"GeForce 9300 GE" },
{ 0x10DE06E1,"GeForce 9300 GS" },
{ 0x10DE06E2,"GeForce 8400" },
{ 0x10DE06E3,"GeForce 8400 SE" },
{ 0x10DE06E4,"GeForce 8400 GS" },
{ 0x10DE06E5,"GeForce 9300M GS" },
{ 0x10DE06E6,"GeForce G100" },
{ 0x10DE06E7,"GeForce 9300 SE" },
{ 0x10DE06E8,"GeForce 9200M GE" },
{ 0x10DE06E9,"GeForce 9300M GS" },
{ 0x10DE06EA,"Quadro NVS 150M" },
{ 0x10DE06EB,"Quadro NVS 160M" },
{ 0x10DE06EC,"GeForce G 105M" },
{ 0x10DE06ED,"NVIDIA G98" },
{ 0x10DE06EF,"GeForce G 103M" },
// 06F0 - 06FF
{ 0x10DE06F1, NV_SUB_IDS, "GeForce G105M" },
{ 0x10DE06F8, NV_SUB_IDS, "Quadro NVS 420" },
{ 0x10DE06F9, NV_SUB_IDS, "Quadro FX 370 LP" },
{ 0x10DE06FA, NV_SUB_IDS, "Quadro NVS 450" },
{ 0x10DE06FB, NV_SUB_IDS, "Quadro FX 370M" },
{ 0x10DE06FD, NV_SUB_IDS, "Quadro NVS 295" },
{ 0x10DE06FF, NV_SUB_IDS, "HICx16 + Graphics" },
{ 0x10DE06F0,"NVIDIA G98" },
{ 0x10DE06F1,"GeForce G105M" },
{ 0x10DE06F2,"NVIDIA G98" },
{ 0x10DE06F3,"NVIDIA G98" },
{ 0x10DE06F4,"NVIDIA G98" },
{ 0x10DE06F5,"NVIDIA G98" },
{ 0x10DE06F6,"NVIDIA G98" },
{ 0x10DE06F7,"NVIDIA G98" },
{ 0x10DE06F8,"Quadro NVS 420" },
{ 0x10DE06F9,"Quadro FX 370 LP" },
{ 0x10DE06FA,"Quadro NVS 450" },
{ 0x10DE06FB,"Quadro FX 370M" },
{ 0x10DE06FC,"NVIDIA G98" },
{ 0x10DE06FD,"Quadro NVS 295" },
{ 0x10DE06FE,"NVIDIA G98" },
{ 0x10DE06FF,"HICx16 + Graphics" },
// 0700 - 070F
// 0710 - 071F
// 0720 - 072F
// 07C0 - 07CF
// 07D0 - 07DF
// 07E0 - 07EF
{ 0x10DE07E0, NV_SUB_IDS, "GeForce 7150 / nForce 630i" },
{ 0x10DE07E1, NV_SUB_IDS, "GeForce 7100 / nForce 630i" },
{ 0x10DE07E2, NV_SUB_IDS, "GeForce 7050 / nForce 630i" },
{ 0x10DE07E3, NV_SUB_IDS, "GeForce 7050 / nForce 610i" },
{ 0x10DE07E5, NV_SUB_IDS, "GeForce 7050 / nForce 620i" },
{ 0x10DE07E0,"GeForce 7150 / nForce 630i" },
{ 0x10DE07E1,"GeForce 7100 / nForce 630i" },
{ 0x10DE07E2,"GeForce 7050 / nForce 630i" },
{ 0x10DE07E3,"GeForce 7050 / nForce 610i" },
{ 0x10DE07E5,"GeForce 7050 / nForce 620i" },
// 07F0 - 07FF
// 0800 - 080F
// 0810 - 081F
// 0820 - 082F
// 0830 - 083F
// 0840 - 084F
{ 0x10DE0840, NV_SUB_IDS, "GeForce 8200M" },
{ 0x10DE0844, NV_SUB_IDS, "GeForce 9100M G" },
{ 0x10DE0845, NV_SUB_IDS, "GeForce 8200M G" },
{ 0x10DE0846, NV_SUB_IDS, "GeForce 9200" },
{ 0x10DE0847, NV_SUB_IDS, "GeForce 9100" },
{ 0x10DE0848, NV_SUB_IDS, "GeForce 8300" },
{ 0x10DE0849, NV_SUB_IDS, "GeForce 8200" },
{ 0x10DE084A, NV_SUB_IDS, "nForce 730a" },
{ 0x10DE084B, NV_SUB_IDS, "GeForce 9200" },
{ 0x10DE084C, NV_SUB_IDS, "nForce 980a/780a SLI" },
{ 0x10DE084D, NV_SUB_IDS, "nForce 750a SLI" },
{ 0x10DE084F, NV_SUB_IDS, "GeForce 8100 / nForce 720a" },
{ 0x10DE0840,"GeForce 8200M" },
{ 0x10DE0844,"GeForce 9100M G" },
{ 0x10DE0845,"GeForce 8200M G" },
{ 0x10DE0846,"GeForce 9200" },
{ 0x10DE0847,"GeForce 9100" },
{ 0x10DE0848,"GeForce 8300" },
{ 0x10DE0849,"GeForce 8200" },
{ 0x10DE084A,"nForce 730a" },
{ 0x10DE084B,"GeForce 9200" },
{ 0x10DE084C,"nForce 980a/780a SLI" },
{ 0x10DE084D,"nForce 750a SLI" },
{ 0x10DE084F,"GeForce 8100 / nForce 720a" },
// 0850 - 085F
// 0860 - 086F
{ 0x10DE0860, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE0861, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE0862, NV_SUB_IDS, "GeForce 9400M G" },
{ 0x10DE0863, NV_SUB_IDS, "GeForce 9400M" },
{ 0x10DE0864, NV_SUB_IDS, "GeForce 9300" },
{ 0x10DE0865, NV_SUB_IDS, "ION" },
{ 0x10DE0866, NV_SUB_IDS, "GeForce 9400M G" },
{ 0x10DE0867, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE0868, NV_SUB_IDS, "nForce 760i SLI" },
{ 0x10DE0869, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE086A, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE086C, NV_SUB_IDS, "GeForce 9300 / nForce 730i" },
{ 0x10DE086D, NV_SUB_IDS, "GeForce 9200" },
{ 0x10DE086E, NV_SUB_IDS, "GeForce 9100M G" },
{ 0x10DE086F, NV_SUB_IDS, "GeForce 8200M G" },
{ 0x10DE0860,"GeForce 9300" },
{ 0x10DE0861,"GeForce 9400" },
{ 0x10DE0862,"GeForce 9400M G" },
{ 0x10DE0863,"GeForce 9400M" },
{ 0x10DE0864,"GeForce 9300" },
{ 0x10DE0865,"GeForce 9300" },
{ 0x10DE0866,"GeForce 9400M G" },
{ 0x10DE0867,"GeForce 9400" },
{ 0x10DE0868,"nForce 760i SLI" },
{ 0x10DE0869,"GeForce 9400" },
{ 0x10DE086A,"GeForce 9400" },
{ 0x10DE086C,"GeForce 9300 / nForce 730i" },
{ 0x10DE086D,"GeForce 9200" },
{ 0x10DE086E,"GeForce 9100M G" },
{ 0x10DE086F,"GeForce 8200M G" },
// 0870 - 087F
{ 0x10DE0870, NV_SUB_IDS, "GeForce 9400M" },
{ 0x10DE0871, NV_SUB_IDS, "GeForce 9200" },
{ 0x10DE0872, NV_SUB_IDS, "GeForce G102M" },
{ 0x10DE0873, NV_SUB_IDS, "GeForce G102M" },
{ 0x10DE0874, NV_SUB_IDS, "ION" },
{ 0x10DE0876, NV_SUB_IDS, "ION" },
{ 0x10DE087A, NV_SUB_IDS, "GeForce 9400" },
{ 0x10DE087D, NV_SUB_IDS, "ION" },
{ 0x10DE087E, NV_SUB_IDS, "ION LE" },
{ 0x10DE087F, NV_SUB_IDS, "ION LE" },
{ 0x10DE0870,"GeForce 9400M" },
{ 0x10DE0871,"GeForce 9200" },
{ 0x10DE0872,"GeForce G102M" },
{ 0x10DE0873,"GeForce G205M" },
{ 0x10DE0874,"ION 9300M" },
{ 0x10DE0876,"ION 9400M" },
{ 0x10DE087A,"GeForce 9400" },
{ 0x10DE087D,"ION 9400M" },
{ 0x10DE087E,"ION LE" },
{ 0x10DE087F,"ION LE" }, // Tesla M2070-Q ??
// 0880 - 088F
// 0890 - 089F
// 08A0 - 08AF
{ 0x10DE08A0, NV_SUB_IDS, "GeForce 320M" },
{ 0x10DE08A4, NV_SUB_IDS, "GeForce 320M" },
{ 0x10DE08A5, NV_SUB_IDS, "GeForce 320M" },
{ 0x10DE08A0,"GeForce 320M" },
{ 0x10DE08A1,"MCP89-MZT" },
{ 0x10DE08A2,"GeForce 320M" },
{ 0x10DE08A3,"GeForce 320M" },
{ 0x10DE08A4,"GeForce 320M" },
{ 0x10DE08A5,"GeForce 320M" },
// 08B0 - 08BF
{ 0x10DE08B0,"MCP83 MMD" },
{ 0x10DE08B1,"GeForce 300M" },
{ 0x10DE08B2,"GeForce 300M" }, // MCP83-MJ
{ 0x10DE08B3,"MCP89 MM9" },
// 08C0 - 08CF
// 08D0 - 08DF
// 08E0 - 08EF
// 09E0 - 09EF
// 09F0 - 09FF
// 0A00 - 0A0F
// { 0x10DE0A00,"NVIDIA GT212" },
// 0A10 - 0A1F
// { 0x10DE0A10,"NVIDIA GT212" },
// 0A20 - 0A2F
{ 0x10DE0A20, NV_SUB_IDS, "GeForce GT220" },
{ 0x10DE0A22, NV_SUB_IDS, "GeForce 315" },
{ 0x10DE0A23, NV_SUB_IDS, "GeForce 210" },
{ 0x10DE0A26, NV_SUB_IDS, "GeForce 405" },
{ 0x10DE0A27, NV_SUB_IDS, "GeForce 405" },
{ 0x10DE0A28, NV_SUB_IDS, "GeForce GT 230M" },
{ 0x10DE0A29, NV_SUB_IDS, "GeForce GT 330M" },
{ 0x10DE0A2A, NV_SUB_IDS, "GeForce GT 230M" },
{ 0x10DE0A2B, NV_SUB_IDS, "GeForce GT 330M" },
{ 0x10DE0A2C, NV_SUB_IDS, "NVS 5100M" },
{ 0x10DE0A2D, NV_SUB_IDS, "GeForce GT 320M" },
{ 0x10DE0A20,"GeForce GT 220" },
{ 0x10DE0A21,"D10M2-20" },
{ 0x10DE0A22,"GeForce 315" },
{ 0x10DE0A23,"GeForce 210" },
{ 0x10DE0A26,"GeForce 405" },
{ 0x10DE0A27,"GeForce 405" },
{ 0x10DE0A28,"GeForce GT 230" },
{ 0x10DE0A29,"GeForce GT 330M" },
{ 0x10DE0A2A,"GeForce GT 230M" },
{ 0x10DE0A2B,"GeForce GT 330M" },
{ 0x10DE0A2C,"NVS 5100M" },
{ 0x10DE0A2D,"GeForce GT 320M" },
// 0A30 - 0A3F
{ 0x10DE0A32, NV_SUB_IDS, "GeForce GT 415" },
{ 0x10DE0A34, NV_SUB_IDS, "GeForce GT 240M" },
{ 0x10DE0A35, NV_SUB_IDS, "GeForce GT 325M" },
{ 0x10DE0A38, NV_SUB_IDS, "Quadro 400" },
{ 0x10DE0A3C, NV_SUB_IDS, "Quadro FX 880M" },
{ 0x10DE0A30,"GeForce GT 330M" },
{ 0x10DE0A32,"GeForce GT 415" },
{ 0x10DE0A34,"GeForce GT 240M" },
{ 0x10DE0A35,"GeForce GT 325M" },
{ 0x10DE0A38,"Quadro 400" },
{ 0x10DE0A3C,"Quadro FX 880M" },
{ 0x10DE0A3D,"N10P-ES" },
{ 0x10DE0A3F,"GT216-INT" },
// 0A40 - 0A4F
// 0A50 - 0A5F
// 0A60 - 0A6F
{ 0x10DE0A60, NV_SUB_IDS, "GeForce G210" },
{ 0x10DE0A62, NV_SUB_IDS, "GeForce 205" },
{ 0x10DE0A63, NV_SUB_IDS, "GeForce 310" },
{ 0x10DE0A64, NV_SUB_IDS, "ION" },
{ 0x10DE0A65, NV_SUB_IDS, "GeForce 210" },
{ 0x10DE0A66, NV_SUB_IDS, "GeForce 310" },
{ 0x10DE0A67, NV_SUB_IDS, "GeForce 315" },
{ 0x10DE0A68, NV_SUB_IDS, "GeForce G105M" },
{ 0x10DE0A69, NV_SUB_IDS, "GeForce G105M" },
{ 0x10DE0A6A, NV_SUB_IDS, "NVS 2100M" },
{ 0x10DE0A6C, NV_SUB_IDS, "NVS 3100M" },
{ 0x10DE0A6E, NV_SUB_IDS, "GeForce 305M" },
{ 0x10DE0A6F, NV_SUB_IDS, "ION" },
{ 0x10DE0A60,"GeForce G210" },
{ 0x10DE0A61,"NVS 2100" },
{ 0x10DE0A62,"GeForce 205" },
{ 0x10DE0A63,"GeForce 310" },
{ 0x10DE0A64,"ION" },
{ 0x10DE0A65,"GeForce 210" },
{ 0x10DE0A66,"GeForce 310" },
{ 0x10DE0A67,"GeForce 315" },
{ 0x10DE0A68,"GeForce G105M" },
{ 0x10DE0A69,"GeForce G105M" },
{ 0x10DE0A6A,"NVS 2100M" },
{ 0x10DE0A6C,"NVS 3100M" },
{ 0x10DE0A6E,"GeForce 305M" },
{ 0x10DE0A6F,"ION" },
// 0A70 - 0A7F
{ 0x10DE0A70, NV_SUB_IDS, "GeForce 310M" },
{ 0x10DE0A71, NV_SUB_IDS, "GeForce 305M" },
{ 0x10DE0A72, NV_SUB_IDS, "GeForce 310M" },
{ 0x10DE0A73, NV_SUB_IDS, "GeForce 305M" },
{ 0x10DE0A74, NV_SUB_IDS, "GeForce G210M" },
{ 0x10DE0A75, NV_SUB_IDS, "GeForce 310M" },
{ 0x10DE0A76, NV_SUB_IDS, "ION" },
{ 0x10DE0A78, NV_SUB_IDS, "Quadro FX 380 LP" },
{ 0x10DE0A7A, NV_SUB_IDS, "GeForce 315M" },
{ 0x10DE0A7C, NV_SUB_IDS, "Quadro FX 380M" },
{ 0x10DE0A70,"GeForce 310M" },
{ 0x10DE0A71,"GeForce 305M" },
{ 0x10DE0A72,"GeForce 310M" },
{ 0x10DE0A73,"GeForce 305M" },
{ 0x10DE0A74,"GeForce G210M" },
{ 0x10DE0A75,"GeForce G310M" },
{ 0x10DE0A76,"ION" },
{ 0x10DE0A78,"Quadro FX 380 LP" },
// { 0x10DE0A79,"N12M-NS-S" },
{ 0x10DE0A7A,"GeForce 315M" },
{ 0x10DE0A7B,"GeForce 505" },
{ 0x10DE0A7C,"Quadro FX 380M" },
{ 0x10DE0A7D,"N11M-ES" }, //SUBIDS
{ 0x10DE0A7E,"GT218-INT-S" },
{ 0x10DE0A7F,"GT218-INT-B" },
// 0A80 - 0A8F
// 0A90 - 0A9F
// 0AA0 - 0AAF
// 0C80 - 0C8F
// 0C90 - 0C9F
// 0CA0 - 0CAF
{ 0x10DE0CA0, NV_SUB_IDS, "GeForce GT 330 " },
{ 0x10DE0CA2, NV_SUB_IDS, "GeForce GT 320" },
{ 0x10DE0CA3, NV_SUB_IDS, "GeForce GT 240" },
{ 0x10DE0CA4, NV_SUB_IDS, "GeForce GT 340" },
{ 0x10DE0CA5, NV_SUB_IDS, "GeForce GT 220" },
{ 0x10DE0CA7, NV_SUB_IDS, "GeForce GT 330" },
{ 0x10DE0CA8, NV_SUB_IDS, "GeForce GTS 260M" },
{ 0x10DE0CA9, NV_SUB_IDS, "GeForce GTS 250M" },
{ 0x10DE0CAC, NV_SUB_IDS, "GeForce GT 220" },
{ 0x10DE0CAF, NV_SUB_IDS, "GeForce GT 335M" },
// 0CB0 - 0CBF
{ 0x10DE0CB0, NV_SUB_IDS, "GeForce GTS 350M" },
{ 0x10DE0CB1, NV_SUB_IDS, "GeForce GTS 360M" },
{ 0x10DE0CBC, NV_SUB_IDS, "Quadro FX 1800M" },
{ 0x10DE0CA0,"GeForce GT 330 " },
{ 0x10DE0CA2,"GeForce GT 320" },
{ 0x10DE0CA3,"GeForce GT 240" },
{ 0x10DE0CA4,"GeForce GT 340" },
{ 0x10DE0CA5,"GeForce GT 220" },
{ 0x10DE0CA7,"GeForce GT 330" },
{ 0x10DE0CA8,"GeForce GTS 260M" },
{ 0x10DE0CA9,"GeForce GTS 250M" },
{ 0x10DE0CAC,"GeForce GT 220" },
{ 0x10DE0CAD,"N10E-ES" }, // SUBIDS
{ 0x10DE0CAE,"GT215-INT" },
{ 0x10DE0CAF,"GeForce GT 335M" },
// 0CB0 - 0CBF
{ 0x10DE0CB0,"GeForce GTS 350M" },
{ 0x10DE0CB1,"GeForce GTS 360M" },
{ 0x10DE0CBC,"Quadro FX 1800M" },
// 0CC0 - 0CCF
// 0CD0 - 0CDF
// 0CE0 - 0CEF
// 0DA0 - 0DAF
// 0DB0 - 0DBF
// 0DC0 - 0DCF
{ 0x10DE0DC0, NV_SUB_IDS, "GeForce GT 440" },
{ 0x10DE0DC4, NV_SUB_IDS, "GeForce GTS 450" },
{ 0x10DE0DC5, NV_SUB_IDS, "GeForce GTS 450" },
{ 0x10DE0DC6, NV_SUB_IDS, "GeForce GTS 450" },
{ 0x10DE0DCD, NV_SUB_IDS, "GeForce GT 555M" },
{ 0x10DE0DCE, NV_SUB_IDS, "GeForce GT 555M" },
// 0DD0 - 0DDF
{ 0x10DE0DD1, NV_SUB_IDS, "GeForce GTX 460M" },
{ 0x10DE0DD2, NV_SUB_IDS, "GeForce GT 445M" },
{ 0x10DE0DD3, NV_SUB_IDS, "GeForce GT 435M" },
{ 0x10DE0DD6, NV_SUB_IDS, "GeForce GT 550M" },
{ 0x10DE0DD8,0x10DE084A,"Quadro 2000" },
{ 0x10DE0DD8,0x10DE0914,"Quadro 2000D" },
{ 0x10DE0DDA, NV_SUB_IDS, "Quadro 2000M" },
{ 0x10DE0DC0,"GeForce GT 440" },
// { 0x10DE0DC1,"D12-P1-35" },
// { 0x10DE0DC2,"D12-P1-35" },
{ 0x10DE0DC4,"GeForce GTS 450" },
{ 0x10DE0DC5,"GeForce GTS 450" },
{ 0x10DE0DC6,"GeForce GTS 450" },
// { 0x10DE0DCA,"GF10x" },
// { 0x10DE0DCC,"N12E-GS" },
{ 0x10DE0DCD,"GeForce GT 555M" },
{ 0x10DE0DCE,"GeForce GT 555M" },
// { 0x10DE0DCF,"N12P-GT-B" },
// 0DD0 - 0DDF
// { 0x10DE0DD0,"N11E-GT" },
{ 0x10DE0DD1,"GeForce GTX 460M" },
{ 0x10DE0DD2,"GeForce GT 445M" },
{ 0x10DE0DD3,"GeForce GT 435M" },
{ 0x10DE0DD6,"GeForce GT 550M" },
{ 0x10DE0DD8,"Quadro 2000" },
{ 0x10DE0DDA,"Quadro 2000M" },
{ 0x10DE0DDE,"GF106-ES" },
// { 0x10DE0DDF,"GF106-INT" },
// 0DE0 - 0DEF
{ 0x10DE0DE0, NV_SUB_IDS, "GeForce GT 440" },
{ 0x10DE0DE1, NV_SUB_IDS, "GeForce GT 430" },
{ 0x10DE0DE2, NV_SUB_IDS, "GeForce GT 420" },
{ 0x10DE0DE4, NV_SUB_IDS, "GeForce GT 520" },
{ 0x10DE0DE5, NV_SUB_IDS, "GeForce GT 530" },
{ 0x10DE0DE8, NV_SUB_IDS, "GeForce GT 620M" },
{ 0x10DE0DE9, NV_SUB_IDS, "GeForce GT 630M" },
{ 0x10DE0DEA, NV_SUB_IDS, "GeForce 610M" },
{ 0x10DE0DEB, NV_SUB_IDS, "GeForce GT 555M" },
{ 0x10DE0DEC, NV_SUB_IDS, "GeForce GT 525M" },
{ 0x10DE0DED, NV_SUB_IDS, "GeForce GT 520M" },
{ 0x10DE0DEE, NV_SUB_IDS, "GeForce GT 415M" },
{ 0x10DE0DEF, NV_SUB_IDS, "NVS 5400M" },
{ 0x10DE0DE0,"GeForce GT 440" },
{ 0x10DE0DE1,"GeForce GT 430" },
{ 0x10DE0DE2,"GeForce GT 420" },
{ 0x10DE0DE3,"GeForce GT 635M" },
{ 0x10DE0DE4,"GeForce GT 520" },
{ 0x10DE0DE5,"GeForce GT 530" },
{ 0x10DE0DE8,"GeForce GT 620M" },
{ 0x10DE0DE9,"GeForce GT 630M" },
{ 0x10DE0DEA,"GeForce GT 610M" },
{ 0x10DE0DEB,"GeForce GT 555M" },
{ 0x10DE0DEC,"GeForce GT 525M" },
{ 0x10DE0DED,"GeForce GT 520M" },
{ 0x10DE0DEE,"GeForce GT 415M" },
{ 0x10DE0DEF,"N13P-NS1-A1" },
// 0DF0 - 0DFF
{ 0x10DE0DF0, NV_SUB_IDS, "GeForce GT 425M" },
{ 0x10DE0DF1, NV_SUB_IDS, "GeForce GT 420M" },
{ 0x10DE0DF2, NV_SUB_IDS, "GeForce GT 435M" },
{ 0x10DE0DF3, NV_SUB_IDS, "GeForce GT 420M" },
{ 0x10DE0DF4, NV_SUB_IDS, "GeForce GT 540M" },
{ 0x10DE0DF5, NV_SUB_IDS, "GeForce GT 525M" },
{ 0x10DE0DF6, NV_SUB_IDS, "GeForce GT 550M" },
{ 0x10DE0DF7, NV_SUB_IDS, "GeForce GT 520M" },
{ 0x10DE0DF8, NV_SUB_IDS, "Quadro 600" },
{ 0x10DE0DF9, NV_SUB_IDS, "Quadro 500M" },
{ 0x10DE0DFA, NV_SUB_IDS, "Quadro 1000M" },
{ 0x10DE0DFC, NV_SUB_IDS, "NVS 5200M" },
{ 0x10DE0DF0,"GeForce GT 425M" },
{ 0x10DE0DF1,"GeForce GT 420M" },
{ 0x10DE0DF2,"GeForce GT 435M" },
{ 0x10DE0DF3,"GeForce GT 420M" },
{ 0x10DE0DF4,"GeForce GT 540M" },
{ 0x10DE0DF5,"GeForce GT 525M" },
{ 0x10DE0DF6,"GeForce GT 550M" },
{ 0x10DE0DF7,"GeForce GT 520M" },
{ 0x10DE0DF8,"Quadro 600" },
{ 0x10DE0DF9,"Quadro 500M" },
{ 0x10DE0DFA,"Quadro 1000M" },
{ 0x10DE0DFC,"NVS 5200M" },
{ 0x10DE0DFE,"GF108 ES" },
// { 0x10DE0DFF,"GF108 INT" },
// 0E00 - 0E0F
// 0E10 - 0E1F
// 0E20 - 0E2F
{ 0x10DE0E22, NV_SUB_IDS, "GeForce GTX 460" },
{ 0x10DE0E23, NV_SUB_IDS, "GeForce GTX 460 SE" },
{ 0x10DE0E24, NV_SUB_IDS, "GeForce GTX 460" },
{ 0x10DE0E21,"D12U-25" },
{ 0x10DE0E22,"GeForce GTX 460" },
{ 0x10DE0E23,"GeForce GTX 460 SE" },
{ 0x10DE0E24,"GeForce GTX 460" },
// { 0x10DE0E25,"D12U-50" },
{ 0x10DE0E28,"GeForce GTX 460" },
// 0E30 - 0E3F
{ 0x10DE0E30, NV_SUB_IDS, "GeForce GTX 470M" },
{ 0x10DE0E31, NV_SUB_IDS, "GeForce GTX 485M" },
{ 0x10DE0E3A, NV_SUB_IDS, "Quadro 3000M" },
{ 0x10DE0E3B, NV_SUB_IDS, "Quadro 4000M" },
{ 0x10DE0E30,"GeForce GTX 470M" },
{ 0x10DE0E31,"GeForce GTX 485M" },
// { 0x10DE0E32,"N12E-GT" },
{ 0x10DE0E38,"GF104GL" },
{ 0x10DE0E3A,"Quadro 3000M" },
{ 0x10DE0E3B,"Quadro 4000M" },
// { 0x10DE0E3E,"GF104-ES" },
// { 0x10DE0E3F,"GF104-INT" },
// 0E40 - 0E4F
// 0E50 - 0E5F
// 0E60 - 0E6F
// 0EE0 - 0EEF
// 0EF0 - 0EFF
// 0F00 - 0F0F
{ 0x10DE0F00, NV_SUB_IDS, "GeForce GT 630" },
{ 0x10DE0F01, NV_SUB_IDS, "GeForce GT 620" },
{ 0x10DE0F00,"GeForce GT 630" },
{ 0x10DE0F01,"GeForce GT 620" },
// 0F10 - 0F1F
// 0F20 - 0F2F
// 0F30 - 0F3F
// 0FA0 - 0FAF
// 0FB0 - 0FBF
// 0FC0 - 0FCF
{ 0x10DE0FC0, NV_SUB_IDS, "GeForce GT 640" },
{ 0x10DE0FC1, NV_SUB_IDS, "GeForce GT 640" },
{ 0x10DE0FC2, NV_SUB_IDS, "GeForce GT 630" },
{ 0x10DE0FCE, NV_SUB_IDS, "GeForce GT 640M LE" },
{ 0x10DE0FC0,"GeForce GT 640" },
{ 0x10DE0FC1,"GeForce GT 640" },
{ 0x10DE0FC2,"GeForce GT 630" },
{ 0x10DE0FC6,"GeForce GTX 650" },
// 0FD0 - 0FDF
{ 0x10DE0FD1, NV_SUB_IDS, "GeForce GT 650M" },
{ 0x10DE0FD2, NV_SUB_IDS, "GeForce GT 640M" },
{ 0x10DE0FD3, NV_SUB_IDS, "GeForce GT 640M LE" },
{ 0x10DE0FD4, NV_SUB_IDS, "GeForce GTX 660M" },
{ 0x10DE0FD5, NV_SUB_IDS, "GeForce GT 650M" },
{ 0x10DE0FD8, NV_SUB_IDS, "GeForce GT 640M" },
{ 0x10DE0FD1,"GeForce GT 650M" },
{ 0x10DE0FD2,"GeForce GT 640M" },
{ 0x10DE0FD3,"GeForce GT 640M LE" },
{ 0x10DE0FD4,"GeForce GTX 660M" },
{ 0x10DE0FD5,"GeForce GT 650M" },
{ 0x10DE0FD8,"GeForce GT 640M" },
{ 0x10DE0FD9,"GeForce GT 645M" },
{ 0x10DE0FDB,"GK107-ESP-A1" },
{ 0x10DE0FDF,"GeForce GT 740M" },
// 0FE0 - 0FEF
{ 0x10DE0FE0, NV_SUB_IDS, "GeForce GTX 660M" },
{ 0x10DE0FE0,"GeForce GTX 660M" },
{ 0x10DE0FE1,"GeForce GT 730M" },
{ 0x10DE0FE3,"GeForce GT 745M" },
{ 0x10DE0FE4,"GeForce GT 750M" },
// 0FF0 - 0FFF
{ 0x10DE0FFF, NV_SUB_IDS, "Quadro 410" },
{ 0x10DE0FF2,"VGX K1" },
{ 0x10DE0FF8,"Quadro K500M" },
{ 0x10DE0FF9,"Quadro K2000D" },
{ 0x10DE0FFA,"Quadro K600" },
{ 0x10DE0FFB,"Quadro K2000M" },
{ 0x10DE0FFC,"Quadro K1000M" },
{ 0x10DE0FFD,"NVS 510" },
{ 0x10DE0FFE,"Quadro K2000" },
{ 0x10DE0FFF,"Quadro 410" },
// 1000 - 100F
{ 0x10DE1003,"GeForce GTX Titan LE" },
{ 0x10DE1004,"GeForce GTX 780" },
{ 0x10DE1005,"GeForce GTX Titan" },
// 1010 - 101F
{ 0x10DE101F,"Tesla K20" },
// 1020 - 102F
{ 0x10DE1020,"Tesla K20X" },
{ 0x10DE1021,"Tesla K20Xm" },
{ 0x10DE1022,"Tesla K20c" },
{ 0x10DE1026,"Tesla K20s" },
{ 0x10DE1028,"Tesla K20m" },
// 1030 - 103F
// 1040 - 104F
{ 0x10DE1040, NV_SUB_IDS, "GeForce GT 520" },
{ 0x10DE1042, NV_SUB_IDS, "GeForce 510" },
{ 0x10DE1048, NV_SUB_IDS, "GeForce 605" },
{ 0x10DE1049, NV_SUB_IDS, "GeForce GT 620" },
{ 0x10DE104A, NV_SUB_IDS, "GeForce GT 610" },
{ 0x10DE1040,"GeForce GT 520" },
// { 0x10DE1041,"D13M1-45" },
{ 0x10DE1042,"GeForce 510" },
{ 0x10DE1048,"GeForce 605" },
{ 0x10DE1049,"GeForce GT 620" },
{ 0x10DE104A,"GeForce GT 610" },
{ 0x10DE104B,"GeForce GT 625" },
// 1050 - 105F
{ 0x10DE1050, NV_SUB_IDS, "GeForce GT 520M" },
{ 0x10DE1051, NV_SUB_IDS, "GeForce GT 520MX" },
{ 0x10DE1052, NV_SUB_IDS, "GeForce GT 520M" },
{ 0x10DE1054, NV_SUB_IDS, "GeForce GT 410M" },
{ 0x10DE1055, NV_SUB_IDS, "GeForce 410M" },
{ 0x10DE1056, NV_SUB_IDS, "Quadro NVS 4200M" },
{ 0x10DE1057, NV_SUB_IDS, "Quadro NVS 4200M" },
{ 0x10DE1058, NV_SUB_IDS, "GeForce 610M" },
{ 0x10DE1059, NV_SUB_IDS, "GeForce 610M" },
{ 0x10DE105A, NV_SUB_IDS, "GeForce 610M" },
{ 0x10DE1050,"GeForce GT 520M" },
{ 0x10DE1051,"GeForce GT 520MX" },
{ 0x10DE1052,"GeForce GT 520M" },
{ 0x10DE1054,"GeForce GT 410M" },
{ 0x10DE1055,"GeForce 410M" },
{ 0x10DE1056,"Quadro NVS 4200M" },
{ 0x10DE1057,"Quadro NVS 4200M" },
{ 0x10DE1058,"GeForce GT 610M" },
{ 0x10DE1059,"GeForce 610M" },
{ 0x10DE105A,"GeForce 610M" },
{ 0x10DE105B,"GeForce 705A" },
// 1060 - 106F
// 1070 - 107F
{ 0x10DE107D, NV_SUB_IDS, "NVS 310" },
{ 0x10DE107C,"Quadro NVS 315" },
{ 0x10DE107D,"Quadro NVS 310" },
// { 0x10DE107E,"GF119-INT" },
{ 0x10DE107F,"GF119-ES" },
// 1080 - 108F
{ 0x10DE1080, NV_SUB_IDS, "GeForce GTX 580" },
{ 0x10DE1081, NV_SUB_IDS, "GeForce GTX 570" },
{ 0x10DE1082, NV_SUB_IDS, "GeForce GTX 560 Ti" },
{ 0x10DE1084, NV_SUB_IDS, "GeForce GTX 560" },
{ 0x10DE1086, NV_SUB_IDS, "GeForce GTX 570" },
{ 0x10DE1087, NV_SUB_IDS, "GeForce GTX 560 Ti 448" },
{ 0x10DE1088, NV_SUB_IDS, "GeForce GTX 590" },
{ 0x10DE1089, NV_SUB_IDS, "GeForce GTX 580" },
{ 0x10DE108B, NV_SUB_IDS, "GeForce GTX 590" },
{ 0x10DE1080,"GeForce GTX 580" },
{ 0x10DE1081,"GeForce GTX 570" },
{ 0x10DE1082,"GeForce GTX 560 Ti" },
{ 0x10DE1083,"D13U" },
{ 0x10DE1084,"GeForce GTX 560" },
{ 0x10DE1086,"GeForce GTX 570 HD" },
{ 0x10DE1087,"GeForce GTX 560 Ti-448" },
{ 0x10DE1088,"GeForce GTX 590" },
{ 0x10DE1089,"GeForce GTX 580" },
{ 0x10DE108B,"GeForce GTX 590" },
// { 0x10DE108C,"D13U" },
{ 0x10DE108E,"Tesla C2090" },
// 1090 - 109F
{ 0x10DE1091,0x10DE0887,"Tesla M2090" },
{ 0x10DE1091,0x10DE088E,"Tesla X2090" },
{ 0x10DE1091,0x10DE0891,"Tesla X2090" },
{ 0x10DE1094,0x10DE0888,"nVidia Tesla M2075" },
{ 0x10DE1096, NV_SUB_IDS, "Tesla C2075" },
{ 0x10DE109A, NV_SUB_IDS, "Quadro 5010M" },
{ 0x10DE109B, NV_SUB_IDS, "Quadro 7000" },
{ 0x10DE1091,"Tesla M2090" }, // X2090
{ 0x10DE1094,"Tesla M2075" },
{ 0x10DE1096,"Tesla C2075" },
{ 0x10DE1098,"D13U" },
{ 0x10DE109A,"Quadro 5010M" },
{ 0x10DE109B,"Quadro 7000" },
// 10A0 - 10AF
// 10B0 - 10BF
// 10C0 - 10CF
{ 0x10DE10C0, NV_SUB_IDS, "GeForce 9300 GS" },
{ 0x10DE10C3, NV_SUB_IDS, "GeForce 8400 GS" },
{ 0x10DE10C5, NV_SUB_IDS, "GeForce 405" },
{ 0x10DE10C0,"GeForce 9300 GS" },
{ 0x10DE10C3,"GeForce 8400 GS" },
{ 0x10DE10C4,"ION" },
{ 0x10DE10C5,"GeForce 405" },
// 10D0 - 10DF
{ 0x10DE10D8, NV_SUB_IDS, "NVS 300" },
{ 0x10DE10D8,"Quadro NVS 300" },
// 10E0 - 10EF
// 10F0 - 10FF
// 1100 - 110F
// 1120 - 112F
// 1130 - 113F
// 1140 - 114F
{ 0x10DE1140, NV_SUB_IDS, "GeForce GT 620M / GT 630M" },
{ 0x10DE1140,"GeForce GT 610M" },
{ 0x10DE1141,"GeForce 610M" },
{ 0x10DE1142,"GeForce 620M" },
// { 0x10DE1143,"N13P-GV" },
// { 0x10DE1144,"GF117" },
// { 0x10DE1145,"GF117" },
// { 0x10DE1146,"GF117" },
// { 0x10DE1147,"GF117" },
{ 0x10DE1149,"GF117-ES" },
// { 0x10DE114A,"GF117-INT" },
// { 0x10DE114B,"PCI-GEN3-B" },
// 1150 - 115F
// 1160 - 116F
// 1170 - 117F
// 1180 - 118F
{ 0x10DE1180, NV_SUB_IDS, "GeForce GTX 680" },
{ 0x10DE1188, NV_SUB_IDS, "GeForce GTX 690" },
{ 0x10DE1189, NV_SUB_IDS, "GeForce GTX 670" },
{ 0x10DE1180,"GeForce GTX 680" },
{ 0x10DE1183,"GeForce GTX 660 Ti" },
{ 0x10DE1185,"GeForce GTX 660" },
{ 0x10DE1188,"GeForce GTX 690" },
{ 0x10DE1189,"GeForce GTX 670" },
{ 0x10DE118F,"Tesla K10" },
// 1190 - 119F
{ 0x10DE119F,"GeForce GTX 780M" },
// 11A0 - 11AF
{ 0x10DE11A0,"GeForce GTX 680M" },
{ 0x10DE11A1,"GeForce GTX 670MX" },
{ 0x10DE11A2,"GeForce GTX 675MX" },
{ 0x10DE11A3,"GeForce GTX 680MX" },
{ 0x10DE11A7,"GeForce GTX 675MX" },
// 11B0 - 11BF
{ 0x10DE11BA,"Quadro K5000" },
{ 0x10DE11BC,"Quadro K5000M" },
{ 0x10DE11BD,"Quadro K4000M" },
{ 0x10DE11BE,"Quadro K3000M" },
{ 0x10DE11BF,"VGX K2" },
// 11C0 - 11CF
{ 0x10DE11C0,"GeForce GTX 660" },
{ 0x10DE11C2,"GeForce GTX 650 Ti BOOST" },
{ 0x10DE11C3,"GeForce GTX 650 Ti" },
{ 0x10DE11C4,"GeForce GTX 645" },
{ 0x10DE11C6,"GeForce GTX 650 Ti" },
// 11D0 - 11DF
// 11E0 - 11EF
{ 0x10DE11E0,"GeForce GTX 770M" },
{ 0x10DE11E1,"N14E-GE-B-A1" },
{ 0x10DE11E2,"GeForce GTX 765M" },
{ 0x10DE11E3,"GeForce GTX 760M" },
// 11F0 - 11FF
{ 0x10DE11FA,"Quadro K4000" },
// 1200 - 120F
{ 0x10DE1200, NV_SUB_IDS, "GeForce GTX 560 Ti" },
{ 0x10DE1201, NV_SUB_IDS, "GeForce GTX 560" },
{ 0x10DE1203, NV_SUB_IDS, "GeForce GTX 460 SE v2" },
{ 0x10DE1205, NV_SUB_IDS, "GeForce GTX 460 v2" },
{ 0x10DE1206, NV_SUB_IDS, "GeForce GTX 555" },
{ 0x10DE1207, NV_SUB_IDS, "GeForce GT 645" },
{ 0x10DE1208, NV_SUB_IDS, "GeForce GTX 560 SE" },
// 1210 - 121F
{ 0x10DE1210, NV_SUB_IDS, "GeForce GTX 570M" },
{ 0x10DE1211, NV_SUB_IDS, "GeForce GTX 580M" },
{ 0x10DE1212, NV_SUB_IDS, "GeForce GTX 675M" },
{ 0x10DE1213, NV_SUB_IDS, "GeForce GTX 670M" },
// 1220 - 122F
// 1230 - 123F
// 1240 - 124F
{ 0x10DE1240, NV_SUB_IDS, "GeForce GT 620M" },
{ 0x10DE1241, NV_SUB_IDS, "GeForce GT 545" },
{ 0x10DE1243, NV_SUB_IDS, "GeForce GT 545" },
{ 0x10DE1244, NV_SUB_IDS, "GeForce GTX 550 Ti" },
{ 0x10DE1245, NV_SUB_IDS, "GeForce GTS 450" },
{ 0x10DE1246, NV_SUB_IDS, "GeForce GTX 550M" },
{ 0x10DE1247, NV_SUB_IDS, "GeForce GT 555M" },
{ 0x10DE1247, 0x10DE212A, "GT 635M" },
{ 0x10DE1247, 0x10DE212B, "GT 635M" },
{ 0x10DE1247, 0x10DE212C, "GT 635M" },
{ 0x10DE1248, NV_SUB_IDS, "GeForce GT 555M / GT 635M" },
{ 0x10DE124B, NV_SUB_IDS, "GeForce GT 640" },
{ 0x10DE1249, NV_SUB_IDS, "GeForce GTS 450" },
{ 0x10DE124B, NV_SUB_IDS, "GeForce GT 640" },
{ 0x10DE124D, NV_SUB_IDS, "GeForce GT 555M / GT 635M" },
// 1250 - 125F
{ 0x10DE1251, NV_SUB_IDS, "GeForce GTX 560M" },
{ 0x10DE1200,"GeForce GTX 560 Ti" },
{ 0x10DE1201,"GeForce GTX 560" },
{ 0x10DE1202,"GeForce GTX 560 Ti" },
{ 0x10DE1203,"GeForce GTX 460 SE v2" },
{ 0x10DE1205,"GeForce GTX 460 v2" },
{ 0x10DE1206,"GeForce GTX 555" },
{ 0x10DE1207,"GeForce GT 645" },
{ 0x10DE1208,"GeForce GTX 560 SE" },
{ 0x10DE1210,"GeForce GTX 570M" },
{ 0x10DE1211,"GeForce GTX 580M" },
{ 0x10DE1212,"GeForce GTX 675M" },
{ 0x10DE1213,"GeForce GTX 670M" },
{ 0x10DE1240,"GeForce GT 620M" },
{ 0x10DE1241,"GeForce GT 545" },
{ 0x10DE1243,"GeForce GT 545" },
{ 0x10DE1244,"GeForce GTX 550 Ti" },
{ 0x10DE1245,"GeForce GTS 450" },
{ 0x10DE1246,"GeForce GT 550M" },
{ 0x10DE1247,"GeForce GT 555M" },
{ 0x10DE1248,"GeForce GT 555M" },
{ 0x10DE1249,"GeForce GTS 450" },
{ 0x10DE124B,"GeForce GT 640" },
{ 0x10DE124D,"GeForce GT 555M" },
// { 0x10DE1250,"GF116-INT" },
{ 0x10DE1251,"GeForce GTX 560M" },
// 1260 - 126F
// 1270 - 127F
// 1280 - 128F
{ 0x10DE1280,"GeForce GT 635" },
// 1290 - 129F
{ 0x10DE1290,"GeForce GT 730M" },
{ 0x10DE1291,"GeForce GT 735M" },
{ 0x10DE1292,"GeForce GT 740M" },
{ 0x10DE1293,"GeForce GT 730M" },
{ 0x10DE1294,"GeForce GT 740M" },
// 12A0 - 12AF
//{ 0x10DE12A0,"GeForce GT ???" },
// 12B0 - 12BF
// 12C0 - 12CF
// 12D0 - 12DF
// 12F0 - 12FF
};
static nvidia_card_info_t nvidia_card_exceptions[] = {
/* ========================================================================================
* Layout is device(VendorId + DeviceId), subdev (SubvendorId + SubdeviceId), display name.
* ========================================================================================
*/
/* ------ Specific DeviceID and SubDevID. ------ */
// 0000 - 00FF
{ 0x10DE0040,0x10438178,"Asus V9999 Ultra V62.11" },
{ 0x10DE0040,0x1043817D,"Asus V9999GT V61.21" },
{ 0x10DE0040,0x7FFFFFFF,"GeForce 6800 Ultra [NV40.0]" },
// 0100 - 01FF
{ 0x10DE01D7,0x102801C2,"Dell Quadro NVS 110M" },
{ 0x10DE01D7,0x102801CC,"Dell Quadro NVS 110M" },
{ 0x10DE01D7,0x10DE014B,"nVidia Quadro NVS 110M" },
{ 0x10DE01D8,0x102801CC,"Dell Quadro NVS 120M" },
{ 0x10DE01D8,0x10282003,"Dell Quadro NVS 120M" },
{ 0x10DE01DA,0x10280407,"Dell GeForce 7300 LE" },
// 0200 - 02FF
{ 0x10DE025B,0x10480D23,"ELSA Gloria4 700XGL" },
// 0300 - 03FF
{ 0x10DE0391,0x10DE047A,"Galaxy GeForce 7600 GT" },
{ 0x10DE0391,0x19F120DE,"Galaxy GeForce 7600 GT" },
{ 0x10DE0393,0x00000400,"Apple GeForce 7300GT" },
// 0400 - 04FF
{ 0x10DE0402,0x10DE0439,"Galaxy 8600GT" },
{ 0x10DE0402,0x10DE0505,"Galaxy 8600GT" },
// 0500 - 05FF
{ 0x10DE05E2,0x104382EB,"ASUS ENGTX260" },
{ 0x10DE05E2,0x16822390,"HFX GeForce GTX 260" },
{ 0x10DE05E2,0x17870000,"HIS GeForce GTX 260" },
{ 0x10DE05E6,0x10B00401,"Gainward GeForce GTX 285" },
{ 0x10DE05E7,0x10DE0595,"nVidia Tesla T10 Processor" },
{ 0x10DE05E7,0x10DE066A,"nVidia Tesla C1060" },
{ 0x10DE05E7,0x10DE068F,"nVidia Tesla T10 Processor" },
{ 0x10DE05E7,0x10DE0697,"nVidia Tesla M1060" },
{ 0x10DE05E7,0x10DE0714,"nVidia Tesla M1060" },
{ 0x10DE05E7,0x10DE0743,"nVidia Tesla M1060" },
// 0600 - 06FF
{ 0x10DE0600,0x10DE0000,"Abit GeForce 8800 GTS" },
{ 0x10DE0605,0x145834A2,"Gigabyte GV-N98TOC-512H" },
{ 0x10DE0608,0x15880577,"Solidum GeForce 9800M GTX" },
{ 0x10DE0609,0x11700121,"Inventec GeForce 8800M GTS" },
{ 0x10DE0612,0x104382A6,"Asus GeForce 9800 GTX+" },
{ 0x10DE0612,0x10DE0571,"nVidia GeForce 9800 GTX+" },
{ 0x10DE0612,0x10DE0592,"nVidia GeForce 9800 GTX+" },
{ 0x10DE0612,0x3842C842,"EVGA GeForce 9800 GTX+" },
{ 0x10DE0612,0x3842C875,"EVGA GeForce 9800 GTX+" },
{ 0x10DE0615,0x10480F67,"ELSA GeForce GTS 250" },
{ 0x10DE0615,0x10DE0592,"Palit GeForce GTS 250" },
{ 0x10DE0615,0x10DE0593,"Palit GeForce GTS 250" },
{ 0x10DE0615,0x10DE0652,"Palit GeForce GTS 250" },
{ 0x10DE0615,0x10DE0719,"Palit GeForce GTS 250" },
{ 0x10DE0615,0x10DE079E,"Palit GeForce GTS 250" },
{ 0x10DE0615,0x11503842,"TMC GeForce GTS 250" }, // Thinking Machines Corporation
{ 0x10DE0615,0x11513842,"JAE GeForce GTS 250" },
{ 0x10DE0615,0x11553842,"Pine GeForce GTS 250" },
{ 0x10DE0615,0x11563842,"Periscope GeForce GTS 250" },
{ 0x10DE0618,0x10432028,"Asus GeForce GTX 170M" },
{ 0x10DE0618,0x1043202B,"Asus GeForce GTX 680" },
{ 0x10DE0622,0x104382AC,"Asus EN9600GT Magic" },
{ 0x10DE0640,0x10DE077F,"Inno3D GeForce 9500GT HDMI" },
{ 0x10DE0649,0x1043202D,"Asus GeForce GT 220M" },
{ 0x10DE06CD,0x10DE079F,"Point of View GeForce GTX 470" },
{ 0x10DE06CD,0x14622220,"MSi GeForce GTX 470 Twin Frozr II" },
{ 0x10DE06D1,0x10DE0772,"nVidia Tesla C2070" },
{ 0x10DE06D2,0x10DE088F,"nVidia Tesla X2070" },
{ 0x10DE06DE,0x10DE0773,"nVidia Tesla S2050" },
{ 0x10DE06DE,0x10DE0830,"nVidia Tesla M2070" },
{ 0x10DE06DE,0x10DE0831,"nVidia Tesla M2070" },
{ 0x10DE06DE,0x10DE0832,"nVidia Tesla M2070" },
{ 0x10DE06DE,0x10DE0840,"nVidia Tesla X2070" },
{ 0x10DE06E4,0x10438322,"Asus EN8400GS" },
{ 0x10DE06E4,0x14583475,"GV-NX84S256HE [GeForce 8400 GS]" },
{ 0x10DE06E8,0x10280262,"Dell GeForce 9200M GS" },
{ 0x10DE06E8,0x10280271,"Dell GeForce 9200M GS" },
{ 0x10DE06E8,0x10280272,"Dell GeForce 9200M GS" },
{ 0x10DE06E8,0x103C30F4,"HP GeForce 9200M GS" },
{ 0x10DE06E8,0x103C30F7,"HP GeForce 9200M GS" },
{ 0x10DE06E8,0x103C3603,"HP GeForce 9200M GS" },
// 0700 - 07FF
// 0800 - 08FF
{ 0x10DE0873,0x104319B4,"Asus GeForce G102M" },
// 0900 - 09FF
// 0A00 - 0AFF
{ 0x10DE0A6F,0x12974003,"Shuttle XS 3510MA" },
{ 0x10DE0A70,0x17AA3605,"Lenovo ION" },
{ 0x10DE0A73,0x17AA3607,"Lenovo ION" },
{ 0x10DE0A73,0x17AA3610,"Lenovo ION" },
{ 0x10DE0A75,0x17AA3605,"Lenovo ION" },
// 0B00 - 0BFF
// 0C00 - 0CFF
{ 0x10DE0CA3,0x14628041,"MSi VN240GT-MD1G" },
{ 0x10DE0CA3,0x16423926,"Bitland GeForce GT 230" },
// 0D00 - 0DFF
{ 0x10DE0DD8,0x10DE0914,"nVidia Quadro 2000D" },
{ 0x10DE0DEF,0x17AA21F3,"Lenovo NVS 5400M" },
{ 0x10DE0DEF,0x17AA21F4,"Lenovo NVS 5400M" },
{ 0x10DE0DEF,0x17AA21F5,"Lenovo NVS 5400M" },
{ 0x10DE0DEF,0x17AA21F6,"Lenovo NVS 5400M" },
{ 0x10DE0DEF,0x17AA5005,"Lenovo NVS 5400M" },
// 0E00 - 0EFF
{ 0x10DE0E22,0x1043835D,"Asus ENGTX460" },
{ 0x10DE0E23,0x10B00401,"Gainward GeForce GTX 460" },
// 0F00 - 0FFF
{ 0x10DE0FD2,0x10280595,"Dell GeForce GT 640M LE" },
{ 0x10DE0FD2,0x102805B2,"Dell GeForce GT 640M LE" },
// 1000 - 10FF
{ 0x10DE1080,0x14622561,"MSI N580GTX Lightning" },
{ 0x10DE1080,0x14622563,"MSI N580GTX Lightning" },
{ 0x10DE1086,0x10DE0871,"Inno3D GeForce GTX 570" },
{ 0x10DE1087,0x104383D6,"Asus ENGTX560Ti448 DCII" },
{ 0x10DE1091,0x10DE088E,"nVidia Tesla X2090" },
{ 0x10DE1091,0x10DE0891,"nVidia Tesla X2090" },
// 1100 - 11FF
{ 0x10DE1140,0x1025064A,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x1025064C,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250680,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250692,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250694,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250702,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250719,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250725,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250728,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x1025072B,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x1025072E,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10250732,"Acer GeForce GT 620M" },
{ 0x10DE1140,0x10280565,"Dell GeForce GT 630M" },
{ 0x10DE1140,0x10280568,"Dell GeForce GT 630M" },
{ 0x10DE1140,0x144DC0D5,"Samsung GeForce GT 630M" },
{ 0x10DE1140,0x17AA500D,"Lenovo GeForce GT 620M" },
{ 0x10DE1140,0x1B0A20DD,"Pegatron GeForce GT 620M" },
{ 0x10DE1140,0x1B0A20FD,"Pegatron GeForce GT 620M" },
{ 0x10DE1180,0x00001255,"Afox GTX 680" },
{ 0x10DE1180,0x104383F0,"Asus GTX680-2GD5" },
{ 0x10DE1180,0x104383F6,"Asus GTX 680 Direct CU II" },
{ 0x10DE1180,0x104383F7,"Asus GTX 680 Direct CU II" },
{ 0x10DE1180,0x1458353C,"GV-N680OC-2GD WindForce GTX 680 OC" },
{ 0x10DE1180,0x14622820,"MSi N680GTX TwinFrozer" },
{ 0x10DE1180,0x14622830,"MSi GTX 680 Lightning" },
{ 0x10DE1180,0x14622831,"MSi GTX 680 Lightning LN2" },
{ 0x10DE1180,0x15691180,"Palit GTX 680 JetStream" },
{ 0x10DE1180,0x15691181,"Palit GTX 680 JetStream" },
{ 0x10DE1180,0x15691189,"Palit GTX 680 JetStream" },
{ 0x10DE1180,0x38422682,"EVGA GTX 680 SC" },
{ 0x10DE1180,0x38422683,"EVGA GTX 680 SC" },
{ 0x10DE1189,0x10438405,"Asus GTX 670 Direct CU II TOP" },
{ 0x10DE1189,0x15691189,"Palit GTX 670 JetStream" },
{ 0x10DE1189,0x19DA1255,"Zotac GTX 670 AMP! Edition" },
{ 0x10DE11A1,0x15587102,"Clevo N13E-GR" },
{ 0x10DE11C0,0x10DE0995,"Inno3D GeForce GTX660" },
{ 0x10DE11C6,0x1043842A,"GTX650TI-1GD5" },
// 1200 - 12FF
{ 0x10DE1247,0x10432119,"Asus GeForce GT 670M" },
{ 0x10DE1247,0x10432120,"Asus GeForce GT 670M" },
{ 0x10DE1247,0x1043212A,"Asus GeForce GT 635M" },
{ 0x10DE1247,0x1043212B,"Asus GeForce GT 635M" },
{ 0x10DE1247,0x1043212C,"Asus GeForce GT 635M" },
{ 0x10DE1247,0x152D0930,"Quanta GeForce GT 635M" },
{ 0x10DE1248,0x152D0930,"Quanta GeForce GT 635M" },
{ 0x10DE124D,0x146210CC,"MSi GeForce GT 635M" },
};
static int patch_nvidia_rom(uint8_t *rom)
{
if (!rom || (rom[0] != 0x55 && rom[1] != 0xaa)) {
static char *get_nvidia_model(uint32_t device_id, uint32_t subsys_id)
{
int i;
//int i, j;
int i;
//static char name_model[128];
// First check in the plist, (for e.g this can override any hardcoded devices)
cardList_t * nvcard = FindCardWithIds(device_id, subsys_id);
}
}
for (i = 1; i < (sizeof(nvidia_cards) / sizeof(nvidia_cards[0])); i++) // size of nvidia_cards array for-loop
// Then check the exceptions table
if (subsys_id)
{
if ((nvidia_cards[i].device == device_id) && (nvidia_cards[i].subdev == subsys_id))
{
return nvidia_cards[i].name_model;
break;
}
else if ((nvidia_cards[i].device == device_id) && (nvidia_cards[i].subdev == 0x00000000))
{
return nvidia_cards[i].name_model;
break;
}
for (i = 0; i < (sizeof(nvidia_card_exceptions) / sizeof(nvidia_card_exceptions[0])); i++)
{
if ((nvidia_card_exceptions[i].device == device_id) &&
(nvidia_card_exceptions[i].subdev == subsys_id))
{
return nvidia_card_exceptions[i].name;
}
}
}
return nvidia_cards[0].name_model;
// At last try the generic names
for (i = 1; i < (sizeof(nvidia_card_generic) / sizeof(nvidia_card_generic[0])); i++)
{
if (nvidia_card_generic[i].device == device_id)
{
/*if (subsys_id)
{
for (j = 0; j < (sizeof(nvidia_card_vendors) / sizeof(nvidia_card_vendors[0])); j++)
{
if (nvidia_card_vendors[j].device == (subsys_id & 0xffff0000))
{
sprintf(name_model, "%s %s",
nvidia_card_vendors[j].name, nvidia_card_generic[i].name);
name_model[sizeof(name_model) - 1] = '\0';
return name_model;
}
}
} */
return nvidia_card_generic[i].name;
}
}
return nvidia_card_generic[0].name;
}
static uint32_t load_nvidia_bios_file(const char *filename, uint8_t *buf, int bufsize)
static uint32_t load_nvidia_bios_file(const char *filename, uint8_t **buf)
{
int fd;
int size;
}
size = file_size(fd);
if (size > bufsize)
{
printf("Filesize of %s is bigger than expected! Truncating to 0x%x Bytes!\n",
filename, bufsize);
size = bufsize;
}
size = read(fd, (char *)buf, size);
if(size)
{
*buf = malloc(size);
size = read(fd, (char *)buf, size);
}
close(fd);
return size > 0 ? size : 0;
case 0x0647: // 9600M GT 0647
vram_size = 512*1024*1024; // 512 MB
break;
case 0x0649:// 9600M GT 0649
// 10DE06491043202D 1GB VRAM
if (((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id) == 0x1043202D )
{
vram_size = 1024*1024*1024; // 1 GB
}
break;
case 0x0A65: // GT 210
case 0x0DE0: // GT 440
case 0x0DE1: // GT 430
case 0x0DE2: // GT 420
case 0x0DEC: // GT 525M
case 0x0DEC: // GT 525M 0DEC
vram_size = 1024*1024*1024; // 1 GB
break;
case 0x0DE9: // GT 630M
// 10DE0DE9103C181D 1GB VRAM
if (((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id) == 0x103C181D )
{
vram_size = 1024*1024*1024; // 1 GB
}
break;
case 0x0DF4: // GT 540M
case 0x0DF5: // GT 525M
case 0x0DF5: // GT 525M 0DF5
vram_size = 1024*1024*1024; // 1 GB
break;
case 0x11C6:// GTX650TI 11C6
// 10DE11C61043842A 1GB VRAM
if (((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id) == 0x1043842A )
{
vram_size = 1024*1024*1024; // 1 GB
}
break;
case 0x1251: // GTX 560M
vram_size = 1536*1024*1024; // 1.5 GB
break;
break;
}
if (!vram_size)
if (!vram_size)
{ // Finally, if vram_size still not set do the calculation with our own method
if (nvCardType < NV_ARCH_50)
{
// Amount of VRAM in kilobytes
videoRam = mem_detect(regs, nvCardType, nvda_dev,((nvda_dev->vendor_id << 16) | nvda_dev->device_id),((nvda_dev->subsys_id.subsys.vendor_id << 16) | nvda_dev->subsys_id.subsys.device_id) );
rom = malloc(NVIDIA_ROM_SIZE);
sprintf(nvFilename, "/Extra/%04x_%04x.rom", (uint16_t)nvda_dev->vendor_id,
(uint16_t)nvda_dev->device_id);
if (getBoolForKey(kUseNvidiaROM, &doit, &bootInfo->chameleonConfig) && doit)
{
verbose("Looking for nvidia video bios file %s\n", nvFilename);
nvBiosOveride = load_nvidia_bios_file(nvFilename, rom, NVIDIA_ROM_SIZE);
nvBiosOveride = load_nvidia_bios_file(nvFilename, &rom);
if (nvBiosOveride > 0)
{
else
{
printf("ERROR: unable to open nVidia Video BIOS File %s\n", nvFilename);
free(rom);
return false;
}
}
else
{
rom = malloc(NVIDIA_ROM_SIZE);
// Otherwise read bios from card
nvBiosOveride = 0;
printf("ERROR: Unable to locate nVidia Video BIOS\n");
return false;
}
else
{
DBG("ROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]);
}
}//end PRAM check
else
{
DBG("ROM Address 0x%x Signature 0x%02x%02x\n", nvRom, rom[0], rom[1]);
}
}//end PRAM check
}//end PROM check
}//end load rom from bios
if (rom_pci_header->device_id != nvda_dev->device_id)
{
// Get Model from the OpROM
model = get_nvidia_model(((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), NV_SUB_IDS);
model = get_nvidia_model(((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), 0);
// Get VRAM again
videoRam = mem_detect(regs, nvCardType, nvda_dev,((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), NV_SUB_IDS );
videoRam = mem_detect(regs, nvCardType, nvda_dev, ((rom_pci_header->vendor_id << 16) | rom_pci_header->device_id), 0);
}
else
}
}
}
sprintf(biosVersion, "%s", (nvBiosOveride > 0) ? nvFilename : version_str);
sprintf(kNVCAP, "NVCAP_%04x", nvda_dev->device_id);
branches/Chimera/i386/libsaio/ati.c
55
66
77
8
9
10
11
12
13
8
149
15
1610
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
6311
6412
13
14
15
16
17
18
19
20
6521
6622
6723
......
7935
8036
8137
38
8239
83
40
8441
8542
8643
8744
8845
8946
47
48
49
9050
51
9152
9253
9354
9455
56
57
58
59
60
61
62
9563
9664
9765
98
99
100
101
102
10366
104
105
106
107
108
109
110
111
112
113
114
115
116
67
68
69
70
71
72
73
74
75
76
77
78
79
11780
118
119
120
121
122
81
82
12383
124
125
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
126107
127
128
129
130
131
132
133
134
135
108
136109
137110
138
111
139112
140113
141
142
143
144
145
146
147
114
115
116
117
118
119
148120
149
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
150138
151139
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210140
211141
212142
213143
214144
215145
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
466416
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
605715
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
7521346
753
754
755
756
757
758
759
1347
1348
1349
1350
1351
1352
1353
1354
7601355
761
762
763
764
1356
1357
1358
1359
1360
1361
1362
7651363
7661364
767
1365
1366
7681367
769
770
1368
1369
1370
7711371
1372
7721373
7731374
774
1375
1376
1377
1378
1379
1380
1381
1382
1383
7751384
7761385
777
1386
7781387
7791388
1389
1390
7801391
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
7971418
7981419
799
800
801
802
803
804
805
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
8061440
807
1441
8081442
809
810
811
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
8121453
8131454
814
815
816
817
818
819
820
821
822
823
824
825
826
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
8271481
8281482
1483
1484
8291485
8301486
831
832
1487
8331488
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
1489
8501490
851
852
853
854
1491
8551492
856
1493
8571494
858
859
860
861
862
1495
1496
1497
8631498
864
865
866
1499
1500
1501
1502
8671503
868
869
870
871
872
873
874
1504
1505
8751506
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
1507
1508
1509
8921510
893
894
895
896
897
898
899
1511
9001512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
9011564
9021565
9031566
904
1567
9051568
9061569
9071570
......
9101573
9111574
9121575
913
914
1576
1577
9151578
9161579
9171580
9181581
9191582
9201583
921
922
923
1584
1585
1586
9241587
9251588
9261589
927
928
1590
1591
9291592
930
1593
9311594
932
933
934
1595
1596
1597
9351598
9361599
9371600
......
9411604
9421605
9431606
944
1607
9451608
946
947
948
9491609
9501610
9511611
......
9551615
9561616
9571617
1618
9581619
959
1620
9601621
1622
9611623
962
1624
9631625
9641626
9651627
......
10061668
10071669
10081670
1009
1010
1011
1671
1672
1673
1674
1675
1676
1677
10121678
10131679
10141680
......
10211687
10221688
10231689
1690
10241691
1025
1692
10261693
10271694
10281695
......
10331700
10341701
10351702
1703
10361704
1037
1705
10381706
10391707
10401708
......
10461714
10471715
10481716
1717
10491718
1050
1719
1720
10511721
10521722
10531723
......
10551725
10561726
10571727
1728
10581729
1059
1730
1731
10601732
10611733
10621734
......
10901762
10911763
10921764
1765
10931766
1094
1767
10951768
10961769
10971770
......
11031776
11041777
11051778
1779
11061780
11071781
11081782
......
11131787
11141788
11151789
1790
11161791
1792
11171793
11181794
11191795
11201796
11211797
11221798
1799
11231800
1124
11251801
11261802
11271803
......
11831859
11841860
11851861
1862
11861863
1187
1864
1865
11881866
11891867
11901868
1869
11911870
1871
11921872
11931873
1874
11941875
1876
11951877
11961878
11971879
......
12011883
12021884
12031885
1204
1886
12051887
12061888
1889
12071890
1208
1891
1892
12091893
12101894
1895
12111896
1212
1897
1898
12131899
12141900
12151901
1902
12161903
1217
1904
1905
12181906
1219
1907
12201908
12211909
12221910
......
12251913
12261914
12271915
1228
1916
12291917
1230
1918
12311919
12321920
12331921
12341922
12351923
1236
1924
12371925
12381926
1239
1927
12401928
1929
12411930
12421931
12431932
1933
12441934
1935
12451936
1937
12461938
1939
1940
12471941
12481942
12491943
......
12531947
12541948
12551949
1256
1950
12571951
12581952
1953
12591954
1955
12601956
12611957
1958
12621959
1263
1960
12641961
12651962
1963
12661964
1965
12671966
12681967
12691968
1969
12701970
1971
12711972
12721973
12731974
......
12771978
12781979
12791980
1280
1981
12811982
12821983
12831984
12841985
1285
1986
12861987
12871988
1288
1289
1989
1990
12901991
12911992
12921993
......
13112012
13122013
13132014
2015
13142016
2017
13152018
13162019
13172020
13182021
2022
13192023
1320
2024
2025
13212026
13222027
13232028
......
13412046
13422047
13432048
1344
2049
13452050
13462051
13472052
1348
2053
13492054
1350
1351
1352
1353
2055
2056
2057
2058
13542059
13552060
13562061
......
13982103
13992104
14002105
2106
14012107
2108
14022109
14032110
14042111
14052112
2113
14062114
2115
14072116
14082117
14092118
......
14152124
14162125
14172126
2127
14182128
2129
14192130
14202131
2132
14212133
2134
14222135
14232136
14242137
......
14342147
14352148
14362149
1437
2150
14382151
14392152
2153
14402154
2155
14412156
1442
2157
14432158
14442159
14452160
14462161
14472162
14482163
1449
1450
1451
2164
2165
2166
14522167
2168
14532169
14542170
1455
1456
1457
1458
1459
1460
1461
2171
2172
14622173
1463
1464
2174
2175
14652176
14662177
14672178
14682179
14692180
14702181
1471
2182
14722183
14732184
14742185
......
14852196
14862197
14872198
2199
14882200
2201
14892202
2203
14902204
2205
14912206
14922207
14932208
1494
1495
1496
2209
2210
14972211
14982212
14992213
1500
15012214
1502
1503
1504
2215
2216
15052217
15062218
2219
15072220
15082221
15092222
1510
2223
15112224
1512
1513
1514
1515
15162225
15172226
15182227
......
15222231
15232232
15242233
1525
2234
15262235
15272236
15282237
......
15302239
15312240
15322241
1533
1534
2242
2243
15352244
15362245
15372246
15382247
2248
15392249
1540
2250
2251
15412252
15422253
1543
1544
1545
1546
2254
2255
15472256
15482257
15492258
......
15602269
15612270
15622271
1563
2272
15642273
2274
15652275
1566
2276
2277
15672278
15682279
15692280
2281
15702282
1571
2283
15722284
15732285
15742286
2287
15752288
2289
15762290
15772291
15782292
1579
2293
15802294
1581
2295
15822296
15832297
15842298
15852299
15862300
15872301
1588
2302
15892303
15902304
15912305
......
15952309
15962310
15972311
1598
2312
2313
15992314
16002315
1601
2316
16022317
1603
1604
1605
2318
2319
2320
16062321
16072322
*
*/
#include "boot.h"
#include "bootstruct.h"
#include "pci.h"
#include "platform.h"
#include "device_inject.h"
#include "ati_reg.h"
#include "ati.h"
#define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x6e
#define Reg32(reg)(*(volatile uint32_t *)(card->mmio + reg))
#define RegRead32(reg)(Reg32(reg))
#define RegWrite32(reg, value)(Reg32(reg) = value)
typedef enum {
kNul,
kStr,
kPtr,
kCst
} type_t;
typedef enum {
CHIP_FAMILY_UNKNOW,
/* IGP */
CHIP_FAMILY_RS600,
CHIP_FAMILY_RS690,
CHIP_FAMILY_RS740,
CHIP_FAMILY_RS780,
CHIP_FAMILY_RS880,
/* R600 */
CHIP_FAMILY_R600,
CHIP_FAMILY_RV610,
CHIP_FAMILY_RV620,
CHIP_FAMILY_RV630,
CHIP_FAMILY_RV635,
CHIP_FAMILY_RV670,
/* R700 */
CHIP_FAMILY_RV710,
CHIP_FAMILY_RV730,
CHIP_FAMILY_RV740,
CHIP_FAMILY_RV770,
CHIP_FAMILY_RV790,
/* Evergreen */
CHIP_FAMILY_CEDAR,
CHIP_FAMILY_CYPRESS,
CHIP_FAMILY_HEMLOCK,
CHIP_FAMILY_JUNIPER,
CHIP_FAMILY_REDWOOD,
/* Northern Islands */
CHIP_FAMILY_BARTS,
CHIP_FAMILY_CAICOS,
CHIP_FAMILY_CAYMAN,
CHIP_FAMILY_TURKS,
CHIP_FAMILY_LAST
} chip_family_t;
static const char *chip_family_name[] = {
"UNKNOW",
"R420",
"RV410",
"RV515",
"R520",
"RV530",
"RV560",
"RV570",
"R580",
/* IGP */
"RS600",
"RS690",
"RV710",
"RV730",
"RV740",
"RV772",
"RV770",
"RV790",
"RV790",
/* Evergreen */
"Cedar",
"Cypress",
"Hemlock",
"Juniper",
"Redwood",
"Broadway",
//"Madison",
//"Park",
/* Northern Islands */
//"Antilles",
"Barts",
"Caicos",
"Cayman",
"Turks",
/* Southern Islands */
"Tahiti",
"Pitcairn",
//"CapeVerde",
//"Thames",
//"Lombok",
//"NewZealand",
""
};
typedef struct {
const char*name;
uint8_tports;
} card_config_t;
static card_config_t card_configs[] = {
{NULL,0},
{"Alopias",2},
{"Alouatta",4},
{"Baboon",3},
{"Cardinal",2},
{"Caretta",1},
{"Colobus",2},
{"Douc",2},
{"Eulemur",3},
{"Flicker",3},
{"Galago",2},
{"Gliff",3},
{"Hoolock",3},
{NULL,0},
/* OLDController */
{"Wormy",2},
{"Alopias",2},
{"Caretta",1},
{"Kakapo",3},
{"Kipunji",4},
{"Peregrine",2},
{"Raven",3},
{"Sphyrna",1},
/* AMD2400Controller */
{"Iago",2},
/* AMD2600Controller */
{"Hypoprion",2},
{"Iago",2},
{"Kakapo",3},
{"Kipunji",4},
{"Lamna",2},
{"Langur",3},
{"Lamna",2},
/* AMD3800Controller */
{"Megalodon",3},
{"Motmot",2},
{"Nomascus",5},
{"Triakis",2},
/* AMD4600Controller */
{"Flicker",3},
{"Gliff",3},
{"Shrike",3},
/* AMD4800Controller */
{"Cardinal",2},
{"Motmot",2},
{"Quail",3},
/* AMD5000Controller */
{"Douc",2},
{"Langur",3},
{"Uakari",4},
{"Zonalis",6},
{"Alouatta",4},
{"Hoolock",3},
{"Vervet",4},
{"Baboon",3},
{"Eulemur",3},
{"Galago",2},
{"Colobus",2},
{"Mangabey",2},
{"Nomascus",4},
{"Orangutan",2},
{"Peregrine",2},
{"Quail",3},
{"Raven",3},
{"Shrike",3},
{"Sphyrna",1},
{"Triakis",2},
{"Uakari",4},
{"Vervet",4},
{"Zonalis",6},
/* AMD6000Controller */
{"Pithecia",3},
{"Bulrushes",6},
{"Cattail",4},
{"Cattail",4},
{"Hydrilla",5},
{"Duckweed",4},
{"Fanwort",4},
{"Elodea",5},
{"Kudzu",2},
{"Gibba",5},
{"Lotus",3},
{"Ipomoea",3},
{"Mangabey",2},
{"Fanwort",4},
{"Elodea",5},
{"Kudzu",2},
{"Gibba",5},
{"Lotus",3},
{"Ipomoea",3},
{"Muskgrass",4},
{"Juncus",4}
{"Juncus",4},
{"Osmunda", 4},
{"Pondweed", 3},
{"Spikerush", 4},
{"Typha", 5},
/* AMD7000Controller */
{"Aji", 4},
{"Buri", 4},
{"Chutoro", 5},
{"Dashimaki", 4},
{"Ebi", 5},
{"Gari", 5},
{"Futomaki", 4},
{"Hamachi", 4},
{"OPM", 6},
{"Ikura", 6},
{"IkuraS", 1}
};
typedef enum {
kNull,
kAlopias,
kAlouatta,
kBaboon,
kCardinal,
kCaretta,
kColobus,
kDouc,
kEulemur,
kFlicker,
kGalago,
kGliff,
kHoolock,
kHypoprion,
kIago,
kKakapo,
kKipunji,
kLamna,
kLangur,
kMegalodon,
kMotmot,
kNomascus,
kOrangutan,
kPeregrine,
kQuail,
kRaven,
kShrike,
kSphyrna,
kTriakis,
kUakari,
kVervet,
kZonalis,
kPithecia,
kBulrushes,
kCattail,
kHydrilla,
kDuckweed,
kFanwort,
kElodea,
kKudzu,
kGibba,
kLotus,
kIpomoea,
kMangabey,
kMuskgrass,
kJuncus,
kCfgEnd
} config_name_t;
typedef struct {
uint16_tdevice_id;
uint32_tsubsys_id;
chip_family_tchip_family;
const char*model_name;
config_name_tcfg_name;
} radeon_card_info_t;
static radeon_card_info_t radeon_cards[] = {
// Earlier cards are not supported
//
// Layout is device_id, subsys_id (subsystem id plus vendor id), chip_family_name, display name, frame buffer
// Cards are grouped by device id and vendor id then sorted by subsystem id to make it easier to add new cards
//
{ 0x9400,0x25521002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT",kNull},
{ 0x9400,0x30001002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 PRO",kNull},
{ 0x9440,0x24401682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x24411682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x24441682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x24451682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x0851174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x114A174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kCardinal},
{ 0x9441,0x24401682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2",kMotmot},
{ 0x9442,0x080110B0, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x9442,0x24701682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x9442,0x24711682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x9442,0xE104174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001043, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001458, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001462, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001545, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x3000174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944A,0x300017AF, CHIP_FAMILY_RV770,"ATI Radeon HD 4850",kMotmot},
{ 0x944C,0x24801682, CHIP_FAMILY_RV770,"ATI Radeon HD 4830",kMotmot},
{ 0x944C,0x24811682, CHIP_FAMILY_RV770,"ATI Radeon HD 4830",kMotmot},
{ 0x944E,0x3260174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810",kMotmot},
{ 0x944E,0x3261174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810",kMotmot},
{ 0x944E,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4730",kMotmot},
{ 0x944E,0x30101787, CHIP_FAMILY_RV770,"ATI Radeon HD 4810",kMotmot},
{ 0x944E,0x31001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4820",kMotmot},
{ 0x9480,0x3628103C, CHIP_FAMILY_RV730,"ATI Mobility Radeon HD 4650",kGliff},
{ 0x9480,0x9035104D, CHIP_FAMILY_RV730,"ATI Mobility Radeon HD 4650",kGliff},
{ 0x9490,0x4710174B, CHIP_FAMILY_RV730,"ATI Radeon HD 4710",kNull},
{ 0x9490,0x20031787, CHIP_FAMILY_RV730,"ATI Radeon HD 4670",kFlicker},
{ 0x9490,0x30501787, CHIP_FAMILY_RV730,"ATI Radeon HD 4710",kNull},
{ 0x9490,0x300017AF, CHIP_FAMILY_RV730,"ATI Radeon HD 4710",kNull},
{ 0x9498,0x21CF1458, CHIP_FAMILY_RV730,"ATI Radeon HD 4600",kNull},
{ 0x9498,0x24511682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650",kNull},
{ 0x9498,0x24521682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650",kNull},
{ 0x9498,0x24541682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650",kNull},
{ 0x9498,0x29331682, CHIP_FAMILY_RV730,"ATI Radeon HD 4670",kNull},
{ 0x9498,0x29341682, CHIP_FAMILY_RV730,"ATI Radeon HD 4670",kNull},
{ 0x9498,0x30501787, CHIP_FAMILY_RV730,"ATI Radeon HD 4700",kNull},
{ 0x9498,0x31001787, CHIP_FAMILY_RV730,"ATI Radeon HD 4720",kNull},
{ 0x94B3,0x0D001002, CHIP_FAMILY_RV740,"ATI Radeon HD 4770",kFlicker},
{ 0x94B3,0x29001682, CHIP_FAMILY_RV740,"ATI Radeon HD 4770",kFlicker},
{ 0x94B3,0x1170174B, CHIP_FAMILY_RV740,"ATI Radeon HD 4770",kFlicker},
{ 0x94C1,0x0D021002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C1,0x10021002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 Pro",kNull},
{ 0x94C1,0x0D021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C1,0x21741458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C1,0x10331462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C1,0x10401462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C1,0x11101462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT",kNull},
{ 0x94C3,0x03421002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x30001025, CHIP_FAMILY_RV610,"ATI Radeon HD 2350",kNull},
{ 0x94C3,0x03021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x04021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x216A1458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x21721458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x30001458, CHIP_FAMILY_RV610,"ATI Radeon HD 3410",kNull},
{ 0x94C3,0x10321462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x10411462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400",kNull},
{ 0x94C3,0x11041462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400",kNull},
{ 0x94C3,0x11051462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400",kNull},
{ 0x94C3,0x30001462, CHIP_FAMILY_RV610,"ATI Radeon HD 3410",kNull},
{ 0x94C3,0x2247148C, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 LE",kNull},
{ 0x94C3,0x3000148C, CHIP_FAMILY_RV610,"ATI Radeon HD 2350",kNull},
{ 0x94C3,0x30001642, CHIP_FAMILY_RV610,"ATI Radeon HD 3410",kNull},
{ 0x94C3,0x37161642, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x3000174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2350",kNull},
{ 0x94C3,0xE370174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0xE400174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x94C3,0x203817AF, CHIP_FAMILY_RV610,"ATI Radeon HD 2400",kNull},
{ 0x94C3,0x22471787, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 LE",kNull},
{ 0x94C3,0x30001787, CHIP_FAMILY_RV610,"ATI Radeon HD 2350",kNull},
{ 0x94C3,0x01011A93, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO",kNull},
{ 0x9501,0x25421002, CHIP_FAMILY_RV670,"ATI Radeon HD 3870",kNull},
{ 0x9501,0x30001002, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9501,0x3000174B, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9501,0x4750174B, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9501,0x30001787, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9505,0x25421002, CHIP_FAMILY_RV670,"ATI Radeon HD 3850",kNull},
{ 0x9505,0x30001002, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9505,0x30011043, CHIP_FAMILY_RV670,"ATI Radeon HD 4730",kNull},
{ 0x9505,0x3000148C, CHIP_FAMILY_RV670,"ATI Radeon HD 3850",kNull},
{ 0x9505,0x3001148C, CHIP_FAMILY_RV670,"ATI Radeon HD 4730",kNull},
{ 0x9505,0x3002148C, CHIP_FAMILY_RV670,"ATI Radeon HD 4730",kNull},
{ 0x9505,0x3003148C, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9505,0x3004148C, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9505,0x3000174B, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9505,0x3001174B, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9505,0x3010174B, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9505,0x4730174B, CHIP_FAMILY_RV670,"ATI Radeon HD 4730",kNull},
{ 0x9505,0x30001787, CHIP_FAMILY_RV670,"ATI Radeon HD 3690",kNull},
{ 0x9505,0x301017AF, CHIP_FAMILY_RV670,"ATI Radeon HD 4750",kNull},
{ 0x9540,0x4590174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4590",kNull},
{ 0x9540,0x30501787, CHIP_FAMILY_RV710,"ATI Radeon HD 4590",kNull},
{ 0x954F,0x16131462, CHIP_FAMILY_RV710,"ATI Radeon HD 4550",kNull},
{ 0x954F,0x29201682, CHIP_FAMILY_RV710,"ATI Radeon HD 4550",kNull},
{ 0x954F,0x29211682, CHIP_FAMILY_RV710,"ATI Radeon HD 4550",kNull},
{ 0x954F,0x30901682, CHIP_FAMILY_RV710,"ATI Radeon HD 4570",kNull},
{ 0x954F,0x3000174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4520",kNull},
{ 0x954F,0x4450174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4450",kNull},
{ 0x954F,0x4570174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4570",kNull},
{ 0x954F,0xE990174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4350",kNull},
{ 0x954F,0x20081787, CHIP_FAMILY_RV710,"ATI Radeon HD 4350",kNull},
{ 0x954F,0x30501787, CHIP_FAMILY_RV710,"ATI Radeon HD 4450",kNull},
{ 0x954F,0x31001787, CHIP_FAMILY_RV710,"ATI Radeon HD 4520",kNull},
{ 0x954F,0x301017AF, CHIP_FAMILY_RV710,"ATI Radeon HD 4450",kNull},
{ 0x9552,0x04341028, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4330",kShrike},
{ 0x9552,0x308B103C, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4330",kShrike},
{ 0x9552,0x3000148C, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500",kNull},
{ 0x9552,0x3000174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500",kNull},
{ 0x9552,0x30001787, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500",kNull},
{ 0x9552,0x300017AF, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500",kNull},
{ 0x9553,0x18751043, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4570",kShrike},
{ 0x9553,0x1B321043, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4570",kShrike},
{ 0x9581,0x95811002, CHIP_FAMILY_RV630,"ATI Radeon HD 3600",kNull},
{ 0x9581,0x3000148C, CHIP_FAMILY_RV630,"ATI Radeon HD 3600",kNull},
{ 0x9583,0x3000148C, CHIP_FAMILY_RV630,"ATI Radeon HD 3600",kNull},
{ 0x9588,0x01021A93, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 XT",kNull},
{ 0x9589,0x30001462, CHIP_FAMILY_RV630,"ATI Radeon HD 3610",kNull},
{ 0x9589,0x0E41174B, CHIP_FAMILY_RV630,"ATI Radeon HD 3610",kNull},
{ 0x9589,0x30001787, CHIP_FAMILY_RV630,"ATI Radeon HD 3610",kNull},
{ 0x9589,0x01001A93, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 PRO",kNull},
{ 0x9591,0x2303148C, CHIP_FAMILY_RV635,"ATI Radeon HD 3600",kNull},
{ 0x9598,0xB3831002, CHIP_FAMILY_RV635,"ATI All-in-Wonder HD",kNull},
{ 0x9598,0x30001043, CHIP_FAMILY_RV635,"ATI Radeon HD 3730",kNull},
{ 0x9598,0x30011043, CHIP_FAMILY_RV635,"ATI Radeon HD 4570",kNull},
{ 0x9598,0x3000148C, CHIP_FAMILY_RV635,"ATI Radeon HD 3730",kNull},
{ 0x9598,0x3001148C, CHIP_FAMILY_RV635,"ATI Radeon HD 4580",kNull},
{ 0x9598,0x3031148C, CHIP_FAMILY_RV635,"ATI Radeon HD 4570",kNull},
{ 0x9598,0x30001545, CHIP_FAMILY_RV635,"ATI Radeon HD 2600 XT",kNull},
{ 0x9598,0x30011545, CHIP_FAMILY_RV635,"ATI Radeon HD 2600 Pro",kNull},
{ 0x9598,0x3000174B, CHIP_FAMILY_RV635,"ATI Radeon HD 3730",kNull},
{ 0x9598,0x3001174B, CHIP_FAMILY_RV635,"ATI Radeon HD 3750",kNull},
{ 0x9598,0x4570174B, CHIP_FAMILY_RV635,"ATI Radeon HD 4570",kNull},
{ 0x9598,0x4580174B, CHIP_FAMILY_RV635,"ATI Radeon HD 4580",kNull},
{ 0x9598,0x4610174B, CHIP_FAMILY_RV635,"ATI Radeon HD 4610",kNull},
{ 0x9598,0x300117AF, CHIP_FAMILY_RV635,"ATI Radeon HD 3750",kNull},
{ 0x9598,0x301017AF, CHIP_FAMILY_RV635,"ATI Radeon HD 4570",kNull},
{ 0x9598,0x301117AF, CHIP_FAMILY_RV635,"ATI Radeon HD 4580",kNull},
{ 0x9598,0x30501787, CHIP_FAMILY_RV635,"ATI Radeon HD 4610",kNull},
{ 0x95C0,0x3000148C, CHIP_FAMILY_RV620,"ATI Radeon HD 3550",kNull},
{ 0x95C0,0xE3901745, CHIP_FAMILY_RV620,"ATI Radeon HD 3550",kNull},
{ 0x95C0,0x3000174B, CHIP_FAMILY_RV620,"ATI Radeon HD 3550",kNull},
{ 0x95C0,0x3002174B, CHIP_FAMILY_RV620,"ATI Radeon HD 3570",kNull},
{ 0x95C0,0x3020174B, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x3000148C, CHIP_FAMILY_RV620,"ATI Radeon HD 3450",kNull},
{ 0x95C5,0x3001148C, CHIP_FAMILY_RV620,"ATI Radeon HD 3550",kNull},
{ 0x95C5,0x3002148C, CHIP_FAMILY_RV620,"ATI Radeon HD 4230",kNull},
{ 0x95C5,0x3003148C, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x3032148C, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x3033148C, CHIP_FAMILY_RV620,"ATI Radeon HD 4230",kNull},
{ 0x95C5,0x3010174B, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x4250174B, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x30501787, CHIP_FAMILY_RV620,"ATI Radeon HD 4250",kNull},
{ 0x95C5,0x301017AF, CHIP_FAMILY_RV620,"ATI Radeon HD 4230",kNull},
{ 0x95C5,0x01041A93, CHIP_FAMILY_RV620,"ATI Radeon HD 3450",kNull},
{ 0x95C5,0x01051A93, CHIP_FAMILY_RV620,"ATI Radeon HD 3450",kNull},
//
{ 0x9400,0x01611043, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT", kNull},
{ 0x9400,0x021E1043, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT", kNull},
{ 0x9400,0x25521002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT", kNull},
{ 0x9400,0x30001002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 PRO", kNull},
{ 0x9400,0x31421002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT", kNull},
{ 0x9440,0x05021002, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9440,0x0851174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9440,0x114A174B, CHIP_FAMILY_RV770,"ATI Radeon HD4870 Vapor-X", kCardinal},
{ 0x9440,0x24401682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9440,0x24411682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9440,0x24441682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9440,0x24451682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870", kMotmot},
{ 0x9441,0x02601043, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2", kMotmot},
{ 0x9441,0x02841043, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2", kMotmot},
{ 0x9441,0x24401682, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2", kMotmot},
{ 0x9441,0x25421002, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2", kMotmot},
{ 0x9442,0x05021002, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x9442,0x080110B0, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x9442,0x24701682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x9442,0x24711682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x9442,0xE104174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x9442,0xE810174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x02A21028, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001043, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001458, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001462, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001545, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001682, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x3000174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944A,0x300017AF, CHIP_FAMILY_RV770,"ATI Radeon HD 4850", kMotmot},
{ 0x944C,0x05021002, CHIP_FAMILY_RV770,"ATI Radeon HD 4830", kMotmot},
{ 0x944C,0x20031787, CHIP_FAMILY_RV770,"ATI Radeon HD 4830", kMotmot},
{ 0x944C,0x24801682, CHIP_FAMILY_RV770,"ATI Radeon HD 4830", kMotmot},
{ 0x944C,0x24811682, CHIP_FAMILY_RV770,"ATI Radeon HD 4830", kMotmot},
{ 0x944E,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4730", kMotmot},
{ 0x944E,0x30101787, CHIP_FAMILY_RV770,"ATI Radeon HD 4810", kMotmot},
{ 0x944E,0x31001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4820", kMotmot},
{ 0x944E,0x3260174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810", kMotmot},
{ 0x944E,0x3261174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810", kMotmot},
{ 0x9460,0x27021682, CHIP_FAMILY_RV770,"ATI Radeon HD 4890", kMotmot},
{ 0x9460,0xE115174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4890", kMotmot},
{ 0x9460,0xE118174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4890", kMotmot},
{ 0x9480,0x01211025, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kGliff},
{ 0x9480,0x03111025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x03121025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x031C1025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x031D1025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x036C1025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x036D1025, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0x3628103C, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kGliff},
{ 0x9480,0x9035104D, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kGliff},
{ 0x9480,0xFD001179, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kPeregrine},
{ 0x9480,0xFDD01179, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kPeregrine},
{ 0x9480,0xFD121179, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kPeregrine},
{ 0x9480,0xFD501179, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M", kPeregrine},
{ 0x9480,0xFF001179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFF151179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFF221179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFF501179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFF801179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFF821179, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9480,0xFFA01179, CHIP_FAMILY_RV730,"ATI Radeon HD 4600M", kPeregrine},
{ 0x9480,0xFFA21179, CHIP_FAMILY_RV730,"ATI Radeon HD 5165M", kPeregrine},
{ 0x9490,0x20031787, CHIP_FAMILY_RV730,"ATI Radeon HD 4670", kFlicker},
{ 0x9490,0x25421028, CHIP_FAMILY_RV730,"ATI Radeon HD 4670", kFlicker},
{ 0x9490,0x30501787, CHIP_FAMILY_RV730,"ATI Radeon HD 4710", kPeregrine},
{ 0x9490,0x300017AF, CHIP_FAMILY_RV730,"ATI Radeon HD 4710", kPeregrine},
{ 0x9490,0x4710174B, CHIP_FAMILY_RV730,"ATI Radeon HD 4710", kPeregrine},
{ 0x9498,0x10001043, CHIP_FAMILY_RV730,"ATI Radeon HD 4670", kPeregrine},
{ 0x9498,0x20091787, CHIP_FAMILY_RV730,"ATI Radeon HD 4650", kPeregrine},
{ 0x9498,0x21CF1458, CHIP_FAMILY_RV730,"ATI Radeon HD 4600", kPeregrine},
{ 0x9498,0x24511682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650", kPeregrine},
{ 0x9498,0x24521682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650", kPeregrine},
{ 0x9498,0x24541682, CHIP_FAMILY_RV730,"ATI Radeon HD 4650", kPeregrine},
{ 0x9498,0x29331682, CHIP_FAMILY_RV730,"ATI Radeon HD 4670", kPeregrine},
{ 0x9498,0x29341682, CHIP_FAMILY_RV730,"ATI Radeon HD 4670", kPeregrine},
{ 0x9498,0x30501787, CHIP_FAMILY_RV730,"ATI Radeon HD 4700", kPeregrine},
{ 0x9498,0x31001787, CHIP_FAMILY_RV730,"ATI Radeon HD 4720", kPeregrine},
{ 0x94B3,0x0D001002, CHIP_FAMILY_RV740,"ATI Radeon HD 4770", kFlicker},
{ 0x94B3,0x1170174B, CHIP_FAMILY_RV740,"ATI Radeon HD 4770", kFlicker},
{ 0x94B3,0x29001682, CHIP_FAMILY_RV740,"ATI Radeon HD 4770", kFlicker},
{ 0x94C1,0x0D021002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C1,0x10021002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 Pro", kNull},
{ 0x94C1,0x0D021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C1,0x21741458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C1,0x10331462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C1,0x10401462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C1,0x11101462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 XT", kNull},
{ 0x94C3,0x03421002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x01011A93, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x03021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x03421002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x04021028, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x10321462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x10411462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400", kNull},
{ 0x94C3,0x11041462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400", kNull},
{ 0x94C3,0x11051462, CHIP_FAMILY_RV610,"ATI Radeon HD 2400", kNull},
{ 0x94C3,0x203817AF, CHIP_FAMILY_RV610,"ATI Radeon HD 2400", kNull},
{ 0x94C3,0x216A1458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x21721458, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x2247148C, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 LE", kNull},
{ 0x94C3,0x22471787, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 LE", kNull},
{ 0x94C3,0x30001025, CHIP_FAMILY_RV610,"ATI Radeon HD 2350", kNull},
{ 0x94C3,0x30001458, CHIP_FAMILY_RV610,"ATI Radeon HD 3410", kNull},
{ 0x94C3,0x30001462, CHIP_FAMILY_RV610,"ATI Radeon HD 3410", kNull},
{ 0x94C3,0x3000148C, CHIP_FAMILY_RV610,"ATI Radeon HD 2350", kNull},
{ 0x94C3,0x30001642, CHIP_FAMILY_RV610,"ATI Radeon HD 3410", kNull},
{ 0x94C3,0x3000174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2350", kNull},
{ 0x94C3,0x30001787, CHIP_FAMILY_RV610,"ATI Radeon HD 2350", kNull},
{ 0x94C3,0x37161642, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0x94C31002, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0xE370174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x94C3,0xE400174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 PRO", kNull},
{ 0x9501,0x25421002, CHIP_FAMILY_RV670,"ATI Radeon HD 3870", kNull},
{ 0x9501,0x30001002, CHIP_FAMILY_RV670,"ATI Radeon HD 3690", kNull},
{ 0x9501,0x3000174B, CHIP_FAMILY_RV670,"ATI Radeon HD 3690", kNull},
{ 0x9501,0x30001787, CHIP_FAMILY_RV670,"ATI Radeon HD 3690", kNull},
{ 0x9501,0x4750174B, CHIP_FAMILY_RV670,"ATI Radeon HD 4750", kNull},
{ 0x9505,0x024A1043, CHIP_FAMILY_RV670,"ATI Radeon HD 3850", kNull},
{ 0x9505,0x25421002, CHIP_FAMILY_RV670,"ATI Radeon HD 3850", kNull},
{ 0x9505,0x30001002, CHIP_FAMILY_RV630,"ATI Radeon HD 3690", kNull},
{ 0x9505,0x3000148C, CHIP_FAMILY_RV670,"ATI Radeon HD 3850", kNull},
{ 0x9505,