diff options
Diffstat (limited to 'drivers/video/aty/atyfb_base.c')
-rw-r--r-- | drivers/video/aty/atyfb_base.c | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index bfb583132efe..28d17b4b6e13 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -380,11 +380,12 @@ static struct { | |||
380 | #ifdef CONFIG_FB_ATY_CT | 380 | #ifdef CONFIG_FB_ATY_CT |
381 | { PCI_CHIP_MACH64CT, "ATI264CT (Mach64 CT)", 135, 60, 60, 0, ATI_CHIP_264CT }, | 381 | { PCI_CHIP_MACH64CT, "ATI264CT (Mach64 CT)", 135, 60, 60, 0, ATI_CHIP_264CT }, |
382 | { PCI_CHIP_MACH64ET, "ATI264ET (Mach64 ET)", 135, 60, 60, 0, ATI_CHIP_264ET }, | 382 | { PCI_CHIP_MACH64ET, "ATI264ET (Mach64 ET)", 135, 60, 60, 0, ATI_CHIP_264ET }, |
383 | { PCI_CHIP_MACH64VT, "ATI264VT? (Mach64 VT)", 170, 67, 67, 80, ATI_CHIP_264VT }, | 383 | |
384 | { PCI_CHIP_MACH64VT, "ATI264VT (Mach64 VT)", 170, 67, 67, 80, ATI_CHIP_264VT }, | ||
384 | { PCI_CHIP_MACH64GT, "3D RAGE (Mach64 GT)", 135, 63, 63, 80, ATI_CHIP_264GT }, | 385 | { PCI_CHIP_MACH64GT, "3D RAGE (Mach64 GT)", 135, 63, 63, 80, ATI_CHIP_264GT }, |
385 | /* FIXME { ...ATI_264GU, maybe ATI_CHIP_264GTDVD }, */ | 386 | |
386 | { PCI_CHIP_MACH64GU, "3D RAGE II+ (Mach64 GTB)", 200, 67, 67, 100, ATI_CHIP_264GTB }, | 387 | { PCI_CHIP_MACH64VU, "ATI264VT3 (Mach64 VU)", 200, 67, 67, 80, ATI_CHIP_264VT3 }, |
387 | { PCI_CHIP_MACH64VU, "ATI264VTB (Mach64 VU)", 200, 67, 67, 80, ATI_CHIP_264VT3 }, | 388 | { PCI_CHIP_MACH64GU, "3D RAGE II+ (Mach64 GU)", 200, 67, 67, 100, ATI_CHIP_264GTB }, |
388 | 389 | ||
389 | { PCI_CHIP_MACH64LT, "3D RAGE LT (Mach64 LT)", 135, 63, 63, 0, ATI_CHIP_264LT }, | 390 | { PCI_CHIP_MACH64LT, "3D RAGE LT (Mach64 LT)", 135, 63, 63, 0, ATI_CHIP_264LT }, |
390 | /* FIXME chipset maybe ATI_CHIP_264LTPRO ? */ | 391 | /* FIXME chipset maybe ATI_CHIP_264LTPRO ? */ |
@@ -460,44 +461,63 @@ static int __devinit correct_chipset(struct atyfb_par *par) | |||
460 | #endif | 461 | #endif |
461 | #ifdef CONFIG_FB_ATY_CT | 462 | #ifdef CONFIG_FB_ATY_CT |
462 | case PCI_CHIP_MACH64VT: | 463 | case PCI_CHIP_MACH64VT: |
463 | rev &= 0xc7; | 464 | switch (rev & 0x07) { |
464 | if(rev == 0x00) { | 465 | case 0x00: |
465 | name = "ATI264VTA3 (Mach64 VT)"; | 466 | switch (rev & 0xc0) { |
466 | par->pll_limits.pll_max = 170; | 467 | case 0x00: |
467 | par->pll_limits.mclk = 67; | 468 | name = "ATI264VT (A3) (Mach64 VT)"; |
468 | par->pll_limits.xclk = 67; | 469 | par->pll_limits.pll_max = 170; |
469 | par->pll_limits.ecp_max = 80; | 470 | par->pll_limits.mclk = 67; |
470 | par->features = ATI_CHIP_264VT; | 471 | par->pll_limits.xclk = 67; |
471 | } else if(rev == 0x40) { | 472 | par->pll_limits.ecp_max = 80; |
472 | name = "ATI264VTA4 (Mach64 VT)"; | 473 | par->features = ATI_CHIP_264VT; |
474 | break; | ||
475 | case 0x40: | ||
476 | name = "ATI264VT2 (A4) (Mach64 VT)"; | ||
477 | par->pll_limits.pll_max = 200; | ||
478 | par->pll_limits.mclk = 67; | ||
479 | par->pll_limits.xclk = 67; | ||
480 | par->pll_limits.ecp_max = 80; | ||
481 | par->features = ATI_CHIP_264VT | M64F_MAGIC_POSTDIV; | ||
482 | break; | ||
483 | } | ||
484 | break; | ||
485 | case 0x01: | ||
486 | name = "ATI264VT3 (B1) (Mach64 VT)"; | ||
473 | par->pll_limits.pll_max = 200; | 487 | par->pll_limits.pll_max = 200; |
474 | par->pll_limits.mclk = 67; | 488 | par->pll_limits.mclk = 67; |
475 | par->pll_limits.xclk = 67; | 489 | par->pll_limits.xclk = 67; |
476 | par->pll_limits.ecp_max = 80; | 490 | par->pll_limits.ecp_max = 80; |
477 | par->features = ATI_CHIP_264VT | M64F_MAGIC_POSTDIV; | 491 | par->features = ATI_CHIP_264VTB; |
478 | } else { | 492 | break; |
479 | name = "ATI264VTB (Mach64 VT)"; | 493 | case 0x02: |
494 | name = "ATI264VT3 (B2) (Mach64 VT)"; | ||
480 | par->pll_limits.pll_max = 200; | 495 | par->pll_limits.pll_max = 200; |
481 | par->pll_limits.mclk = 67; | 496 | par->pll_limits.mclk = 67; |
482 | par->pll_limits.xclk = 67; | 497 | par->pll_limits.xclk = 67; |
483 | par->pll_limits.ecp_max = 80; | 498 | par->pll_limits.ecp_max = 80; |
484 | par->features = ATI_CHIP_264VTB; | 499 | par->features = ATI_CHIP_264VT3; |
500 | break; | ||
485 | } | 501 | } |
486 | break; | 502 | break; |
487 | case PCI_CHIP_MACH64GT: | 503 | case PCI_CHIP_MACH64GT: |
488 | rev &= 0x07; | 504 | switch (rev & 0x07) { |
489 | if(rev == 0x01) { | 505 | case 0x01: |
506 | name = "3D RAGE II (Mach64 GT)"; | ||
490 | par->pll_limits.pll_max = 170; | 507 | par->pll_limits.pll_max = 170; |
491 | par->pll_limits.mclk = 67; | 508 | par->pll_limits.mclk = 67; |
492 | par->pll_limits.xclk = 67; | 509 | par->pll_limits.xclk = 67; |
493 | par->pll_limits.ecp_max = 80; | 510 | par->pll_limits.ecp_max = 80; |
494 | par->features = ATI_CHIP_264GTB; | 511 | par->features = ATI_CHIP_264GTB; |
495 | } else if(rev == 0x02) { | 512 | break; |
513 | case 0x02: | ||
514 | name = "3D RAGE II+ (Mach64 GT)"; | ||
496 | par->pll_limits.pll_max = 200; | 515 | par->pll_limits.pll_max = 200; |
497 | par->pll_limits.mclk = 67; | 516 | par->pll_limits.mclk = 67; |
498 | par->pll_limits.xclk = 67; | 517 | par->pll_limits.xclk = 67; |
499 | par->pll_limits.ecp_max = 100; | 518 | par->pll_limits.ecp_max = 100; |
500 | par->features = ATI_CHIP_264GTB; | 519 | par->features = ATI_CHIP_264GTB; |
520 | break; | ||
501 | } | 521 | } |
502 | break; | 522 | break; |
503 | #endif | 523 | #endif |