Chameleon

Chameleon Commit Details

Date:2012-09-11 15:34:39 (11 years 6 months ago)
Author:armel cadet-petit
Commit:2057
Parents: 2056
Message:Security fixes
Changes:
M/branches/cparm/i386/libsaio/xml.c
M/branches/cparm/i386/modules/SMBiosGetters/mysmbios.c
M/branches/cparm/xcode3_sym.zip
M/branches/cparm/i386/modules/GUI/GUI_module.c
M/branches/cparm/i386/modules/Memory/spd.c
M/branches/cparm/i386/modules/GUI/graphic_utils.c
M/branches/cparm/i386/modules/GUI/picopng.c
M/branches/cparm/i386/modules/GraphicsEnabler/nvidia.c
M/branches/cparm/i386/modules/SMBiosPatcher/smbios_patcher.c
M/branches/cparm/CHANGES
M/branches/cparm/i386/modules/GraphicsEnabler/ati.c

File differences

branches/cparm/CHANGES
1
2
3
14
25
36
- Security fixes
- Updated smbus(spd.c) and radeon(ati.c) card list (taken from the last cosmo1t's update)
- Added two boot options for High resolution display and reboot on kernel panic
- Added fake_crt.c to fix a linker issue ... but it still dont work.
branches/cparm/i386/libsaio/xml.c
186186
187187
188188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
189203
190204
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
205
206206
207207
208208
......
220220
221221
222222
223
223
224224
225225
226226
}
/* Function for basic XML character entities parsing */
typedef const struct XMLEntity {
const char* name;
size_t nameLen;
char value;
} XMLEntity;
/* This is ugly, but better than specifying the lengths by hand */
#define _e(str,c) {str,sizeof(str)-1,c}
const XMLEntity ents[] = {
_e("quot;",'"'), _e("apos;",'\''),
_e("lt;", '<'), _e("gt;", '>'),
_e("amp;", '&')
};
char*
XMLDecode(const char* src)
{
typedef const struct XMLEntity {
const char* name;
size_t nameLen;
char value;
} XMLEntity;
/* This is ugly, but better than specifying the lengths by hand */
#define _e(str,c) {str,sizeof(str)-1,c}
const XMLEntity ents[] = {
_e("quot;",'"'), _e("apos;",'\''),
_e("lt;", '<'), _e("gt;", '>'),
_e("amp;", '&')
};
{
size_t len;
const char *s;
char *out, *o;
int i;
s++;
for ( i = 0; (unsigned)i < sizeof(ents); i++)
for ( i = 0; (unsigned)i < (sizeof(ents)/sizeof(ents[0])); i++)
{
if ( strncmp(s, ents[i].name, ents[i].nameLen) == 0 )
{
branches/cparm/i386/modules/GUI/picopng.c
5858
5959
6060
61
62
63
64
65
66
67
6861
6962
7063
vector8_t *vector8_copy(vector8_t *p);
png_alloc_node_t *png_alloc_find_node(void *addr)
{
png_alloc_node_t *node;
branches/cparm/i386/modules/GUI/GUI_module.c
9494
9595
9696
97
98
99
100
97
98
99
100
101101
102102
103103
......
509509
510510
511511
512
512
513513
514514
515515
......
673673
674674
675675
676
676
677677
678678
679679
......
696696
697697
698698
699
699
700700
701701
702702
......
11171117
11181118
11191119
1120
1120
11211121
11221122
11231123
static void GUI_showHelp(void);
static void GUI_showMessage(char *message);
/*
int GUI_printf(const char * fmt, ...);
int GUI_verbose(const char * fmt, ...);
void GUI_stop(const char * fmt, ...);
*/
int GUI_printf(const char * fmt, ...);
int GUI_verbose(const char * fmt, ...);
void GUI_stop(const char * fmt, ...);
*/
int
GUI_reallyVPrint(const char *format, va_list ap, int flag);
int i;
CursorState cursorState;
cursorState.x = cursorState.y = cursorState.type=0;
if ( items == NULL || count == 0 )
return;
if ( (gBootArgsPtr + strlen(argStr) + 1) < gBootArgsEnd)
{
*gBootArgsPtr++ = ' ';
strcat(gBootArgs, argStr);
strlcat(gBootArgs, argStr, BOOT_STRING_LEN);
gBootArgsPtr += strlen(argStr);
}
}
// Initialize default menu selection entry.
menuBVR = selectBootVolume(getBvChain());
safe_set_env(envgBootVolume, (uint32_t)menuBVR);
if (biosDevIsCDROM((int)get_env(envgBIOSDev)))
{
isCDROM = true;
scanDisks();
#endif
safe_set_env(envgBootVolume, (uint32_t)NULL);
GUI_clearBootArgs();
break;
branches/cparm/i386/modules/GUI/graphic_utils.c
146146
147147
148148
149
150
149
150
151151
152152
153153
......
204204
205205
206206
207
208207
209
210
208
211209
212210
213211
......
221219
222220
223221
224
225222
226
227223
228224
229225
......
373369
374370
375371
376
377
372
373
378374
379375
380376
......
439435
440436
441437
442
443
444
445
438
439
440
441
446442
447443
448444
......
474470
475471
476472
477
478
479
480
481
482
473
474
475
476
477
478
483479
484480
485481
......
498494
499495
500496
501
497
502498
503499
504500
......
516512
517513
518514
519
520
521
515
522516
523517
524518
......
589583
590584
591585
592
593586
594587
595588
......
637630
638631
639632
640
641
642
643
633
634
635
636
644637
645638
646639
......
686679
687680
688681
689
682
690683
691684
692
685
693686
694687
695688
......
706699
707700
708701
709
702
710703
711704
712705
......
850843
851844
852845
853
854
855
856
857
858
846
847
848
849
850
851
859852
860853
861854
......
873866
874867
875868
876
877869
878
879
870
871
880872
881873
882874
......
887879
888880
889881
890
891
892
893
894
882
883
884
885
886
895887
896888
897889
//bzero( &vbeInfo, sizeof(vbeInfo) );
bzero( &vbeInfo, sizeof(VBEInfoBlock) );
strcpy( (char*)&vbeInfo, "VBE2" );
strlcpy( (char*)&vbeInfo, "VBE2", sizeof(VBEInfoBlock) );
err = getVBEInfo( &vbeInfo );
if ( err != errSuccess )
return;
VBEModeInfoBlock modeInfo;
int err;
//bzero( &vbeInfo, sizeof(vbeInfo) );
bzero( &vbeInfo, sizeof(VBEInfoBlock) );
strcpy( (char*)&vbeInfo, "VBE2" );
strlcpy( (char*)&vbeInfo, "VBE2", sizeof(VBEInfoBlock) );
err = getVBEInfo( &vbeInfo );
if ( err != errSuccess )
return 0;
{
// Get mode information.
//bzero( &modeInfo, sizeof(modeInfo) );
bzero( &modeInfo, sizeof(VBEModeInfoBlock) );
err = getVBEModeInfo( *modePtr, &modeInfo );
if ( err != errSuccess )
{
int
getNumberArrayFromProperty( const char * propKey,
unsigned long numbers[],
unsigned long maxArrayCount )
unsigned long numbers[],
unsigned long maxArrayCount )
{
char * propStr;
unsigned long count = 0;
}
void drawColorRectangle( unsigned short x,
unsigned short y,
unsigned short width,
unsigned short height,
unsigned char colorIndex )
unsigned short y,
unsigned short width,
unsigned short height,
unsigned char colorIndex )
{
long pixelBytes;
long color = lookUpCLUTIndex( colorIndex, VIDEO(depth) );
static unsigned short
getVESAModeWithProperties( unsigned short width,
unsigned short height,
unsigned char bitsPerPixel,
unsigned short attributesSet,
unsigned short attributesClear,
VBEModeInfoBlock * outModeInfo,
unsigned short * vesaVersion )
unsigned short height,
unsigned char bitsPerPixel,
unsigned short attributesSet,
unsigned short attributesClear,
VBEModeInfoBlock * outModeInfo,
unsigned short * vesaVersion )
{
VBEInfoBlock vbeInfo;
unsigned short * modePtr;
//bzero( &vbeInfo, sizeof(vbeInfo) );
bzero( &vbeInfo, sizeof(VBEInfoBlock) );
strcpy( (char*)&vbeInfo, "VBE2" );
strlcpy( (char*)&vbeInfo, "VBE2", sizeof(VBEInfoBlock) );
err = getVBEInfo( &vbeInfo );
if ( err != errSuccess )
{
{
// Get mode information.
//bzero( &modeInfo, sizeof(modeInfo) );
bzero( &modeInfo, sizeof(VBEModeInfoBlock) );
bzero( &modeInfo, sizeof(VBEModeInfoBlock) );
err = getVBEModeInfo( *modePtr, &modeInfo );
if ( err != errSuccess )
{
( modeBitsPerPixel == bitsPerPixel ) )
{
matchedMode = *modePtr;
//bcopy( &modeInfo, outModeInfo, sizeof(modeInfo) );
bcopy( &modeInfo, outModeInfo, sizeof(VBEModeInfoBlock) );
break;
if ( (cols != 80) || (rows != 25) ) // not 80x25 mode
{
mode = getVESAModeWithProperties( cols, rows, bitsPerPixel,
maColorModeBit |
maModeIsSupportedBit,
maGraphicsModeBit,
&minfo, NULL );
maColorModeBit |
maModeIsSupportedBit,
maGraphicsModeBit,
&minfo, NULL );
}
if ( ( mode == modeEndOfList ) || ( setVBEMode(mode, NULL) != errSuccess ) )
if (get_env(envgVerboseMode)) {
// Tell the kernel to use text mode on a linear frame buffer display
setBootArgsVideoMode(FB_TEXT_MODE);
} else {
setBootArgsVideoMode(GRAPHICS_MODE);
}
}
}
setVESATextMode( params[0], params[1], 4 );
setBootArgsVideoMode(VGA_TEXT_MODE);
}
}
//==========================================================================
getNumberArrayFromProperty( kGraphicsModeKey, params, 4);
/* mode = */getVESAModeWithProperties( params[0], params[1], params[2],
maColorModeBit |
maModeIsSupportedBit |
maGraphicsModeBit |
maLinearFrameBufferAvailBit,
0,
&minfo, &vesaVersion );
maColorModeBit |
maModeIsSupportedBit |
maGraphicsModeBit |
maLinearFrameBufferAvailBit,
0,
&minfo, &vesaVersion );
params[0] = minfo.XResolution;
params[1] = minfo.YResolution;
char *buff = malloc(sizeof(char)*256);
if(!buff) return 0;
//bzero( &vbeInfo, sizeof(vbeInfo) );
bzero( &vbeInfo, sizeof(VBEInfoBlock) );
strcpy( (char*)&vbeInfo, "VBE2" );
strlcpy( (char*)&vbeInfo, "VBE2", sizeof(VBEInfoBlock) );
err = getVBEInfo( &vbeInfo );
if (err != errSuccess)
goto error;
small = (vbeInfo.TotalMemory < 16);
snprintf(buff, sizeof(char)*256,"VESA v%d.%d %d%s (%s)\n",
vbeInfo.VESAVersion >> 8,
vbeInfo.VESAVersion & 0xf,
small ? (vbeInfo.TotalMemory * 64) : (vbeInfo.TotalMemory / 16),
small ? "KB" : "MB",
VBEDecodeFP(const char *, vbeInfo.OEMStringPtr) );
vbeInfo.VESAVersion >> 8,
vbeInfo.VESAVersion & 0xf,
small ? (vbeInfo.TotalMemory * 64) : (vbeInfo.TotalMemory / 16),
small ? "KB" : "MB",
VBEDecodeFP(const char *, vbeInfo.OEMStringPtr) );
return buff;
error:
branches/cparm/i386/modules/GraphicsEnabler/nvidia.c
16241624
16251625
16261626
1627
16271628
16281629
devprop_add_value(device, "vbios", rom, (nvBiosOveride > 0) ? nvBiosOveride : (uint32_t)(rom[2] * 512));
}
free(rom);
return true;
}
branches/cparm/i386/modules/GraphicsEnabler/ati.c
218218
219219
220220
221
222
221223
222224
223225
224226
225
226
227
228227
229228
230
229
231230
232231
233232
234233
235
234
236235
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
254253
255254
256
257
258
259
260
261
255
256
257
258
259
260
262261
263
264
265
266
267
262
263
264
265
266
267
268
269
270
268271
269
272
270273
271274
272
275
273276
274
275
276
277
278
279
280
277281
278282
279283
280284
281285
282
286
283287
284288
285
289
286290
287
291
288292
289
293
290294
291
295
292296
293297
294
298
295299
296
300
297301
298
302
299303
300304
301305
302
306
303307
304
305
306
308
309
310
307311
308312
309
313
310314
311315
312316
313
317
314318
315319
316320
317321
318322
319
323
320324
321
322
325
326
323327
324328
325
326
329
330
327331
328332
329
333
330334
331
335
332336
333
334
335
336
337
338
339
340
337341
338342
339
340
343
344
341345
342
346
343347
344
348
345349
346350
347
351
348352
349
353
350354
351355
352356
353357
354358
355
356
359
360
357361
358362
359363
360
364
361365
362366
363
367
364368
365
369
366370
367
368
369
371
372
373
370374
371375
372
373
374
375
376
377
378
379
376
377
380378
381379
382
380
381
382
383
384
385
383386
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
408411
409
410
411
412
413
414
415
416
417
412
413
414
415
416
417
418
419
420
418421
419
422
420423
421424
422
425
423426
424427
425428
426
427
428
429
430
431
429
430
431
432
433
434
432435
433436
434437
435
438
436439
437440
438441
439
442
440443
441
444
442445
443
446
444447
445
446
448
449
447450
448451
449
452
450453
451454
452455
453456
454457
455458
456
459
457460
458461
459
462
460463
461
464
462465
463
464
465
466
466
467
468
469
467470
468471
469
472
470473
471
474
472475
473
476
474477
475
478
476479
477
480
478481
479
482
480483
481484
482
485
483486
484487
485
486
487
488
488
489
490
491
489492
490
491
492
493
493
494
495
496
494497
495
498
496499
497
500
501
502
498503
499
504
500505
501
502
506
507
503508
504509
505
510
506511
507
512
508513
509
510
514
515
511516
512517
513
514
515
516
517
518
519
520
521
518
519
520
521
522
522523
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
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
546551
547
552
548553
549
554
550555
551556
552557
553
558
554559
555
560
556561
557562
558
563
559564
560
565
561566
562
567
563568
564
569
565570
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
571
572
573
574
575
576
577
578
579
580
581
583582
584583
585584
586
587
588
585
589586
590587
588
591589
592590
593591
594
592
595593
596594
597595
598
596
597
598
599
600
601
602
603
599604
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
618620
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
621
622
623
624
625
626
627
628
629
630
631
632
633
634634
635
636
637
638
639
635
636
640637
641
642
643
644
645
646
638
639
640
641
642
647643
648644
649
650
651
652
645
653646
654647
655
648
656649
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
674665
675
676
677
678
679
680
681
666
667
668
682669
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
670
671
672
673
674
675
676
677
678
679
680
681
698682
699
683
700684
701
702
685
703686
704
705
706
707
708
709
710
711
712
713
687
688
689
690
691
692
693
694
714695
715696
716
717
697
698
718699
719
720
700
701
721702
722703
723
704
724705
725
726
727
728
729
730
731
732
733
734
706
707
708
709
710
711
712
713
714
715
735716
736
737
738
739
740
741
717
718
719
720
721
742722
743
744
745
746
747
748
749
750
751
752
753
754
723
724
725
726
727
728
755729
756730
757
731
758732
759
760
761
762
763
764
733
734
735
736
737
738
765739
766
767
740
741
768742
769743
770744
771745
772
773
774
775
776
777
778
779
780
781
782
783
784
785
746
747
748
749
750
751
752
753
786754
787
755
788756
789
790
791
792
793
757
794758
795
759
796760
797
761
798762
799
763
800764
801
765
802766
803767
804768
805
769
806770
807771
808
809
772
810773
811
812
774
775
776
813777
814778
815
779
816780
817781
818
819
782
783
784
785
820786
821787
822788
......
14151381
14161382
14171383
1384
1385
1386
14181387
14191388
14201389
1421
1422
14231390
14241391
14251392
{ 0x9400,0x25521002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT",kNull},
{ 0x9400,0x30001002, CHIP_FAMILY_R600,"ATI Radeon HD 2900 PRO",kNull},
{ 0x9440,0x0851174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4870",kMotmot},
{ 0x9440,0x114A174B, CHIP_FAMILY_RV770,"Sapphire 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},
{ 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},
{ 0x944A,0x30001043, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x30001458, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x30001462, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x30001545, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x30001682, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x3000174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944A,0x300017AF, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",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,0x3260174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810 Series",kMotmot},
{ 0x944E,0x3261174B, CHIP_FAMILY_RV770,"ATI Radeon HD 4810 series",kMotmot},
{ 0x944E,0x30001787, CHIP_FAMILY_RV770,"ATI Radeon HD 4730 Series",kMotmot},
{ 0x944E,0x30101787, CHIP_FAMILY_RV770,"ATI Radeon HD 4810 Series",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},
{ 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,0x3628103C, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M",kGliff},
{ 0x9480,0x9035104D, CHIP_FAMILY_RV730,"ATI Radeon HD 4650M",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,0x21CF1458, CHIP_FAMILY_RV730,"ATI Radeon HD 4600 Series",kNull},
{ 0x9498,0x10001043, CHIP_FAMILY_RV730,"ASUS EAHG4670", kNull},
{ 0x9498,0x20091787, CHIP_FAMILY_RV730,"ATI Radeon HD 4650", 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,0x30001025, CHIP_FAMILY_RV610,"ATI Radeon HD 2350 Series",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,0x3000148C, CHIP_FAMILY_RV610,"ATI Radeon HD 2350 Series",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,0x3000174B, CHIP_FAMILY_RV610,"ATI Radeon HD 2350 Series",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},
{ 0x94C3,0x30001787, CHIP_FAMILY_RV610,"ATI Radeon HD 2350 Series",kNull},
{ 0x94C3,0x01011A93, CHIP_FAMILY_RV610,"Qimonda 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,0x3000174B, CHIP_FAMILY_RV670,"Sapphire 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,0x3000174B, CHIP_FAMILY_RV670,"Sapphire 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,0x16131462, CHIP_FAMILY_RV710,"ATI Radeon HD 4550",kNull},
{ 0x954F,0x20081787, CHIP_FAMILY_RV710,"ATI Radeon HD 4350",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,0x30901682, CHIP_FAMILY_RV710,"XFX Radeon HD 4570",kNull},
{ 0x954F,0x30501787, CHIP_FAMILY_RV710,"ATI Radeon HD 4450",kNull},
{ 0x954F,0x31001787, CHIP_FAMILY_RV710,"ATI Radeon HD 4520",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,"Sapphire Radeon HD 4570",kNull},
{ 0x954F,0xE990174B, CHIP_FAMILY_RV710,"Sapphire Radeon HD 4350",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},
{ 0x9552,0x04341028, CHIP_FAMILY_RV710,"ATI Mobility Radeon 4330",kShrike},
{ 0x9552,0x308B103C, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4300 Series",kShrike},
{ 0x9552,0x3000148C, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kNull},
{ 0x9552,0x3000174B, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kNull},
{ 0x9552,0x30001787, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kNull},
{ 0x9552,0x300017AF, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",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 Series",kNull},
{ 0x9581,0x3000148C, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9583,0x3000148C, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9588,0x01021A93, CHIP_FAMILY_RV630,"Qimonda 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},
{ 0x9589,0x0E41174B, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9589,0x30001787, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9589,0x01001A93, CHIP_FAMILY_RV630,"Qimonda Radeon HD 2600 PRO",kNull},
{ 0x9591,0x2303148C, CHIP_FAMILY_RV635,"ATI Radeon HD 3600 Series",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,0x30001545, CHIP_FAMILY_RV635,"VisionTek Radeon HD 2600 XT",kNull},
{ 0x9598,0x30011545, CHIP_FAMILY_RV635,"VisionTek Radeon HD 2600 Pro",kNull},
{ 0x9598,0x3000174B, CHIP_FAMILY_RV635,"Sapphire Radeon HD 3730",kNull},
{ 0x9598,0x3001174B, CHIP_FAMILY_RV635,"Sapphire 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,0x3000174B, CHIP_FAMILY_RV620,"Sapphire 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},
{ 0x95C5,0x01041A93, CHIP_FAMILY_RV620,"Qimonda Radeon HD 3450",kNull},
{ 0x95C5,0x01051A93, CHIP_FAMILY_RV620,"Qimonda Radeon HD 3450",kNull},
/* Evergreen */
{ 0x6898,0x0B001002, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kZonalis},
{ 0x6898,0x032E1043, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6898,0x00D0106B, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kLangur},
{ 0x6898,0xE140174B, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6898,0x29611682, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6899,0x21E41458, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x6899,0xE140174B, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x6899,0xE174174B, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x6899,0x200A1787, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x6899,0x22901787, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x689C,0x03521043, CHIP_FAMILY_HEMLOCK,"ATI Radeon HD 5970",kUakari},
{ 0x689C,0x039E1043, CHIP_FAMILY_HEMLOCK,"ATI Radeon HD 5970",kUakari},
{ 0x689C,0x03521043, CHIP_FAMILY_HEMLOCK,"ASUS ARES",kUakari},
{ 0x689C,0x039E1043, CHIP_FAMILY_HEMLOCK,"ASUS EAH5870 Series",kUakari},
{ 0x689C,0x30201682, CHIP_FAMILY_HEMLOCK,"ATI Radeon HD 5970",kUakari},
{ 0x68A0,0x043A1028,CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5870",kNomascus},
{ 0x68A1,0x144D103C,CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5850",kNomascus},
{ 0x68A0,0x043A1028, CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5870",kNomascus},
{ 0x68A1,0x144D103C, CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5850",kNomascus},
{ 0x68A1,0x1522103C, CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5850",kHoolock},
{ 0x68A8,0x050E1025, CHIP_FAMILY_CYPRESS,"AMD Radeon HD 6850M",kUakari},
{ 0x68BA,0x174B1482, CHIP_FAMILY_JUNIPER,"ATI Sapphire Radeon HD 6770",kVervet},
{ 0x68B8,0x00CF106B, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kHoolock},
{ 0x68B8,0x21D71458, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x21F61458, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x21F61458, CHIP_FAMILY_JUNIPER,"GigaByte HD5770 R577SL-1GD",kVervet},
{ 0x68B8,0x29901682, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x29911682, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x1482174B, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0xE144174B, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kHoolock},
{ 0x68B8,0xE144174B, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kHoolock},
{ 0x68B8,0xE147174B, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x200A1787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x200A1787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x200B1787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x22881787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68BA,0x31501682, CHIP_FAMILY_JUNIPER,"AMD Radeon HD 6770",kVervet},
{ 0x68BE,0x22881787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5750",kVervet},
{ 0x68BF,0x220E1458, CHIP_FAMILY_JUNIPER,"AMD Radeon HD 6750",kVervet},
{ 0x68BF,0x31401682, CHIP_FAMILY_JUNIPER,"AMD Radeon HD 6750",kVervet},
{ 0x68BE,0x22881787, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5750",kVervet},
{ 0x68BF,0x220E1458, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 6750",kVervet},
{ 0x68C0,0x1594103C, CHIP_FAMILY_REDWOOD,"AMD Radeon HD 6570M",kNull},
{ 0x68C0,0x392717AA, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5730",kNull},
{ 0x68C0,0x395217AA, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5730",kNull},
{ 0x68C1,0x02051025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x02961025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x030A1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x033D1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x033E1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5650",kNull},
{ 0x68C1,0x03471025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03561025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03581025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x035A1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x035C1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03641025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03791025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x037E1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03821025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x9071104D,CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5650",kEulemur},
{ 0x68C8,0x2306103C, CHIP_FAMILY_REDWOOD,"ATI FirePro V4800 (FireGL)",kNull},
{ 0x68C0,0x392717AA, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5730",kNull},
{ 0x68C0,0x395217AA, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5730",kNull},
{ 0x68C1,0x02051025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x02961025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x030A1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x033D1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x033E1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03471025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03561025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03581025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x035A1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x035C1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03641025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03791025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x037E1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x03821025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5750",kNull},
{ 0x68C1,0x033E1025, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5650",kNull},
{ 0x68C1,0x9071104D, CHIP_FAMILY_REDWOOD,"ATI Mobility Radeon HD 5650",kEulemur},
{ 0x68C1, 0x1449103C, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5650",kEulemur},
{ 0x68C8,0x2306103C, CHIP_FAMILY_REDWOOD,"ATI FirePro V4800 (FireGL)",kNull},
{ 0x68D8,0x03561043, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5670",kBaboon},
{ 0x68D8,0x68e01028, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5670", kBaboon},
{ 0x68D8,0x21D91458, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5670",kBaboon},
{ 0x68D8,0x5690174B, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5690",kNull},
{ 0x68D8,0x5730174B, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5730",kNull},
{ 0x68D8,0xE151174B, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5670",kBaboon},
{ 0x68D8,0x30001787, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5730",kNull},
{ 0x68D8,0x301017AF, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5730",kNull},
{ 0x68D8,0x301117AF, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5690",kNull},
{ 0x68D9,0x301017AF, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5630",kNull},
{ 0x68DA,0x5630174B, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5630",kNull},
{ 0x68DA,0x30001787, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5630",kNull},
{ 0x68DA,0x301017AF, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5630",kNull},
{ 0x68E0,0x04561028, CHIP_FAMILY_CEDAR,"ATI Mobility Radeon HD 5470",kEulemur},
{ 0x68E0,0x1433103C, CHIP_FAMILY_CEDAR,"ATI Mobility Radeon HD 5470",kEulemur},
{ 0x68E1,0x1426103C, CHIP_FAMILY_CEDAR,"ATI Mobility Radeon HD 5430",kEulemur},
{ 0x68E4,0x1426103C, CHIP_FAMILY_CEDAR,"AMD Radeon HD 6370M ",kNull},
{ 0x68E4,0x397917AA, CHIP_FAMILY_CEDAR,"AMD Radeon HD 6370M ",kNull},
{ 0x68F9,0x010E1002, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x03741043, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x23401462, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68E0,0x04561028, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470M",kEulemur},
{ 0x68E0,0x1433103C, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470M",kEulemur},
{ 0x68E1,0x1426103C, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5430M",kEulemur},
{ 0x68F9,0x010E1002, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x03741043, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450", kEulemur},
{ 0x68F9,0x5470174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470",kNull},
{ 0x68F9,0x5490174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5490",kNull},
{ 0x68F9,0x5530174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5530",kNull},
{ 0x68F9,0xE145174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0xE153174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x20091787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x22911787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x23401462, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x30001787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470",kNull},
{ 0x68F9,0x30011787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5530",kNull},
{ 0x68F9,0x30021787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5490",kNull},
{ 0x68F9,0x301117AF, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470",kNull},
{ 0x68F9,0x301217AF, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5490",kNull},
{ 0x68F9,0x301317AF, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5470",kNull},
{ 0x68F9,0xE145174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0xE153174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x30321682, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68F9,0x303A1682, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68E1,0x3000174B, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
{ 0x68E1,0x30001787, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5450",kEulemur},
/* Northen Islands */
{ 0x6718,0x0B001002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kNull},
{ 0x6718,0x67181002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kNull},
{ 0x6718,0x31301682, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kNull},
{ 0x6719,0x0B001002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6719,0x21FD1458, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6719,0x186B174B, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kNull},
{ 0x6719,0x20101787, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6720,0x04901028, CHIP_FAMILY_BARTS,"AMD Radeon HD 6970M",kElodea},
{ 0x6720,0x04BA1028, CHIP_FAMILY_BARTS,"AMD Radeon HD 6970M",kElodea},
{ 0x6738,0x00D01002,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x21FA1002,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6718,0x0B001002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kGibba},
{ 0x6718,0x67181002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kGibba},
{ 0x6718,0x31301682, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970",kGibba},
{ 0x6719,0x0B001002, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6719,0x186B174B, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6719,0x20101787, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6719,0x31221682, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950",kGibba},
{ 0x6720,0x04BA1028, CHIP_FAMILY_BARTS,"AMD Radeon HD 6970M",kElodea},
{ 0x6720,0x51041558, CHIP_FAMILY_BARTS,"AMD Radeon HD 6990M",kElodea},
{ 0x6738,0x00D01002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x174B174B, CHIP_FAMILY_BARTS,"Sapphire Radeon HD6870",kDuckweed}, // ?? kBulrushes ??
{ 0x6738,0x21FA1002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x67381002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x21FA1458,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31031682,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31041682,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31071682,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31081682,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0xE178174B,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x174B174B,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kBulrushes},
{ 0x6738,0x20101787,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x23051787,CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6739,0x67391002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6738,0x21FA1458, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31031682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31041682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31071682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x31081682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed}, // ?? kJuncus ??
{ 0x6738,0xE178174B, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x20101787, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6738,0x23051787, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870",kDuckweed},
{ 0x6739,0xAA881002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x03B41043, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x21F81458, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x03B41043, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x21F81458, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kBulrushes},
{ 0x6739,0x24411462, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x31101682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0xE177174B,CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6740,0x1631103C, CHIP_FAMILY_TURKS,"AMD FirePro M5950",kNull},
{ 0x6739,0x31101682, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0x67391002, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6739,0xE177174B, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850",kDuckweed},
{ 0x6740,0x1D121043, CHIP_FAMILY_TURKS,"AMD Radeon HD 6730M",kNull},
{ 0x6740,0x1657103C, CHIP_FAMILY_TURKS,"AMD Radeon HD 6770M",kNull},
{ 0x6740,0x165A103C, CHIP_FAMILY_TURKS,"AMD Radeon HD 6770M",kNull},
{ 0x6740,0x3388103C, CHIP_FAMILY_TURKS,"AMD Radeon HD 6770M",kNull},
{ 0x6740,0x1D121043, CHIP_FAMILY_TURKS,"AMD Radeon HD 6730M",kNull},
{ 0x6741,0x050E1025, CHIP_FAMILY_TURKS,"AMD Radeon HD 6650M",kNull},
{ 0x6741,0x05131025, CHIP_FAMILY_TURKS,"AMD Radeon HD 6650M",kNull},
{ 0x6741,0x1646103C, CHIP_FAMILY_TURKS,"AMD Radeon HD 6750M",kNull},
{ 0x6741,0x1688103C, CHIP_FAMILY_TURKS,"AMD Radeon HD 7690M",kNull},
{ 0x6741,0x9080104D,CHIP_FAMILY_TURKS,"AMD Radeon HD 6630M",kNull},
{ 0x6758,0x67581002,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x00121028,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x22051458,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0xE194174B,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x31811682,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x31831682,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0xE194174B,CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6741,0x9080104D, CHIP_FAMILY_TURKS,"AMD Radeon HD 6630M",kNull},
{ 0x6758,0x67581002, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x22051458, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0xE194174B, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x31811682, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0x31831682, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6758,0xE1941746, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670",kBulrushes},
{ 0x6759,0x20121787, CHIP_FAMILY_TURKS,"AMD Radeon HD 6570",kPithecia}, // ErmaC
{ 0x6759,0xE193174B, CHIP_FAMILY_TURKS,"AMD Radeon HD 6570",kNull},
{ 0x6759,0x20121787, CHIP_FAMILY_TURKS,"AMD Radeon HD 6570",kPithecia},
{ 0x6760,0x04CC1028,CHIP_FAMILY_CAICOS,"AMD Radeon HD 6490M",kNull},
{ 0x6760,0x1CB21043, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6470M",kNull},
{ 0x6760,0x04CC1028, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6490M",kNull},
{ 0x6760,0x165A103C, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6470M",kNull},
{ 0x6760,0x167D103C, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6470M",kNull},
{ 0x6760,0x00031179, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450M",kNull},
{ 0x6779,0x64501092,CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kBulrushes},
{ 0x6779,0xE164174B,CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kBulrushes},
{ 0x6779,0xE180174B, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kPithecia},
//
// standard/default models
// these definitions are used when no subsys_id was found
//
{ 0x9400,0x00000000, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT/PRO Series",kNull},
{ 0x9405,0x00000000, CHIP_FAMILY_R600,"ATI Radeon HD 2900 GT Series",kNull},
{ 0x6760,0x167D103C, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6470M",kNull},
{ 0x6760,0x1CB21043, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6470M",kNull},
{ 0x6779,0x64501092, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kBulrushes},
{ 0x6779,0xE164174B, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kBulrushes},
{ 0x6779,0xE180174B, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450",kPithecia}, // ErmaC
/* standard/default models */
{ 0x9400,0x00000000, CHIP_FAMILY_R600,"ATI Radeon HD 2900 XT",kNull},
{ 0x9405,0x00000000, CHIP_FAMILY_R600,"ATI Radeon HD 2900 GT",kNull},
{ 0x9440,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9441,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2 Series",kMotmot},
{ 0x9441,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4870 X2",kMotmot},
{ 0x9442,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9443,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4850 X2 Series",kMotmot},
{ 0x944A,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9443,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4850 X2",kMotmot},
{ 0x944C,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x944E,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4700 Series",kMotmot},
{ 0x9450,0x00000000, CHIP_FAMILY_RV770,"AMD FireStream 9270 Series",kMotmot},
{ 0x9452,0x00000000, CHIP_FAMILY_RV770,"AMD FireStream 9250 Series",kMotmot},
{ 0x9460,0x00000000, CHIP_FAMILY_RV790,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9462,0x00000000, CHIP_FAMILY_RV790,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9480,0x00000000, CHIP_FAMILY_RV730,"ATI Mobility Radeon HD 4650 Series",kGliff},
{ 0x944E,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4700 Series",kMotmot},
{ 0x9450,0x00000000, CHIP_FAMILY_RV770,"AMD FireStream 9270",kMotmot},
{ 0x9452,0x00000000, CHIP_FAMILY_RV770,"AMD FireStream 9250",kMotmot},
{ 0x9460,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9462,0x00000000, CHIP_FAMILY_RV770,"ATI Radeon HD 4800 Series",kMotmot},
{ 0x9490,0x00000000, CHIP_FAMILY_RV730,"ATI Radeon HD 4600 Series",kFlicker},
{ 0x9498,0x00000000, CHIP_FAMILY_RV730,"ATI Radeon HD 4600 Series",kFlicker},
{ 0x94B3,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4770 Series",kFlicker},
{ 0x94B3,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4770",kFlicker},
{ 0x94B4,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4700 Series",kFlicker},
{ 0x94B5,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4770 Series",kFlicker},
{ 0x94B5,0x00000000, CHIP_FAMILY_RV740,"ATI Radeon HD 4770",kFlicker},
{ 0x94C1,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 Series",kIago},
{ 0x94C3,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 Series",kIago},
{ 0x94C7,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 2350 Series",kIago},
{ 0x94C7,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 2350",kIago},
{ 0x94CC,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 2400 Series",kIago},
{ 0x9501,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3800 Series",kMegalodon},
{ 0x9505,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3800 Series",kMegalodon},
{ 0x9507,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3830 Series",kMegalodon},
{ 0x950F,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3870 X2 Series",kMegalodon},
{ 0x9513,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3850 X2 Series",kMegalodon},
{ 0x9519,0x00000000, CHIP_FAMILY_RV630,"AMD FireStream 9170 Series",kMegalodon},
{ 0x9540,0x00000000, CHIP_FAMILY_RV710,"ATI Radeon HD 4550/4590 Series",kNull},
{ 0x9501,0x00000000, CHIP_FAMILY_RV670,"ATI Radeon HD 3800 Series",kMegalodon},
{ 0x9505,0x00000000, CHIP_FAMILY_RV670,"ATI Radeon HD 3800 Series",kMegalodon},
{ 0x9507,0x00000000, CHIP_FAMILY_RV670,"ATI Radeon HD 3830",kMegalodon},
{ 0x950F,0x00000000, CHIP_FAMILY_RV670,"ATI Radeon HD 3870 X2",kMegalodon},
{ 0x9513,0x00000000, CHIP_FAMILY_RV670,"ATI Radeon HD 3850 X2",kMegalodon},
{ 0x9519,0x00000000, CHIP_FAMILY_RV670,"AMD FireStream 9170",kMegalodon},
{ 0x9540,0x00000000, CHIP_FAMILY_RV710,"ATI Radeon HD 4550",kNull},
{ 0x954F,0x00000000, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kNull},
{ 0x9552,0x00000000, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kShrike},
{ 0x9553,0x00000000, CHIP_FAMILY_RV710,"ATI Radeon HD 4300/4500 Series",kShrike},
{ 0x9588,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 XT Series",kLamna},
{ 0x9589,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 PRO Series",kLamna},
{ 0x9553,0x00000000, CHIP_FAMILY_RV710,"ATI Mobility Radeon HD 4500/5100 Series",kShrike },
{ 0x9588,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 XT",kLamna},
{ 0x9589,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 PRO",kLamna},
{ 0x958A,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 X2 Series",kLamna},
{ 0x9581,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9583,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kNull},
{ 0x9588,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 2600 XT Series",kNull},
{ 0x9589,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3610 Series",kNull},
{ 0x9591,0x00000000, CHIP_FAMILY_RV635,"ATI Radeon HD 3600 Series",kNull},
{ 0x9598,0x00000000, CHIP_FAMILY_RV630,"ATI Radeon HD 3600 Series",kMegalodon},
{ 0x95C0,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 3400 Series",kIago},
{ 0x95C5,0x00000000, CHIP_FAMILY_RV610,"ATI Radeon HD 3400 Series",kIago},
{ 0x9598,0x00000000, CHIP_FAMILY_RV635,"ATI Radeon HD 3600 Series",kMegalodon},
{ 0x95C0,0x00000000, CHIP_FAMILY_RV620,"ATI Radeon HD 3400 Series",kIago},
{ 0x95C5,0x00000000, CHIP_FAMILY_RV620,"ATI Radeon HD 3400 Series",kIago},
/* IGP */
{ 0x9610,0x00000000, CHIP_FAMILY_RS780,"ATI Radeon HD 3200 Graphics",kNull},
{ 0x9611,0x00000000, CHIP_FAMILY_RS780,"ATI Radeon 3100 Graphics",kNull},
{ 0x9611,0x00000000, CHIP_FAMILY_RS780,"ATI Radeon 3100 Graphics",kNull},
{ 0x9614,0x00000000, CHIP_FAMILY_RS780,"ATI Radeon HD 3300 Graphics",kNull},
{ 0x9616,0x00000000, CHIP_FAMILY_RS780,"ATI Radeon 3000 Graphics",kNull},
{ 0x9710,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4200 Series",kNull},
{ 0x9714,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4290 Series",kNull},
{ 0x9715,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4250 Series",kNull},
{ 0x9616,0x00000000, CHIP_FAMILY_RS780,"AMD 760G",kNull},
{ 0x9710,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4200",kNull},
{ 0x9715,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4250",kNull},
{ 0x9714,0x00000000, CHIP_FAMILY_RS880,"ATI Radeon HD 4290",kNull},
/* Evergreen */
{ 0x688D,0x00000000, CHIP_FAMILY_CYPRESS,"AMD FireStream 9350 Series",kUakari},
{ 0x688D,0x00000000, CHIP_FAMILY_CYPRESS,"AMD FireStream 9350",kUakari},
{ 0x6898,0x00000000, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5800 Series",kUakari},
{ 0x6899,0x00000000, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5800 Series",kUakari},
{ 0x689C,0x00000000, CHIP_FAMILY_HEMLOCK,"ATI Radeon HD 5900 Series",kUakari},
{ 0x689E,0x00000000, CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5800 Series",kUakari},
{ 0x68A0,0x00000000, CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5800 Series",kNomascus},
{ 0x68A1,0x00000000,CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5800 Series",kNomascus},
{ 0x68A8,0x00000000, CHIP_FAMILY_CYPRESS,"AMD Radeon HD 6800M Series",kUakari},
{ 0x68B8,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5700/6700 Series",kVervet},
{ 0x68B9,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5600/5700 Series",kVervet},
{ 0x68BA,0x00000000, CHIP_FAMILY_JUNIPER,"AMD Radeon HD 6700 Series",kVervet},
{ 0x68BE,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5700/6750 Series",kVervet},
{ 0x68BF,0x00000000, CHIP_FAMILY_JUNIPER,"AMD Radeon HD 6700 Series",kVervet},
{ 0x68C0,0x00000000, CHIP_FAMILY_REDWOOD,"AMD Radeon HD 6570M/5700 Series",kNull},
{ 0x68C1,0x00000000, CHIP_FAMILY_REDWOOD,"AMD Radeon HD 6500M/5600/5700 Series",kNull},
{ 0x68A0,0x00000000, CHIP_FAMILY_CYPRESS,"ATI Mobility Radeon HD 5800 Series",kNomascus},
{ 0x68B8,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5700 Series",kVervet},
{ 0x68B9,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5600 Series",kVervet},
{ 0x68BA,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 6770 Series",kVervet},
{ 0x68BE,0x00000000, CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5700 Series",kVervet},
{ 0x68D8,0x00000000, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5600 Series",kBaboon},
{ 0x68D9,0x00000000, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5500/5600 Series",kBaboon},
{ 0x68D9,0x00000000, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5500 Series",kBaboon},
{ 0x68DA,0x00000000, CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5500 Series",kBaboon},
{ 0x68E0,0x00000000, CHIP_FAMILY_CEDAR,"ATI Mobility Radeon HD 5400 Series",kEulemur},
{ 0x68E1,0x00000000, CHIP_FAMILY_CEDAR,"ATI Mobility Radeon HD 5400 Series",kEulemur},
{ 0x68E4,0x00000000, CHIP_FAMILY_CEDAR,"ATI Radeon HD 6300M Series",kNull},
{ 0x68F9,0x00000000, CHIP_FAMILY_CEDAR,"ATI Radeon HD 5400 Series",kNull},
/* Northen Islands */
{ 0x6718,0x00000000, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970 Series",kNull},
{ 0x6718,0x00000000, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6970 Series",kGibba},
{ 0x6719,0x00000000, CHIP_FAMILY_CAYMAN,"AMD Radeon HD 6950 Series",kGibba},
{ 0x6720,0x00000000, CHIP_FAMILY_BARTS,"AMD Radeon HD 6900M Series",kNull},
{ 0x6738,0x00000000, CHIP_FAMILY_BARTS,"AMD Radeon HD 6870 Series",kDuckweed},
{ 0x6739,0x00000000, CHIP_FAMILY_BARTS,"AMD Radeon HD 6850 Series",kDuckweed},
{ 0x673E,0x00000000, CHIP_FAMILY_BARTS,"AMD Radeon HD 6790 Series",kNull},
{ 0x6740,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6700M Series",kNull},
{ 0x6741,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6600M/6700M Series",kNull},
{ 0x6750,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6600A Series",kNull},
{ 0x6758,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6670 Series",kBulrushes},
{ 0x6759,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6570/7570 Series",kNull},
{ 0x6759,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 6500 Series",kNull},
{ 0x675F,0x00000000, CHIP_FAMILY_TURKS,"AMD Radeon HD 5570 Series",kNull},
{ 0x6760,0x00000000, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6400M Series",kNull},
{ 0x6761,0x00000000, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6430M Series",kNull},
{ 0x6770,0x00000000, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6400 Series",kNull},
{ 0x6779,0x00000000, CHIP_FAMILY_CAICOS,"AMD Radeon HD 6450 Series",kBulrushes},
{ 0x0000,0x00000000, CHIP_FAMILY_UNKNOW,NULL,kNull}
/* Southen Islands */
{ 0x0000,0x00000000, CHIP_FAMILY_UNKNOW,NULL,kNull}
};
typedef struct {
}
#endif
static charname[24];
static charname_parent[24];
static bool init_card(pci_dt_t *pci_dev)
{
booladd_vbios = true;
charname[24];
charname_parent[24];
inti;
intn_ports = 0;
branches/cparm/i386/modules/SMBiosGetters/mysmbios.c
523523
524524
525525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542526
543527
544528
......
560544
561545
562546
563
547
564548
565549
566
550
567551
568552
569553
......
642626
643627
644628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
645644
646645
647646
......
775774
776775
777776
778
779
780
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
781800
782
783
784
785
786
787
788
789
790
791
792801
793
794
795
796
797
798
799
800802
801803
802804
return defaultBaseBoard.product;
}
const char* sm_search_str(const SMStrEntryPair*sm_defaults, const char * key)
{
int i;
for (i=0; sm_defaults[i].key[0]; i++) {
if (!strcmp (sm_defaults[i].key, key)) {
return sm_defaults[i].value;
}
}
// Shouldn't happen
printf ("Error: no default for %s known\n", key);
sleep (2);
return "";
}
const char* sm_get_random_productNumber(void)
{
static char str[4] = {0x00,0x00,0x00,0x00};
strlcpy (str, tmp, sizeof(str));
snprintf(tmp, sizeof(tmp),"%c",sn_gen_pn_str[rand_sn2]);
strcat (str, tmp);
strlcat (str, tmp, sizeof(str));
snprintf(tmp, sizeof(tmp),"%c",sn_gen_pn_str[rand_sn3]);
strcat (str, tmp);
strlcat (str, tmp, sizeof(str));
DBG ("fake_productNumber: %s\n",str);
return str;
}
const char* sm_search_str(const SMStrEntryPair*sm_defaults, const char * key)
{
int i;
for (i=0; sm_defaults[i].key[0]; i++) {
if (!strcmp (sm_defaults[i].key, key)) {
return sm_defaults[i].value;
}
}
// Shouldn't happen
printf ("Error: no default for %s known\n", key);
return "";
}
static void setDefaultSMBData(void)
{
static bool setDefSMB = true;
getBoolForKey(kSMBIOSRandomSerial, &randomSerial, DEFAULT_BOOT_CONFIG) ;
if ( randomSerial ) // useless
strlcpy (fake_serial,sm_get_random_country(), strlen(sm_get_random_country())+1);
else
strlcpy (fake_serial,sm_search_str(sm_chosen, "SMserialProductCountry"), strlen(sm_search_str(sm_chosen, "SMserialProductCountry"))+1);
strlcpy (fake_serial,sm_get_random_country(), strlen(sm_get_random_country())+1);
else
strlcpy (fake_serial,sm_search_str(sm_chosen, "SMserialProductCountry"), strlen(sm_search_str(sm_chosen, "SMserialProductCountry"))+1);
if ( randomSerial ) // useless
strlcat (fake_serial,sm_get_random_year(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialYear"),sizeof(fake_serial));
if ( randomSerial ) // useless
strlcat(fake_serial,sm_get_random_week(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialWeek"),sizeof(fake_serial));
if ( randomSerial )
strlcat (fake_serial,sm_get_random_productNumber(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialProductNumber"),sizeof(fake_serial));
strlcat(fake_serial, sm_search_str(sm_chosen, "SMserialModel"),sizeof(fake_serial));
if ( randomSerial ) // useless
strcat (fake_serial,sm_get_random_year());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialYear"));
if ( randomSerial ) // useless
strcat (fake_serial,sm_get_random_week());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialWeek"));
if ( randomSerial )
strcat (fake_serial,sm_get_random_productNumber());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialProductNumber"));
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialModel"));
if ( randomSerial )
msglog ("fake_serial: %s\n",fake_serial);
defaultBIOSInfo.version= sm_search_str(sm_chosen, "SMbiosversion");
branches/cparm/i386/modules/SMBiosPatcher/smbios_patcher.c
293293
294294
295295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312296
313297
314298
......
326310
327311
328312
329
313
330314
331315
332
333
316
317
334318
335
336
319
320
337321
338322
339323
......
355339
356340
357341
358
342
359343
360344
361
345
362346
363347
364348
......
377361
378362
379363
380
364
381365
382366
383367
384368
385369
386
370
387371
388372
389373
......
403387
404388
405389
406
390
407391
408392
409393
......
412396
413397
414398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
415414
416415
417416
......
545544
546545
547546
548
549
550
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
551570
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569571
570572
571573
return csum;
}
const char* sm_search_str(const SMStrEntryPair*sm_defaults, const char * key)
{
int i;
for (i=0; sm_defaults[i].key[0]; i++) {
if (!strcmp (sm_defaults[i].key, key)) {
return sm_defaults[i].value;
}
}
// Shouldn't happen
printf ("Error: no default for %s known\n", key);
sleep (2);
return "";
}
const char* sm_get_random_productNumber(void)
{
static char str[4] = {0x00,0x00,0x00,0x00};
// Append all charaters to the string
char tmp[2];
bzero(tmp,sizeof(tmp));
snprintf(tmp,sizeof(tmp),"%c",sn_gen_pn_str[rand_sn1]);
snprintf(tmp, sizeof(tmp),"%c",sn_gen_pn_str[rand_sn1]);
strlcpy (str, tmp, sizeof(str));
snprintf(tmp,sizeof(tmp),"%c",sn_gen_pn_str[rand_sn2]);
strcat (str, tmp);
snprintf(tmp, sizeof(tmp),"%c",sn_gen_pn_str[rand_sn2]);
strlcat (str, tmp, sizeof(str));
snprintf(tmp,sizeof(tmp),"%c",sn_gen_pn_str[rand_sn3]);
strcat (str, tmp);
snprintf(tmp, sizeof(tmp),"%c",sn_gen_pn_str[rand_sn3]);
strlcat (str, tmp, sizeof(str));
DBG ("fake_productNumber: %s\n",str);
bzero(tmp,sizeof(tmp));
if (rand_week < 10) {
snprintf(tmp,sizeof(tmp),"0%d",rand_week);
snprintf(tmp, sizeof(tmp),"0%d",rand_week);
strlcpy (str, tmp, sizeof(str));
} else if (rand_week < 100) { // avoid overflow in case random return a number >= 100
snprintf(tmp,sizeof(tmp),"%d",rand_week);
snprintf(tmp, sizeof(tmp),"%d",rand_week);
strlcpy (str, tmp, sizeof(str));
}
int rand_year ;
rand_year = arc4random_unirange(0,9);
// Append all charaters to the string
char tmp[2];
bzero(tmp,sizeof(tmp));
if (rand_year < 10) {
snprintf(tmp,sizeof(tmp),"%d",rand_year);
snprintf(tmp, sizeof(tmp),"%d",rand_year);
strlcpy (str, tmp, sizeof(str));
}
int rand_country ;
rand_country = arc4random_unirange(0,(sizeof(sm_country_list) / sizeof(sm_country_list[0]))-1);
strlcpy (str, sm_country_list[rand_country].code,strlen(sm_country_list[rand_country].code)+1);
DBG ("fake_country: %s (%s)\n",str,sm_country_list[rand_country].info);
return str;
}
const char* sm_search_str(const SMStrEntryPair*sm_defaults, const char * key)
{
int i;
for (i=0; sm_defaults[i].key[0]; i++) {
if (!strcmp (sm_defaults[i].key, key)) {
return sm_defaults[i].value;
}
}
// Shouldn't happen
printf ("Error: no default for %s known\n", key);
return "";
}
const char* sm_get_defstr(const char * key, int table_num)
{
const SMStrEntryPair*sm_defaults;
getBoolForKey(kSMBIOSRandomSerial, &randomSerial, DEFAULT_BOOT_CONFIG) ;
if ( randomSerial ) // useless
strlcpy (fake_serial,sm_get_random_country(), strlen(sm_get_random_country())+1);
else
strlcpy (fake_serial,sm_search_str(sm_chosen, "SMserialProductCountry"), strlen(sm_search_str(sm_chosen, "SMserialProductCountry"))+1);
strlcpy (fake_serial,sm_get_random_country(), strlen(sm_get_random_country())+1);
else
strlcpy (fake_serial,sm_search_str(sm_chosen, "SMserialProductCountry"), strlen(sm_search_str(sm_chosen, "SMserialProductCountry"))+1);
if ( randomSerial ) // useless
strlcat (fake_serial,sm_get_random_year(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialYear"),sizeof(fake_serial));
if ( randomSerial ) // useless
strlcat(fake_serial,sm_get_random_week(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialWeek"),sizeof(fake_serial));
if ( randomSerial )
strlcat (fake_serial,sm_get_random_productNumber(),sizeof(fake_serial));
else
strlcat (fake_serial,sm_search_str(sm_chosen, "SMserialProductNumber"),sizeof(fake_serial));
strlcat(fake_serial, sm_search_str(sm_chosen, "SMserialModel"),sizeof(fake_serial));
if ( randomSerial ) // useless
strcat (fake_serial,sm_get_random_year());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialYear"));
if ( randomSerial ) // useless
strcat (fake_serial,sm_get_random_week());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialWeek"));
if ( randomSerial )
strcat (fake_serial,sm_get_random_productNumber());
else
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialProductNumber"));
strcat (fake_serial,sm_search_str(sm_chosen, "SMserialModel"));
serial_done = true;
if ( randomSerial )
branches/cparm/i386/modules/Memory/spd.c
392392
393393
394394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
409412
410413
411414
}
static struct smbus_controllers_t smbus_controllers[] = {
{0x8086, 0x269B, "ESB2", read_smb_intel },
{0x8086, 0x25A4, "6300ESB", read_smb_intel },
{0x8086, 0x24C3, "ICH4", read_smb_intel },
{0x8086, 0x24D3, "ICH5", read_smb_intel },
{0x8086, 0x266A, "ICH6", read_smb_intel },
{0x8086, 0x27DA, "ICH7", read_smb_intel },
{0x8086, 0x283E, "ICH8", read_smb_intel },
{0x8086, 0x2930, "ICH9", read_smb_intel },
{0x8086, 0x3A30, "ICH10R", read_smb_intel },
{0x8086, 0x3A60, "ICH10B", read_smb_intel },
{0x8086, 0x3B30, "P55", read_smb_intel },
{0x8086, 0x5032, "EP80579", read_smb_intel }
{0x8086, 0x269B, "ESB2",read_smb_intel },
{0x8086, 0x25A4, "6300ESB",read_smb_intel },
{0x8086, 0x24C3, "ICH4",read_smb_intel },
{0x8086, 0x24D3, "ICH5",read_smb_intel },
{0x8086, 0x266A, "ICH6",read_smb_intel },
{0x8086, 0x27DA, "ICH7",read_smb_intel },
{0x8086, 0x283E, "ICH8",read_smb_intel },
{0x8086, 0x2930, "ICH9",read_smb_intel },
{0x8086, 0x3A30, "ICH10R",read_smb_intel },
{0x8086, 0x3A60, "ICH10B",read_smb_intel },
{0x8086, 0x3B30, "5 Series",read_smb_intel },
{0x8086, 0x1C22, "6 Series",read_smb_intel },
{0x8086, 0x1E22, "7 Series",read_smb_intel },
{0x8086, 0x5032, "EP80579",read_smb_intel },
{0x8086, 0x1D22, "X79 Series",read_smb_intel },
};
bool is_smbus_controller(pci_dt_t* pci_dt)

Archive Download the corresponding diff file

Revision: 2057