summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgareth <gareth>2000-06-12 15:52:35 +0000
committergareth <gareth>2000-06-12 15:52:35 +0000
commite981f6ce7b406e4f1fc3215628cd6b6e30ce6889 (patch)
tree9b8cd79cb99aa2840df5c93c07f83059e2f742be
parent81a3d784f8ce3800cb6eca1a6a61df6397020f74 (diff)
Merging the ati-4-1-0 branch onto the trunk.ati-4-1-0-20000613-merge
-rw-r--r--xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h1334
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h31
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c284
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h92
4 files changed, 1085 insertions, 656 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h b/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
index 084bfc7dd..c6e6c889a 100644
--- a/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
+++ b/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.39 1999/08/29 12:42:55 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h,v 1.51 2000/02/24 20:39:14 dawes Exp $ */
/*
* PCI Probe
*
@@ -169,17 +169,36 @@
#define PCI_CHIP_MACH64GB 0x4742
#define PCI_CHIP_MACH64GD 0x4744
#define PCI_CHIP_MACH64GI 0x4749
+#define PCI_CHIP_MACH64GL 0x474C
+#define PCI_CHIP_MACH64GM 0x474D
+#define PCI_CHIP_MACH64GN 0x474E
+#define PCI_CHIP_MACH64GO 0x474F
#define PCI_CHIP_MACH64GP 0x4750
#define PCI_CHIP_MACH64GQ 0x4751
+#define PCI_CHIP_MACH64GR 0x4752
+#define PCI_CHIP_MACH64GS 0x4753
#define PCI_CHIP_MACH64GT 0x4754
#define PCI_CHIP_MACH64GU 0x4755
+#define PCI_CHIP_MACH64GV 0x4756
+#define PCI_CHIP_MACH64GW 0x4757
#define PCI_CHIP_MACH64GX 0x4758
#define PCI_CHIP_MACH64GZ 0x475A
#define PCI_CHIP_MACH64LB 0x4C42
#define PCI_CHIP_MACH64LD 0x4C44
+#define PCI_CHIP_RAGE128LE 0x4C45
+#define PCI_CHIP_RAGE128LF 0x4C46
#define PCI_CHIP_MACH64LG 0x4C47
#define PCI_CHIP_MACH64LI 0x4C49
+#define PCI_CHIP_MACH64LM 0x4C4D
+#define PCI_CHIP_MACH64LN 0x4C4E
#define PCI_CHIP_MACH64LP 0x4C50
+#define PCI_CHIP_MACH64LR 0x4C52
+#define PCI_CHIP_MACH64LS 0x4C53
+#define PCI_CHIP_RAGE128PF 0x5046
+#define PCI_CHIP_RAGE128RE 0x5245
+#define PCI_CHIP_RAGE128RF 0x5246
+#define PCI_CHIP_RAGE128RK 0x524B
+#define PCI_CHIP_RAGE128RL 0x524C
#define PCI_CHIP_MACH64VT 0x5654
#define PCI_CHIP_MACH64VU 0x5655
#define PCI_CHIP_MACH64VV 0x5656
@@ -268,6 +287,7 @@
#define PCI_CHIP_9440 0x9440
#define PCI_CHIP_9520 0x9520
#define PCI_CHIP_9525 0x9525
+#define PCI_CHIP_9540 0x9540
#define PCI_CHIP_9660 0x9660
#define PCI_CHIP_9750 0x9750
#define PCI_CHIP_9850 0x9850
@@ -333,6 +353,9 @@
#define PCI_CHIP_SIS530 0x6306
#define PCI_CHIP_SIS6326 0x6326
#define PCI_CHIP_SIS7001 0x7001
+#define PCI_CHIP_SIS300 0x0300
+#define PCI_CHIP_SIS630 0x6300
+#define PCI_CHIP_SIS540 0x5300
/* HP */
#define PCI_CHIP_J2585A 0x1030
@@ -404,6 +427,9 @@
#define PCI_CHIP_VTNT2 0x002C
#define PCI_CHIP_UVTNT2 0x002D
#define PCI_CHIP_ITNT2 0x00A0
+#define PCI_CHIP_GEFORCE256 0x0100
+#define PCI_CHIP_GEFORCEDDR 0x0101
+#define PCI_CHIP_QUADRO 0x0103
/* NVIDIA & SGS */
#define PCI_CHIP_RIVA128 0x0018
@@ -412,6 +438,7 @@
#define PCI_CHIP_AP6410 0x3210
#define PCI_CHIP_AP6422 0x6422
#define PCI_CHIP_AT24 0x6424
+#define PCI_CHIP_AT3D 0x643D
/* 3Dfx Interactive */
#define PCI_CHIP_VOODOO_GRAPHICS 0x0001
@@ -450,10 +477,13 @@
#define PCI_CHIP_TRIO64V2_DXGX 0x8901
#define PCI_CHIP_PLATO_PX 0x8902
#define PCI_CHIP_Trio3D 0x8904
+#define PCI_CHIP_Trio3D_2X 0x8A13
#define PCI_CHIP_VIRGE_DXGX 0x8A01
#define PCI_CHIP_VIRGE_GX2 0x8A10
#define PCI_CHIP_Savage3D 0x8A20
#define PCI_CHIP_Savage3D_MV 0x8A21
+#define PCI_CHIP_Savage4 0x8A22
+#define PCI_CHIP_Savage2000 0x9102
#define PCI_CHIP_VIRGE_MX 0x8C01
#define PCI_CHIP_VIRGE_MXPLUS 0x8C01
#define PCI_CHIP_VIRGE_MXP 0x8C03
@@ -482,10 +512,9 @@
* first the VendorId - VendorName mapping
*/
extern SymTabPtr xf86PCIVendorNameInfo;
-extern SymTabRec xf86PCIVendorNameInfoData[];
#ifdef INIT_PCI_VENDOR_NAME_INFO
-SymTabRec xf86PCIVendorNameInfoData[] = {
+static SymTabRec xf86PCIVendorNameInfoData[] = {
{PCI_VENDOR_REAL3D, "Real 3D"},
{PCI_VENDOR_COMPAQ, "Compaq"},
{PCI_VENDOR_NCR_1, "NCR"},
@@ -600,688 +629,719 @@ typedef struct {
struct pciDevice {
unsigned short DeviceID;
char *DeviceName;
+ CARD16 class;
} Device[MAX_DEV_PER_VENDOR];
} pciVendorDeviceInfo;
extern pciVendorDeviceInfo* xf86PCIVendorInfo;
-extern pciVendorDeviceInfo xf86PCIVendorInfoData[];
#ifdef INIT_PCI_VENDOR_INFO
-pciVendorDeviceInfo xf86PCIVendorInfoData[] = {
+static pciVendorDeviceInfo xf86PCIVendorInfoData[] = {
{PCI_VENDOR_REAL3D, {
- {PCI_CHIP_I740_PCI, "i740 (PCI)" },
- {0x0000, NULL}}},
+ {PCI_CHIP_I740_PCI, "i740 (PCI)",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_COMPAQ, {
- {0x3033, "QVision 1280/p" },
- {0xae10, "Smart-2/P RAID Controller" },
- {0xae32, "Netellignet 10/100" },
- {0xae34, "Netellignet 10" },
- {0xae35, "NetFlex 3" },
- {0xae40, "Netellignet 10/100 Dual" },
- {0xae43, "Netellignet 10/100 ProLiant" },
- {0xb011, "Netellignet 10/100 Integrated" },
- {0xf130, "ThunderLAN" },
- {0xf150, "NetFlex 3 BNC" },
- {0x0000, NULL}}},
+ {0x3033, "QVision 1280/p",0 },
+ {0xae10, "Smart-2/P RAID Controller",0},
+ {0xae32, "Netellignet 10/100",0 },
+ {0xae34, "Netellignet 10",0 },
+ {0xae35, "NetFlex 3",0 },
+ {0xae40, "Netellignet 10/100 Dual",0 },
+ {0xae43, "Netellignet 10/100 ProLiant",0 },
+ {0xb011, "Netellignet 10/100 Integrated",0 },
+ {0xf130, "ThunderLAN",0 },
+ {0xf150, "NetFlex 3 BNC",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_NCR_1, {
- {PCI_CHIP_53C810, "53c810"},
- {PCI_CHIP_53C820, "53c820"},
- {PCI_CHIP_53C825, "53c825"},
- {PCI_CHIP_53C815, "53c815"},
- {PCI_CHIP_53C810AP, "53c810AP"},
- {PCI_CHIP_53C860, "53c860"},
- {PCI_CHIP_53C896, "53c896"},
- {PCI_CHIP_53C895, "53c895"},
- {PCI_CHIP_53C885, "53c885"},
- {PCI_CHIP_53C875, "53c875"},
- {PCI_CHIP_53C875J, "53c875J"},
- {0x0000, NULL}}},
+ {PCI_CHIP_53C810, "53c810",0},
+ {PCI_CHIP_53C820, "53c820",0},
+ {PCI_CHIP_53C825, "53c825",0},
+ {PCI_CHIP_53C815, "53c815",0},
+ {PCI_CHIP_53C810AP, "53c810AP",0},
+ {PCI_CHIP_53C860, "53c860",0},
+ {PCI_CHIP_53C896, "53c896",0},
+ {PCI_CHIP_53C895, "53c895",0},
+ {PCI_CHIP_53C885, "53c885",0},
+ {PCI_CHIP_53C875, "53c875",0},
+ {PCI_CHIP_53C875J, "53c875J",0},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_ATI, {
- {PCI_CHIP_MACH32, "Mach32"},
- {PCI_CHIP_MACH64CT, "Mach64 CT"},
- {PCI_CHIP_MACH64CX, "Mach64 CX"},
- {PCI_CHIP_MACH64ET, "Mach64 ET"},
- {PCI_CHIP_MACH64GB, "Mach64 GB"},
- {PCI_CHIP_MACH64GD, "Mach64 GD"},
- {PCI_CHIP_MACH64GI, "Mach64 GI"},
- {PCI_CHIP_MACH64GP, "Mach64 GP"},
- {PCI_CHIP_MACH64GQ, "Mach64 GQ"},
- {PCI_CHIP_MACH64GT, "Mach64 GT"},
- {PCI_CHIP_MACH64GU, "Mach64 GT"},
- {PCI_CHIP_MACH64GX, "Mach64 GX"},
- {PCI_CHIP_MACH64GZ, "Mach64 GZ"},
- {PCI_CHIP_MACH64LB, "Mach64 LB"},
- {PCI_CHIP_MACH64LD, "Mach64 LD"},
- {PCI_CHIP_MACH64LG, "Mach64 LG"},
- {PCI_CHIP_MACH64LI, "Mach64 LI"},
- {PCI_CHIP_MACH64LP, "Mach64 LP"},
- {PCI_CHIP_MACH64VT, "Mach64 VT"},
- {PCI_CHIP_MACH64VU, "Mach64 VU"},
- {PCI_CHIP_MACH64VV, "Mach64 VV"},
- {0x0000, NULL}}},
+ {PCI_CHIP_MACH32, "Mach32",0},
+ {PCI_CHIP_MACH64CT, "Mach64 CT",0},
+ {PCI_CHIP_MACH64CX, "Mach64 CX",0},
+ {PCI_CHIP_MACH64ET, "Mach64 ET",0},
+ {PCI_CHIP_MACH64GB, "Mach64 GB",0},
+ {PCI_CHIP_MACH64GD, "Mach64 GD",0},
+ {PCI_CHIP_MACH64GI, "Mach64 GI",0},
+ {PCI_CHIP_MACH64GL, "Mach64 GL",0},
+ {PCI_CHIP_MACH64GM, "Mach64 GM",0},
+ {PCI_CHIP_MACH64GN, "Mach64 GN",0},
+ {PCI_CHIP_MACH64GO, "Mach64 GO",0},
+ {PCI_CHIP_MACH64GP, "Mach64 GP",0},
+ {PCI_CHIP_MACH64GQ, "Mach64 GQ",0},
+ {PCI_CHIP_MACH64GR, "Mach64 GR",0},
+ {PCI_CHIP_MACH64GS, "Mach64 GS",0},
+ {PCI_CHIP_MACH64GT, "Mach64 GT",0},
+ {PCI_CHIP_MACH64GU, "Mach64 GU",0},
+ {PCI_CHIP_MACH64GV, "Mach64 GV",0},
+ {PCI_CHIP_MACH64GW, "Mach64 GW",0},
+ {PCI_CHIP_MACH64GX, "Mach64 GX",0},
+ {PCI_CHIP_MACH64GZ, "Mach64 GZ",0},
+ {PCI_CHIP_MACH64LB, "Mach64 LB",0},
+ {PCI_CHIP_MACH64LD, "Mach64 LD",0},
+ {PCI_CHIP_RAGE128LE, "Rage 128 Mobility LE",0},
+ {PCI_CHIP_RAGE128LF, "Rage 128 Mobility LF",0},
+ {PCI_CHIP_MACH64LG, "Mach64 LG",0},
+ {PCI_CHIP_MACH64LI, "Mach64 LI",0},
+ {PCI_CHIP_MACH64LM, "Mach64 LM",0},
+ {PCI_CHIP_MACH64LN, "Mach64 LN",0},
+ {PCI_CHIP_MACH64LP, "Mach64 LP",0},
+ {PCI_CHIP_MACH64LR, "Mach64 LR",0},
+ {PCI_CHIP_MACH64LS, "Mach64 LS",0},
+ {PCI_CHIP_RAGE128PF, "Rage 128 Pro PF",0},
+ {PCI_CHIP_RAGE128RE, "Rage 128 RE",0},
+ {PCI_CHIP_RAGE128RF, "Rage 128 RF",0},
+ {PCI_CHIP_RAGE128RK, "Rage 128 RK",0},
+ {PCI_CHIP_RAGE128RL, "Rage 128 RL",0},
+ {PCI_CHIP_MACH64VT, "Mach64 VT",0},
+ {PCI_CHIP_MACH64VU, "Mach64 VU",0},
+ {PCI_CHIP_MACH64VV, "Mach64 VV",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_VLSI, {
- {0x0005, "82C592-FC1" },
- {0x0006, "82C593-FC1" },
- {0x0007, "82C594-AFC2" },
- {0x0009, "82C597-AFC2" },
- {0x000C, "82C541 Lynx" },
- {0x000D, "82C543 Lynx ISA" },
- {0x0702, "VAS96011" },
- {0x0000, NULL}}},
+ {0x0005, "82C592-FC1",0 },
+ {0x0006, "82C593-FC1",0 },
+ {0x0007, "82C594-AFC2",0 },
+ {0x0009, "82C597-AFC2",0 },
+ {0x000C, "82C541 Lynx",0 },
+ {0x000D, "82C543 Lynx ISA",0 },
+ {0x0702, "VAS96011",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_AVANCE, {
- {PCI_CHIP_ALG2301, "ALG2301"},
- {0x0000, NULL}}},
+ {PCI_CHIP_ALG2301, "ALG2301",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_NS, {
- {0x0002, "87415" },
- {0xD001, "87410" },
- {0x0000, NULL}}},
+ {0x0002, "87415",0 },
+ {0xD001, "87410",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_TSENG, {
- {PCI_CHIP_ET4000_W32P_A, "ET4000W32P revA"},
- {PCI_CHIP_ET4000_W32P_B, "ET4000W32P revB"},
- {PCI_CHIP_ET4000_W32P_C, "ET4000W32P revC"},
- {PCI_CHIP_ET4000_W32P_D, "ET4000W32P revD"},
- {PCI_CHIP_ET6000, "ET6000/6100"},
- {PCI_CHIP_ET6300, "ET6300"},
- {0x0000, NULL}}},
+ {PCI_CHIP_ET4000_W32P_A, "ET4000W32P revA",0},
+ {PCI_CHIP_ET4000_W32P_B, "ET4000W32P revB",0},
+ {PCI_CHIP_ET4000_W32P_C, "ET4000W32P revC",0},
+ {PCI_CHIP_ET4000_W32P_D, "ET4000W32P revD",0},
+ {PCI_CHIP_ET6000, "ET6000/6100",0},
+ {PCI_CHIP_ET6300, "ET6300",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_WEITEK, {
- {PCI_CHIP_P9000, "P9000"},
- {PCI_CHIP_P9100, "P9100"},
- {0x0000, NULL}}},
+ {PCI_CHIP_P9000, "P9000",0},
+ {PCI_CHIP_P9100, "P9100",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_DIGITAL, {
- {PCI_CHIP_DEC21030, "21030/TGA"},
- {0x0001, "DC21050 PCI-PCI Bridge",
- /* print_pcibridge} */ },
- {0x0002, "DC21040 10Mb/s Ethernet" },
- {0x0009, "DC21140 10/100 Mb/s Ethernet" },
- {0x000D, "TGA2" },
- {0x000F, "DEFPA (FDDI PCI)" },
- {0x0014, "DC21041 10Mb/s Ethernet Plus" },
- {0x0019, "DC21142 10/100 Mb/s Ethernet" },
- {0x0021, "DC21052" },
- {0x0024, "DC21152" },
- {0x0000, NULL}}},
+ {PCI_CHIP_DEC21030, "21030/TGA",0},
+ {0x0001, "DC21050 PCI-PCI Bridge"
+ /* print_pcibridge} */,0 },
+ {0x0002, "DC21040 10Mb/s Ethernet",0 },
+ {0x0009, "DC21140 10/100 Mb/s Ethernet",0 },
+ {0x000D, "TGA2",0 },
+ {0x000F, "DEFPA (FDDI PCI)",0 },
+ {0x0014, "DC21041 10Mb/s Ethernet Plus",0 },
+ {0x0019, "DC21142 10/100 Mb/s Ethernet",0 },
+ {0x0021, "DC21052",0 },
+ {0x0024, "DC21152",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CIRRUS, {
- {PCI_CHIP_GD5430, "GD5430"},
- {PCI_CHIP_GD5434_4, "GD5434"},
- {PCI_CHIP_GD5434_8, "GD5434"},
- {PCI_CHIP_GD5436, "GD5436"},
- {PCI_CHIP_GD5446, "GD5446"},
- {PCI_CHIP_GD5480, "GD5480"},
- {PCI_CHIP_GD5462, "GD5462"},
- {PCI_CHIP_GD5464, "GD5464"},
- {PCI_CHIP_GD5464BD, "GD5464BD"},
- {PCI_CHIP_GD5465, "GD5465"},
- {PCI_CHIP_GD7541, "GD7541"},
- {PCI_CHIP_GD7542, "GD7542"},
- {PCI_CHIP_GD7543, "GD7543"},
- {PCI_CHIP_GD7548, "GD7548"},
- {PCI_CHIP_GD7555, "GD7555"},
+ {PCI_CHIP_GD5430, "GD5430",0},
+ {PCI_CHIP_GD5434_4, "GD5434",0},
+ {PCI_CHIP_GD5434_8, "GD5434",0},
+ {PCI_CHIP_GD5436, "GD5436",0},
+ {PCI_CHIP_GD5446, "GD5446",0},
+ {PCI_CHIP_GD5480, "GD5480",0},
+ {PCI_CHIP_GD5462, "GD5462",0},
+ {PCI_CHIP_GD5464, "GD5464",0},
+ {PCI_CHIP_GD5464BD, "GD5464BD",0},
+ {PCI_CHIP_GD5465, "GD5465",0},
+ {PCI_CHIP_GD7541, "GD7541",0},
+ {PCI_CHIP_GD7542, "GD7542",0},
+ {PCI_CHIP_GD7543, "GD7543",0},
+ {PCI_CHIP_GD7548, "GD7548",0},
+ {PCI_CHIP_GD7555, "GD7555",0},
#ifdef VENDOR_INCLUDE_NONVIDEO
- {0x6001, "CS4236B/CS4611 Audio" },
+ {0x6001, "CS4236B/CS4611 Audio" ,0},
#endif
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_IBM, {
- {0x000A, "Fire Coral" },
- {0x0018, "Token Ring" },
- {0x001D, "82G2675" },
- {0x0022, "82351 pci-pci bridge" },
- {0x0000, NULL}}},
+ {0x000A, "Fire Coral",0 },
+ {0x0018, "Token Ring",0 },
+ {0x001D, "82G2675",0 },
+ {0x0022, "82351 pci-pci bridge",0 },
+ {0x0000, NULL,0}}},
#endif
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_NCR_2, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_WD, {
- {0x3296, "WD 7197" },
- {0x0000, NULL}}},
+ {0x3296, "WD 7197",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_AMD, {
- {0x2000, "79C970 Lance" },
- {0x2020, "53C974 SCSI" },
- {0x0000, NULL}}},
+ {0x2000, "79C970 Lance",0 },
+ {0x2020, "53C974 SCSI",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_TRIDENT, {
- {PCI_CHIP_9320, "TGUI 9320"},
- {PCI_CHIP_9420, "TGUI 9420"},
- {PCI_CHIP_9440, "TGUI 9440"},
- {PCI_CHIP_9660, "TGUI 96xx"},
- {PCI_CHIP_9388, "Cyber 9388"},
- {PCI_CHIP_9397, "Cyber 9397"},
- {PCI_CHIP_939A, "Cyber 939A/DVD"},
- {PCI_CHIP_9520, "Cyber 9520"},
- {PCI_CHIP_9525, "Cyber 9525/DVD"},
- {PCI_CHIP_9750, "3DImage975"},
- {PCI_CHIP_9850, "3DImage985"},
- {PCI_CHIP_9880, "Blade3D"},
- {PCI_CHIP_8400, "CyberBlade/i7"},
- {PCI_CHIP_8420, "CyberBlade/DSTN/i7"},
- {PCI_CHIP_8500, "CyberBlade/i1"},
- {0x0000, NULL}}},
+ {PCI_CHIP_9320, "TGUI 9320",0},
+ {PCI_CHIP_9420, "TGUI 9420",0},
+ {PCI_CHIP_9440, "TGUI 9440",0},
+ {PCI_CHIP_9660, "TGUI 96xx",0},
+ {PCI_CHIP_9388, "Cyber 9388",0},
+ {PCI_CHIP_9397, "Cyber 9397",0},
+ {PCI_CHIP_939A, "Cyber 939A/DVD",0},
+ {PCI_CHIP_9520, "Cyber 9520",0},
+ {PCI_CHIP_9525, "Cyber 9525/DVD",0},
+ {PCI_CHIP_9540, "Cyber 9540",0},
+ {PCI_CHIP_9750, "3DImage975",0},
+ {PCI_CHIP_9850, "3DImage985",0},
+ {PCI_CHIP_9880, "Blade3D",0},
+ {PCI_CHIP_8400, "CyberBlade/i7",0},
+ {PCI_CHIP_8420, "CyberBlade/DSTN/i7",0},
+ {PCI_CHIP_8500, "CyberBlade/i1",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_ALI, {
- {0x1435, "M1435"},
- {0x0000, NULL}}},
+ {0x1435, "M1435",0},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_MATROX, {
- {PCI_CHIP_MGA2085, "MGA 2085PX"},
- {PCI_CHIP_MGA2064, "MGA 2064W"},
- {PCI_CHIP_MGA1064, "MGA 1064SG"},
- {PCI_CHIP_MGA2164, "MGA 2164W"},
- {PCI_CHIP_MGA2164_AGP, "MGA 2164W AGP"},
- {PCI_CHIP_MGAG200_PCI, "MGA G200 PCI"},
- {PCI_CHIP_MGAG200, "MGA G200 AGP"},
- {PCI_CHIP_MGAG400, "MGA G400 AGP"},
- {PCI_CHIP_MGAG100_PCI, "MGA G100 PCI"},
- {PCI_CHIP_MGAG100, "MGA G100 AGP"},
- {0x0000, NULL}}},
+ {PCI_CHIP_MGA2085, "MGA 2085PX",0},
+ {PCI_CHIP_MGA2064, "MGA 2064W",0},
+ {PCI_CHIP_MGA1064, "MGA 1064SG",0},
+ {PCI_CHIP_MGA2164, "MGA 2164W",0},
+ {PCI_CHIP_MGA2164_AGP, "MGA 2164W AGP",0},
+ {PCI_CHIP_MGAG200_PCI, "MGA G200 PCI",0},
+ {PCI_CHIP_MGAG200, "MGA G200 AGP",0},
+ {PCI_CHIP_MGAG400, "MGA G400 AGP",0},
+ {PCI_CHIP_MGAG100_PCI, "MGA G100 PCI",0},
+ {PCI_CHIP_MGAG100, "MGA G100 AGP",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CHIPSTECH, {
- {PCI_CHIP_65545, "65545"},
- {PCI_CHIP_65548, "65548"},
- {PCI_CHIP_65550, "65550"},
- {PCI_CHIP_65554, "65554"},
- {PCI_CHIP_65555, "65555"},
- {PCI_CHIP_68554, "68554"},
- {PCI_CHIP_69000, "69000"},
- {PCI_CHIP_69030, "69030"},
- {0x0000, NULL}}},
+ {PCI_CHIP_65545, "65545",0},
+ {PCI_CHIP_65548, "65548",0},
+ {PCI_CHIP_65550, "65550",0},
+ {PCI_CHIP_65554, "65554",0},
+ {PCI_CHIP_65555, "65555",0},
+ {PCI_CHIP_68554, "68554",0},
+ {PCI_CHIP_69000, "69000",0},
+ {PCI_CHIP_69030, "69030",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_MIRO, {
- {0x5601, "ZR36050" },
- {0x0000, NULL}}},
+ {0x5601, "ZR36050",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_NEC, {
- {0x0046, "PowerVR PCX2" },
- {0x0000, NULL}}},
+ {0x0046, "PowerVR PCX2",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_FD, {
- {0x0000, "TMC-18C30 (36C70)" },
- {0x0000, NULL}}},
+ {0x0000, "TMC-18C30 (36C70)",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_SIS, {
- {PCI_CHIP_SG86C201, "SG86C201"},
- {PCI_CHIP_SG86C202, "SG86C202"},
- {PCI_CHIP_SG86C205, "SG86C205"},
- {PCI_CHIP_SG86C215, "SG86C215"},
- {PCI_CHIP_SG86C225, "SG86C225"},
- {PCI_CHIP_SIS5597, "5597"},
- {PCI_CHIP_SIS530, "530"},
- {PCI_CHIP_SIS6326, "6326"},
- {0x0000, NULL}}},
+ {PCI_CHIP_SG86C201, "SG86C201",0},
+ {PCI_CHIP_SG86C202, "SG86C202",0},
+ {PCI_CHIP_SG86C205, "SG86C205",0},
+ {PCI_CHIP_SG86C215, "SG86C215",0},
+ {PCI_CHIP_SG86C225, "SG86C225",0},
+ {PCI_CHIP_SIS5597, "5597",0},
+ {PCI_CHIP_SIS530, "530",0},
+ {PCI_CHIP_SIS6326, "6326",0},
+ {PCI_CHIP_SIS300, "300",0},
+ {PCI_CHIP_SIS630, "630",0},
+ {PCI_CHIP_SIS540, "540",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_HP, {
- {0x1030, "J2585A" },
- {0x1031, "J2585B" },
- {0x0000, NULL}}},
+ {0x1030, "J2585A",0 },
+ {0x1031, "J2585B",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_SMC_PCTECH, {
- {0x1000, "FDC 37C665/RZ1000" },
- {0x1001, "FDC /RZ1001" },
- {0x0000, NULL}}},
+ {0x1000, "FDC 37C665/RZ1000",0 },
+ {0x1001, "FDC /RZ1001",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_DPT, {
- {0xA400, "SmartCache/Raid" },
- {0x0000, NULL}}},
+ {0xA400, "SmartCache/Raid",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_SGS, {
- {PCI_CHIP_STG2000, "STG2000"},
- {PCI_CHIP_STG1764, "STG1764"},
- {0x0000, NULL}}},
+ {PCI_CHIP_STG2000, "STG2000",0},
+ {PCI_CHIP_STG1764, "STG1764",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_BUSLOGIC, {
- {PCI_CHIP_946C_01, "946C 01"},
- {PCI_CHIP_946C_10, "946C 10"},
- {PCI_CHIP_FLASH_POINT, "FlashPoint"},
- {0x0000, NULL}}},
+ {PCI_CHIP_946C_01, "946C 01",0},
+ {PCI_CHIP_946C_10, "946C 10",0},
+ {PCI_CHIP_FLASH_POINT, "FlashPoint",0},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_TI, {
- {PCI_CHIP_TI_PERMEDIA, "Permedia"},
- {PCI_CHIP_TI_PERMEDIA2, "Permedia 2"},
- {PCI_CHIP_PCI_1130, "PCI 1130"},
- {PCI_CHIP_PCI_1131, "PCI 1131"},
- {0x0000, NULL}}},
+ {PCI_CHIP_TI_PERMEDIA, "Permedia",0},
+ {PCI_CHIP_TI_PERMEDIA2, "Permedia 2",0},
+ {PCI_CHIP_PCI_1130, "PCI 1130",0},
+ {PCI_CHIP_PCI_1131, "PCI 1131",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_OAK, {
- {PCI_CHIP_OTI107, "OTI107"},
- {0x0000, NULL}}},
+ {PCI_CHIP_OTI107, "OTI107",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_WINBOND, {
- {PCI_CHIP_89C940, "89C940 NE2000-PCI"},
- {0x0000, NULL}}},
+ {PCI_CHIP_89C940, "89C940 NE2000-PCI",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_MOTOROLA, {
- {PCI_CHIP_MPC105_EAGLE, "MPC105 Eagle"},
- {PCI_CHIP_MPC105_GRACKLE,"MPC105 Grackle"},
- {PCI_CHIP_RAVEN, "Raven"},
- {0x0000, NULL}}},
+ {PCI_CHIP_MPC105_EAGLE, "MPC105 Eagle",0},
+ {PCI_CHIP_MPC105_GRACKLE,"MPC105 Grackle",0},
+ {PCI_CHIP_RAVEN, "Raven",0},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_OAK, {
- {PCI_CHIP_ULTRA_DMA, "IDE UltraDMA/33"},
- {PCI_CHIP_DC5030, "DC5030"},
- {0x0000, NULL}}},
+ {PCI_CHIP_ULTRA_DMA, "IDE UltraDMA/33",0},
+ {PCI_CHIP_DC5030, "DC5030",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_NUMNINE, {
- {PCI_CHIP_I128, "Imagine 128"},
- {PCI_CHIP_I128_2, "Imagine 128 II"},
- {PCI_CHIP_I128_T2R, "Imagine 128 T2R"},
- {PCI_CHIP_I128_T2R4, "Imagine 128 T2R4"},
- {0x0000, NULL}}},
+ {PCI_CHIP_I128, "Imagine 128",0},
+ {PCI_CHIP_I128_2, "Imagine 128 II",0},
+ {PCI_CHIP_I128_T2R, "Imagine 128 T2R",0},
+ {PCI_CHIP_I128_T2R4, "Imagine 128 T2R4",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_UMC, {
- {0x0101, "UM8673F"},
- {0x673A, "UM8886BF"},
- {0x886A, "UM8886A"},
- {0x8881, "UM8881F"},
- {0x8886, "UM8886F"},
- {0x8891, "UM8891A"},
- {0x9017, "UM9017F"},
- {0xE886, "UM8886N"},
- {0xE891, "UM8891N"},
- {0x0000, NULL}}},
+ {0x0101, "UM8673F",0},
+ {0x673A, "UM8886BF",0},
+ {0x886A, "UM8886A",0},
+ {0x8881, "UM8881F",0},
+ {0x8886, "UM8886F",0},
+ {0x8891, "UM8891A",0},
+ {0x9017, "UM9017F",0},
+ {0xE886, "UM8886N",0},
+ {0xE891, "UM8891N",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_X, {
- {0x0001, "ITT AGX016"},
- {0x0000, NULL}}},
+ {0x0001, "ITT AGX016",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_PICOP, {
- {0x0001, "PT86C52x Vesuvius" },
- {0x0000, NULL}}},
+ {0x0001, "PT86C52x Vesuvius",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_MYLEX, {
- {0x0010, "AccelRAID 250" },
- {0x0000, NULL}}},
+ {0x0010, "RAID Controller",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_APPLE, {
- {0x0001, "Bandit" },
- {0x0002, "Grand Central" },
- {0x000E, "Hydra" },
- {0x0000, NULL}}},
+ {0x0001, "Bandit",0 },
+ {0x0002, "Grand Central",0 },
+ {0x000E, "Hydra",0 },
+ {0x0000, NULL,0}}},
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_NEXGEN, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_QLOGIC, {
- {0x1020, "ISP1020" },
- {0x1022, "ISP1022" },
- {0x0000, NULL}}},
+ {0x1020, "ISP1020",0 },
+ {0x1022, "ISP1022",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_CYRIX, {
- {0x0000, "5510" },
- {0x0001, "PCI Master" },
- {0x0002, "5520" },
- {0x0100, "5530 Kahlua Legacy" },
- {0x0101, "5530 Kahlua SMI" },
- {0x0102, "5530 Kahlua IDE" },
- {0x0103, "5530 Kahlua Audio" },
- {0x0104, "5530 Kahlua Video" },
- {0x0000, NULL}}},
+ {0x0000, "5510",0 },
+ {0x0001, "PCI Master",0 },
+ {0x0002, "5520",0 },
+ {0x0100, "5530 Kahlua Legacy",0 },
+ {0x0101, "5530 Kahlua SMI",0 },
+ {0x0102, "5530 Kahlua IDE",0 },
+ {0x0103, "5530 Kahlua Audio",0 },
+ {0x0104, "5530 Kahlua Video",0 },
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_LEADTEK, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_CONTAQ, {
- {0x0600, "82C599" },
- {0xc693, "82C693" },
- {0x0000, NULL}}},
+ {0x0600, "82C599",0 },
+ {0xc693, "82C693",0 },
+ {0x0000, NULL,0}}},
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_FOREX, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_OLICOM, {
- {0x0001, "OC-3136" },
- {0x0011, "OC-2315" },
- {0x0012, "OC-2325" },
- {0x0013, "OC-2183" },
- {0x0014, "OC-2326" },
- {0x0021, "OC-6151" },
- {0x0000, NULL}}},
+ {0x0001, "OC-3136",0 },
+ {0x0011, "OC-2315",0 },
+ {0x0012, "OC-2325",0 },
+ {0x0013, "OC-2183",0 },
+ {0x0014, "OC-2326",0 },
+ {0x0021, "OC-6151",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_SUN, {
- {0x1000, "EBUS" },
- {0x1001, "Happy Meal" },
- {0x8000, "PCI Bus Module" },
- {0x0000, NULL}}},
+ {0x1000, "EBUS",0 },
+ {0x1001, "Happy Meal",0 },
+ {0x8000, "PCI Bus Module",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CMD, {
- {0x0640, "640A" },
- {0x0643, "643" },
- {0x0646, "646" },
- {0x0670, "670" },
- {0x0000, NULL}}},
+ {0x0640, "640A",0 },
+ {0x0643, "643",0 },
+ {0x0646, "646",0 },
+ {0x0670, "670",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_VISION, {
- {0x0001, "QD 8500" },
- {0x0002, "QD 8580" },
- {0x0000, NULL}}},
+ {0x0001, "QD 8500",0 },
+ {0x0002, "QD 8580",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_BROOKTREE, {
- {PCI_CHIP_BT848, "848"},
- {PCI_CHIP_BT849, "849"},
- {0x0000, NULL}}},
+ {PCI_CHIP_BT848, "848",0},
+ {PCI_CHIP_BT849, "849",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_SIERRA, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ACC, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_WINBOND_2, {
- {0x0001, "W83769F" },
- {0x0105, "SL82C105" },
- {0x0565, "W83C553" },
- {0x0000, NULL}}},
+ {0x0001, "W83769F",0 },
+ {0x0105, "SL82C105",0 },
+ {0x0565, "W83C553",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_DATABOOK, {
- {0xB106, "DB87144" },
- {0x0000, NULL}}},
+ {0xB106, "DB87144",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_3COM, {
- {0x5900, "3C590 10bT" },
- {0x5950, "3C595 100bTX" },
- {0x5951, "3C595 100bT4" },
- {0x5952, "3C595 10b-MII" },
- {0x9000, "3C900 10bTPO" },
- {0x9001, "3C900 10b Combo" },
+ {0x5900, "3C590 10bT",0 },
+ {0x5950, "3C595 100bTX",0 },
+ {0x5951, "3C595 100bT4",0 },
+ {0x5952, "3C595 10b-MII",0 },
+ {0x9000, "3C900 10bTPO",0 },
+ {0x9001, "3C900 10b Combo",0 },
/* Is it OK for 2 devices to have the same name ? */
- {0x9005, "3C900 10b Combo" },
- {0x9050, "3C905 100bTX" },
- {0x0000, NULL}}},
+ {0x9005, "3C900 10b Combo",0 },
+ {0x9050, "3C905 100bTX",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_SMC, {
- {0x0005, "9432 TX" },
- {0x0000, NULL}}},
+ {0x0005, "9432 TX",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ALI_2, {
- {0x1445, "M1445" },
- {0x1449, "M1449" },
- {0x1451, "M1451" },
- {0x1461, "M1461" },
- {0x1489, "M1489" },
- {0x1511, "M1511" },
- {0x1513, "M1513" },
- {0x1521, "M1521" },
- {0x1523, "M1523" },
- {0x1531, "M1531 Aladdin IV" },
- {0x1533, "M1533 Aladdin IV" },
- {0x5215, "M4803" },
- {0x5219, "M5219" },
- {0x5229, "M5229 TXpro" },
- {0x0000, NULL}}},
+ {0x1445, "M1445",0 },
+ {0x1449, "M1449",0 },
+ {0x1451, "M1451",0 },
+ {0x1461, "M1461",0 },
+ {0x1489, "M1489",0 },
+ {0x1511, "M1511",0 },
+ {0x1513, "M1513",0 },
+ {0x1521, "M1521",0 },
+ {0x1523, "M1523",0 },
+ {0x1531, "M1531 Aladdin IV",0 },
+ {0x1533, "M1533 Aladdin IV",0 },
+ {0x5215, "M4803",0 },
+ {0x5219, "M5219",0 },
+ {0x5229, "M5229 TXpro",0 },
+ {0x0000, NULL,0}}},
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_MITSUBISHI, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_SURECOM, {
- {0x0E34, "NE-34PCI Lan" },
- {0x0000, NULL}}},
+ {0x0E34, "NE-34PCI Lan",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_NEOMAGIC, {
- {PCI_CHIP_NM2070, "NM2070"},
- {PCI_CHIP_NM2090, "NM2090"},
- {PCI_CHIP_NM2093, "NM2093"},
- {PCI_CHIP_NM2160, "NM2160"},
- {PCI_CHIP_NM2200, "NM2200"},
- {0x0000, NULL}}},
+ {PCI_CHIP_NM2070, "NM2070",0},
+ {PCI_CHIP_NM2090, "NM2090",0},
+ {PCI_CHIP_NM2093, "NM2093",0},
+ {PCI_CHIP_NM2160, "NM2160",0},
+ {PCI_CHIP_NM2200, "NM2200",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_ASP, {
- { 0x1200, "ABP940" },
- { 0x1300, "ABP940U" },
- {0x0000, NULL}}},
+ { 0x1200, "ABP940",0 },
+ { 0x1300, "ABP940U",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CERN, {
- { 0x0001, "STAR/RD24 SCI-PCI (PMC)" },
- { 0x0002, "STAR/RD24 SCI-PCI (PMC)" },
- {0x0000, NULL}}},
+ { 0x0001, "STAR/RD24 SCI-PCI (PMC)",0 },
+ { 0x0002, "STAR/RD24 SCI-PCI (PMC)",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_NVIDIA, {
- {PCI_CHIP_NV1, "NV1"},
- {PCI_CHIP_DAC64, "DAC64"},
- {PCI_CHIP_TNT, "Riva TNT"},
- {PCI_CHIP_TNT2, "Riva TNT2"},
- {PCI_CHIP_UTNT2, "Riva Ultra TNT2"},
- {PCI_CHIP_VTNT2, "Riva Vanta"},
- {PCI_CHIP_UVTNT2, "Riva Ultra 64"},
- {PCI_CHIP_ITNT2, "Riva Integrated"},
- {0x0000, NULL}}},
+ {PCI_CHIP_NV1, "NV1",0},
+ {PCI_CHIP_DAC64, "DAC64",0},
+ {PCI_CHIP_TNT, "Riva TNT",0},
+ {PCI_CHIP_TNT2, "Riva TNT2",0},
+ {PCI_CHIP_UTNT2, "Riva Ultra TNT2",0},
+ {PCI_CHIP_VTNT2, "Riva Vanta",0},
+ {PCI_CHIP_UVTNT2, "Riva Ultra 64",0},
+ {PCI_CHIP_ITNT2, "Riva Integrated",0},
+ {PCI_CHIP_GEFORCE256, "GeForce 256",0},
+ {PCI_CHIP_GEFORCEDDR, "GeForce DDR",0},
+ {PCI_CHIP_QUADRO, "Quadro",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_IMS, {
- {0x8849, "8849" },
- {0x0000, NULL}}},
+ {0x8849, "8849",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_TEKRAM, {
- {0x690C, "DC690C" },
- {0x0000, NULL}}},
+ {0x690C, "DC690C",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_TUNDRA, {
- {0x0000, "CA91C042 Universe" },
- {0x0000, NULL}}},
+ {0x0000, "CA91C042 Universe",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_AMCC, {
- {0x8043, "Myrinet PCI (M2-PCI-32)" },
- {0x807D, "S5933 PCI44" },
- {0x809C, "S5933 Traquair HEPC3" },
- {0x0000, NULL}}},
+ {0x8043, "Myrinet PCI (M2-PCI-32)",0 },
+ {0x807D, "S5933 PCI44",0 },
+ {0x809C, "S5933 Traquair HEPC3",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_INTEGRAPHICS, {
- {0x1680, "IGA-1680" },
- {0x1682, "IGA-1682" },
- {0x0000, NULL}}},
+ {0x1680, "IGA-1680",0 },
+ {0x1682, "IGA-1682",0 },
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_REALTEC, {
- {0x8029, "8029" },
- {0x8129, "8129" },
- {0x8139, "RTL8139 Ethernet Controller" },
- {0x0000, NULL}}},
+ {0x8029, "8029",0 },
+ {0x8129, "8129",0 },
+ {0x8139, "RTL8139 Ethernet Controller",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_TRUEVISION, {
- {0x000C, "Targa 1000" },
- {0x0000, NULL}}},
+ {0x000C, "Targa 1000",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_INITIO, {
- {0x9100, "320 P" },
- {0x0000, NULL}}},
+ {0x9100, "320 P",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_VIA, {
- {0x0501, "VT 8501 MVP4 Host Bridge" },
- {0x0505, "VT 82C505" },
- {0x0561, "VT 82C505" },
- {0x0571, "VT 82C586 MVP3 IDE Bridge" },
- {0x0576, "VT 82C576 3V" },
- {0x0586, "VT 82C586 MVP3 ISA Bridge" },
- {0x0686, "VT 82C686 MVP4 ISA Bridge" },
- {0x0597, "VT 82C598 MVP3 Host Bridge" },
- {0x3038, "VT 82C586 MVP3 USB Controller" },
- {0x3040, "VT 82C586B MVP3 ACPI Bridge" },
- {0x3057, "VT 8501 MVP4 ACPI Bridge" },
- {0x3058, "VT 8501 MVP4 MultiMedia" },
- {0x3068, "VT 8501 MVP4 Modem" },
- {0x8501, "VT 8501 MVP4 PCI/AGP Bridge" },
- {0x8598, "VT 82C598 MVP3 PCI/AGP Bridge" },
- {0x0000, NULL}}},
+ {0x0501, "VT 8501 MVP4 Host Bridge",0 },
+ {0x0505, "VT 82C505",0 },
+ {0x0561, "VT 82C505",0 },
+ {0x0571, "VT 82C586 MVP3 IDE Bridge",0 },
+ {0x0576, "VT 82C576 3V",0 },
+ {0x0586, "VT 82C586 MVP3 ISA Bridge",0 },
+ {0x0686, "VT 82C686 MVP4 ISA Bridge",0 },
+ {0x0597, "VT 82C598 MVP3 Host Bridge",0 },
+ {0x3038, "VT 82C586 MVP3 USB Controller",0 },
+ {0x3040, "VT 82C586B MVP3 ACPI Bridge",0 },
+ {0x3057, "VT 8501 MVP4 ACPI Bridge",0 },
+ {0x3058, "VT 8501 MVP4 MultiMedia",0 },
+ {0x3068, "VT 8501 MVP4 Modem",0 },
+ {0x8501, "VT 8501 MVP4 PCI/AGP Bridge",0 },
+ {0x8598, "VT 82C598 MVP3 PCI/AGP Bridge",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_VORTEX, {
- {0x0001, "GDT 6000b" },
- {0x0000, NULL}}},
+ {0x0001, "GDT 6000b",0 },
+ {0x0000, NULL,0}}},
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_EF, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_FORE, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_IMAGTEC, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_PLX, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
#endif
{PCI_VENDOR_NVIDIA_SGS, {
- {PCI_CHIP_RIVA128, "Riva128"},
- {0x0000, NULL}}},
+ {PCI_CHIP_RIVA128, "Riva128",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ALLIANCE, {
- {PCI_CHIP_AP6410, "ProMotion 6410"},
- {PCI_CHIP_AP6422, "ProMotion 6422"},
- {PCI_CHIP_AT24, "ProMotion AT24"},
- {0x0000, NULL}}},
+ {PCI_CHIP_AP6410, "ProMotion 6410",0},
+ {PCI_CHIP_AP6422, "ProMotion 6422",0},
+ {PCI_CHIP_AT24, "ProMotion AT24",0},
+ {PCI_CHIP_AT3D, "ProMotion AT3D",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_VMIC, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_DIGI, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_MUTECH, {
- {0x0001, "MV1000" },
- {0x0000, NULL}}},
+ {0x0001, "MV1000",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_RENDITION, {
- {PCI_CHIP_V1000, "Verite 1000"},
- {PCI_CHIP_V2x00, "Verite 2x00"},
- {0x0000, NULL}}},
+ {PCI_CHIP_V1000, "Verite 1000",0},
+ {PCI_CHIP_V2x00, "Verite 2100/2200",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_TOSHIBA, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ZEINET, {
- {0x0001, "1221" },
- {0x0000, NULL}}},
+ {0x0001, "1221",0 },
+ {0x0000, NULL,0}}},
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_SPECIALIX, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CONTROL, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_CYCLADES, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
#endif
{PCI_VENDOR_3DFX, {
- {PCI_CHIP_VOODOO_GRAPHICS, "Voodoo Graphics"},
- {PCI_CHIP_VOODOO2, "Voodoo2"},
- {PCI_CHIP_BANSHEE, "Banshee"},
- {0x0000, NULL}}},
+ {PCI_CHIP_VOODOO_GRAPHICS, "Voodoo Graphics",0},
+ {PCI_CHIP_VOODOO2, "Voodoo2",0},
+ {PCI_CHIP_BANSHEE, "Banshee",0},
+ {PCI_CHIP_VOODOO3, "Voodoo3",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_SIGMADESIGNS, {
- {0x6401, "REALmagic64/GX (SD 6425)" },
- {0x0000, NULL}}},
+ {0x6401, "REALmagic64/GX (SD 6425)",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ENSONIQ, {
- {0x5000, "es1370 (AudioPCI)" },
- {0x1371, "es1371" },
- {0x0000, NULL}}},
+ {0x5000, "es1370 (AudioPCI)",0 },
+ {0x1371, "es1371",0 },
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INCLUDE_EMPTY_LISTS
{PCI_VENDOR_YOKOGAWA, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
#endif
#endif
{PCI_VENDOR_TRITECH, {
- {PCI_CHIP_TR25202, "Pyramid3D TR25202"},
- {0x0000, NULL}}},
+ {PCI_CHIP_TR25202, "Pyramid3D TR25202",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_NVIDIA_SGS, {
- {0x0018, "Riva128" },
- {0x0000, NULL}}},
+ {0x0018, "Riva128",0 },
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_SYMPHONY, {
- {0x0001, "82C101" },
- {0x0000, NULL}}},
+ {0x0001, "82C101",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_TEKRAM_2, {
- {0xDC29, "DC290" },
- {0x0000, NULL}}},
+ {0xDC29, "DC290",0 },
+ {0x0000, NULL,0}}},
#endif
{PCI_VENDOR_3DLABS, {
- {PCI_CHIP_300SX, "GLINT 300SX"},
- {PCI_CHIP_500TX, "GLINT 500TX"},
- {PCI_CHIP_DELTA, "GLINT Delta"},
- {PCI_CHIP_PERMEDIA, "GLINT Permedia"},
- {PCI_CHIP_MX, "GLINT MX"},
- {PCI_CHIP_PERMEDIA2, "GLINT Permedia 2"},
- {PCI_CHIP_GAMMA, "GLINT Gamma"},
- {PCI_CHIP_PERMEDIA2V, "GLINT Permedia 2v"},
- {0x0000, NULL}}},
+ {PCI_CHIP_300SX, "GLINT 300SX",0},
+ {PCI_CHIP_500TX, "GLINT 500TX",0},
+ {PCI_CHIP_DELTA, "GLINT Delta",0},
+ {PCI_CHIP_PERMEDIA, "GLINT Permedia",0},
+ {PCI_CHIP_MX, "GLINT MX",0},
+ {PCI_CHIP_PERMEDIA2, "GLINT Permedia 2",0},
+ {PCI_CHIP_GAMMA, "GLINT Gamma",0},
+ {PCI_CHIP_PERMEDIA2V, "GLINT Permedia 2v",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_AVANCE_2, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_S3, {
- {PCI_CHIP_PLATO, "PLATO/PX"},
- {PCI_CHIP_VIRGE, "ViRGE"},
- {PCI_CHIP_TRIO, "Trio32/64"},
- {PCI_CHIP_AURORA64VP, "Aurora64V+"},
- {PCI_CHIP_TRIO64UVP, "Trio64UV+"},
- {PCI_CHIP_TRIO64V2_DXGX,"Trio64V2/DX or /GX"},
- {PCI_CHIP_PLATO_PX, "PLATO/PX"},
- {PCI_CHIP_Trio3D, "Trio3D"},
- {PCI_CHIP_VIRGE_VX, "ViRGE/VX"},
- {PCI_CHIP_VIRGE_DXGX, "ViRGE/DX or /GX"},
- {PCI_CHIP_VIRGE_GX2, "ViRGE/GX2"},
- {PCI_CHIP_Savage3D, "Savage3D (86E391)"},
- {PCI_CHIP_Savage3D_MV, "Savage3D+MacroVision (86E390)"},
- {PCI_CHIP_VIRGE_MX, "ViRGE/MX"},
- {PCI_CHIP_VIRGE_MXPLUS, "ViRGE/MX+"},
- {PCI_CHIP_VIRGE_MXP, "ViRGE/MX+MV"},
- {PCI_CHIP_868, "868"},
- {PCI_CHIP_928, "928"},
- {PCI_CHIP_864_0, "864"},
- {PCI_CHIP_864_1, "864"},
- {PCI_CHIP_964_0, "964"},
- {PCI_CHIP_964_1, "964"},
- {PCI_CHIP_968, "968"},
- {0x0000, NULL}}},
+ {PCI_CHIP_PLATO, "PLATO/PX",0},
+ {PCI_CHIP_VIRGE, "ViRGE",0},
+ {PCI_CHIP_TRIO, "Trio32/64",0},
+ {PCI_CHIP_AURORA64VP, "Aurora64V+",0},
+ {PCI_CHIP_TRIO64UVP, "Trio64UV+",0},
+ {PCI_CHIP_TRIO64V2_DXGX,"Trio64V2/DX or /GX",0},
+ {PCI_CHIP_PLATO_PX, "PLATO/PX",0},
+ {PCI_CHIP_Trio3D, "Trio3D",0},
+ {PCI_CHIP_Trio3D_2X, "Trio3D/2X",0},
+ {PCI_CHIP_VIRGE_VX, "ViRGE/VX",0},
+ {PCI_CHIP_VIRGE_DXGX, "ViRGE/DX or /GX",0},
+ {PCI_CHIP_VIRGE_GX2, "ViRGE/GX2",0},
+ {PCI_CHIP_Savage3D, "Savage3D (86E391)",0},
+ {PCI_CHIP_Savage3D_MV, "Savage3D+MacroVision (86E390)",0},
+ {PCI_CHIP_Savage4, "Savage4",0},
+ {PCI_CHIP_Savage2000, "Savage2000",0},
+ {PCI_CHIP_VIRGE_MX, "ViRGE/MX",0},
+ {PCI_CHIP_VIRGE_MXPLUS, "ViRGE/MX+",0},
+ {PCI_CHIP_VIRGE_MXP, "ViRGE/MX+MV",0},
+ {PCI_CHIP_868, "868",0},
+ {PCI_CHIP_928, "928",0},
+ {PCI_CHIP_864_0, "864",0},
+ {PCI_CHIP_864_1, "864",0},
+ {PCI_CHIP_964_0, "964",0},
+ {PCI_CHIP_964_1, "964",0},
+ {PCI_CHIP_968, "968",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_INTEL,{
- {0x0482, "82375EB pci-eisa bridge"},
- {0x0483, "82424ZX cache dram controller"},
- {0x0484, "82378IB/ZB pci-isa bridge"},
- {0x0486, "82430ZX Aries"},
- {0x04A3, "82434LX/NX pci cache mem controller"},
- {0x0960, "960RD processor/bridge"},
- {0x1221, "82092AA"},
- {0x1222, "82092AA"},
- {0x1223, "SAA7116"},
- {0x1226, "82596"},
- {0x1227, "82865"},
- {0x1229, "82557/8 10/100MBit network controller"},
- {0x122D, "82437 Triton"},
- {0x122E, "82471 Triton"},
- {0x1230, "82371 bus-master IDE controller"},
- {0x1234, "82371MX bus-master IDE controller"},
- {0x1235, "82437MX"},
- {0x1237, "82441FX Natoma"},
- {0x124B, "82380FB"},
- {0x1250, "82439"},
- {0x7000, "82371 pci-isa bridge"},
- {0x7010, "82371 bus-master IDE controller"},
- {0x7020, "82371 bus-master IDE controller"},
- {0x7030, "82437VX"},
- {0x7100, "82439TX"},
- {0x7110, "82371AB PIIX4 ISA"},
- {0x7111, "82371AB PIIX4 IDE"},
- {0x7112, "82371AB PIIX4 USB"},
- {0x7113, "82371AB PIIX4 ACPI"},
- {0x7180, "82443LX PAC Host"},
- {0x7181, "82443LX PAC AGP"},
- {0x7190, "82443BX Host"},
- {0x7191, "82443BX AGP"},
- {0x7192, "82443BX Host (no AGP)"},
- {0x71a0, "82443GX Host"},
- {0x71a1, "82443GX AGP"},
- {0x71a2, "82443GX Host (no AGP)"},
- {0x84C4, "P6"},
- {0x84C5, "82450GX20"},
- {PCI_CHIP_I740_AGP, "i740 (AGP)"},
- {0x0000, NULL}}},
+ {0x0482, "82375EB pci-eisa bridge",0},
+ {0x0483, "82424ZX cache dram controller",0},
+ {0x0484, "82378IB/ZB pci-isa bridge",0x0601},
+ {0x0486, "82430ZX Aries",0},
+ {0x04A3, "82434LX/NX pci cache mem controller",0},
+ {0x0960, "960RD processor/bridge",0},
+ {0x1221, "82092AA",0},
+ {0x1222, "82092AA",0},
+ {0x1223, "SAA7116",0},
+ {0x1226, "82596",0},
+ {0x1227, "82865",0},
+ {0x1229, "82557/8/9 10/100MBit network controller",0 },
+ {0x122D, "82437 Triton",0},
+ {0x122E, "82471 Triton",0},
+ {0x1230, "82371 bus-master IDE controller",0},
+ {0x1234, "82371MX bus-master IDE controller",0},
+ {0x1235, "82437MX",0},
+ {0x1237, "82441FX Natoma",0},
+ {0x124B, "82380FB",0},
+ {0x1250, "82439",0},
+ {0x7000, "82371 pci-isa bridge",0},
+ {0x7010, "82371 bus-master IDE controller",0},
+ {0x7020, "82371 bus-master IDE controller",0},
+ {0x7030, "82437VX",0},
+ {0x7100, "82439TX",0},
+ {0x7110, "82371AB PIIX4 ISA",0},
+ {0x7111, "82371AB PIIX4 IDE",0},
+ {0x7112, "82371AB PIIX4 USB",0},
+ {0x7113, "82371AB PIIX4 ACPI",0},
+ {0x7180, "82443LX PAC Host",0},
+ {0x7181, "82443LX PAC AGP",0},
+ {0x7190, "82443BX Host",0},
+ {0x7191, "82443BX AGP",0},
+ {0x7192, "82443BX Host (no AGP)",0},
+ {0x71a0, "82443GX Host",0},
+ {0x71a1, "82443GX AGP",0},
+ {0x71a2, "82443GX Host (no AGP)",0},
+ {0x84C4, "P6",0},
+ {0x84C5, "82450GX20",0},
+ {PCI_CHIP_I740_AGP, "i740 (AGP)",0},
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ADAPTEC, {
- {0x0010, "2940U2" },
- {0x1078, "7810" },
- {0x5078, "7850" },
- {0x5578, "7855" },
- {0x6078, "7860" },
- {0x6178, "2940AU" },
- {0x7078, "7870" },
- {0x7178, "2940" },
- {0x7278, "7872" },
- {0x7378, "398X" },
- {0x7478, "2944" },
- {0x7895, "7895" },
- {0x8078, "7880" },
- {0x8178, "2940U/UW" },
- {0x8278, "3940U/UW" },
- {0x8378, "389XU" },
- {0x8478, "2944U" },
- {0x0000, NULL}}},
+ {0x0010, "2940U2",0 },
+ {0x1078, "7810",0 },
+ {0x5078, "7850",0 },
+ {0x5578, "7855",0 },
+ {0x6078, "7860",0 },
+ {0x6178, "2940AU",0 },
+ {0x7078, "7870",0 },
+ {0x7178, "2940",0 },
+ {0x7278, "7872",0 },
+ {0x7378, "398X",0 },
+ {0x7478, "2944",0 },
+ {0x7895, "7895",0 },
+ {0x8078, "7880",0 },
+ {0x8178, "2940U/UW",0 },
+ {0x8278, "3940U/UW",0 },
+ {0x8378, "389XU",0 },
+ {0x8478, "2944U",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ADAPTEC_2, {
- {0x001F, "7890/7891" },
- {0x0000, NULL}}},
+ {0x001F, "7890/7891",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ATRONICS, {
- {0x2015, "IDE-2015PL" },
- {0x0000, NULL}}},
+ {0x2015, "IDE-2015PL",0 },
+ {0x0000, NULL,0}}},
{PCI_VENDOR_ARK, {
- {PCI_CHIP_1000PV, "1000PV"},
- {PCI_CHIP_2000PV, "2000PV"},
- {PCI_CHIP_2000MT, "2000MT"},
- {PCI_CHIP_2000MI, "2000MI"},
- {0x0000, NULL}}},
+ {PCI_CHIP_1000PV, "1000PV",0},
+ {PCI_CHIP_2000PV, "2000PV",0},
+ {PCI_CHIP_2000MT, "2000MT",0},
+ {PCI_CHIP_2000MI, "2000MI",0},
+ {0x0000, NULL,0}}},
#ifdef VENDOR_INCLUDE_NONVIDEO
{PCI_VENDOR_YAMAHA, {
- {0x000a, "YMF740-V Audio"},
- {0x0000, NULL}}},
+ {0x000a, "YMF740-V Audio",0},
+ {0x0000, NULL,0}}},
#endif
{0x0000, {
- {0x0000, NULL}}},
+ {0x0000, NULL,0}}},
};
#endif
@@ -1296,184 +1356,178 @@ typedef struct {
struct pciCard {
unsigned short SubsystemID;
char *CardName;
+ CARD16 class;
pciPrintProcPtr printFunc;
} Device[MAX_CARD_PER_VENDOR];
} pciVendorCardInfo;
-extern pciVendorCardInfo *xf86PCICardInfo;
-extern pciVendorCardInfo xf86PCICardInfoData[];
+extern pciVendorCardInfo* xf86PCICardInfo;
+
#ifdef INIT_PCI_CARD_INFO
#define NF (pciPrintProcPtr)NULL
-pciVendorCardInfo xf86PCICardInfoData[] = {
+static pciVendorCardInfo xf86PCICardInfoData[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
{ PCI_VENDOR_3COM, {
- { 0x9005, "PCI Combo ethernet card" },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x9005, "PCI Combo ethernet card",0,NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{ PCI_VENDOR_ADAPTEC, {
- { 0x7881, "AHA-2940U/UW SCSI", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x7881, "AHA-2940U/UW SCSI",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
- { PCI_VENDOR_ATI, {
- { 0x4750, "XPERT XL", NF },
- { 0x4755, "Mach64-GT-B+DVD", NF },
- { 0x0084, "Xpert'98", NF },
- { 0x4d55, "264GT3 (Rage3D III)", NF },
- { 0x0088, "Mach64 (SuSE Econ)", NF },
- { 0x4c42, "XPERT LCD", NF },
- { 0x0000, (char *)NULL, NF } } },
+ /* ATI card info deleted; unmaintainable */
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INCLUDE_EMPTY_LISTS
{ PCI_VENDOR_COMPAQ, {
- { 0x0000, (char *)NULL, NF } } },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{ PCI_VENDOR_NCR_1, {
- { 0x1000, "SCSI HBA", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x1000, "SCSI HBA",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_REALTEC, {
- { 0x8139, "Generic", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x8139, "Generic",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
{ PCI_VENDOR_CREATIVE_2, {
- { 0x1017, "3D Blaster Banshee", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x1017, "3D Blaster Banshee",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{PCI_VENDOR_DIGITAL, {
- { 0x500A, "EtherWORKS 10/100", NF},
- { 0x0000, (char *)NULL, NF } } },
+ { 0x500A, "EtherWORKS 10/100",0, NF},
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
{ PCI_VENDOR_DIAMOND, {
- { 0x8000, "C&T 69000", NF },
- { 0x1103, "Fire GL 1000", NF },
- { 0x0154, "Fire GL 1000 PRO", NF },
- { 0x0003, "Monster Fusion", NF },
- { 0x8a10, "Stealth 3D 4000", NF },
- { 0x0100, "Stealth II G460", NF },
- { 0x2000, "Stealth II S220", NF },
- { 0x1092, "Viper 330", NF },
- { 0x0550, "Viper 550", NF },
- { 0x8760, "Fireport 40 Dual", NF },
- { 0x2110, "Sonic Impact S70", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x8000, "C&T 69000",0, NF },
+ { 0x1103, "Fire GL 1000",0, NF },
+ { 0x0154, "Fire GL 1000 PRO",0, NF },
+ { 0x0003, "Monster Fusion",0, NF },
+ { 0x8a10, "Stealth 3D 4000",0, NF },
+ { 0x0100, "Stealth II G460",0, NF },
+ { 0x2000, "Stealth II S220",0, NF },
+ { 0x1092, "Viper 330",0, NF },
+ { 0x0550, "Viper 550",0, NF },
+ { 0x8760, "Fireport 40 Dual",0, NF },
+ { 0x2110, "Sonic Impact S70",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_ELSA, {
- { 0x0914, "Winner 1000", NF },
- { 0x0930, "Winner 1000PRO 864", NF },
- { 0x0931, "Winner 1000PRO Trio32", NF },
- { 0x0932, "Winner 1000Trio Trio64", NF },
- { 0x0933, "Winner 1000TrioV Trio64V+", NF },
- { 0x0934, "Victory 3D", NF },
- { 0x0935, "Winner 1000 T2D", NF },
- { 0x0936, "Winner 1000PRO 868", NF },
- { 0x0937, "Winner 1000PRO/X 868", NF },
- { 0x0938, "Winner 1000ViRGE", NF },
- { 0x0939, "Winner 1000ViRGE/DX", NF },
- { 0x093a, "Winner 1000/T2DX", NF },
- { 0x093b, "Winner DUO M5", NF },
- { 0x093c, "Victory 1000", NF },
- { 0x0940, "Winner 2000PRO 964/TVP3020", NF },
- { 0x0941, "Winner 2000PRO/X 968/TVP3020", NF },
- { 0x0942, "Winner 2000PRO/X 968/TVP3026", NF },
- { 0x0943, "Winner 2000AVI 968/TVP3026", NF },
- { 0x0948, "Winner 2000PRO-8 964/RGB528", NF },
- { 0x094a, "Winner 2000PRO-8 968/RGB528", NF },
- { 0x094b, "Winner 2000PRO-8 968/TVP3030", NF },
- { 0x0950, "ViRGE/VX", NF },
- { 0x0951, "Winner 2000AVI 3D", NF },
- { 0x0952, "Winner 2000AVI 220", NF },
- { 0x0960, "Winner 3000M", NF },
- { 0x0962, "Winner 3000L", NF },
- { 0x0964, "Winner 3000XL", NF },
- { 0x096a, "Winner 3000Twin", NF },
- { 0x096c, "Winner 3000LT", NF },
- { 0x0980, "GLoria 4 TVP3026", NF },
- { 0x0982, "GLoria 4 TVP3030", NF },
- { 0x0981, "GLoria 8", NF },
- { 0x0a10, "GLoria M", NF },
- { 0x0a14, "GLoria S", NF },
- { 0x0a31, "Winner 2000 Office", NF },
- { 0x0a32, "GLoria Synergy P2C", NF },
- { 0x0a33, "GLoria Synergy P2C", NF },
- { 0x0a34, "GLoria Synergy P2V", NF },
- { 0x0a35, "GLoria Synergy P2A", NF },
- { 0x0a36, "Quad GLoria Synergy P2A", NF },
- { 0x0a40, "GLoria MX", NF },
- { 0x0a41, "GLoria XL", NF },
- { 0x0a42, "GLoria XXL", NF },
- { 0x0a43, "Winner 2000 Office P2V", NF },
- { 0x0a44, "Winner 2000 Office P2A", NF },
- { 0x0a80, "GLoria S MAC", NF },
- { 0x0c10, "Victory Erazor 4", NF },
- { 0x0c11, "Victory Erazor 8", NF },
- { 0x0c12, "Winner 1000 R3D", NF },
- { 0x0c13, "Winner 1000 ZX4", NF },
- { 0x0c14, "Victory Erazor/LT SGRAM", NF },
- { 0x0c15, "Victory Erazor/LT SDRAM", NF },
- { 0x0c18, "Erazor II SGRAM", NF },
- { 0x0c19, "Erazor II SDRAM video", NF },
- { 0x0c1a, "Synergy Pro", NF },
- { 0x0c1c, "Erazor II SDRAM", NF },
- { 0x0c20, "Synergy II 32", NF },
- { 0x0c21, "Synergy II 16", NF },
- { 0x0c22, "Erazor III", NF },
- { 0x0c23, "Erazor III video", NF },
- { 0x0d10, "Victory II SGRAM", NF },
- { 0x0d11, "Victory II SDRAM", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x0914, "Winner 1000",0, NF },
+ { 0x0930, "Winner 1000PRO 864",0, NF },
+ { 0x0931, "Winner 1000PRO Trio32",0, NF },
+ { 0x0932, "Winner 1000Trio Trio64",0, NF },
+ { 0x0933, "Winner 1000TrioV Trio64V+",0, NF },
+ { 0x0934, "Victory 3D",0, NF },
+ { 0x0935, "Winner 1000 T2D",0, NF },
+ { 0x0936, "Winner 1000PRO 868",0, NF },
+ { 0x0937, "Winner 1000PRO/X 868",0, NF },
+ { 0x0938, "Winner 1000ViRGE",0, NF },
+ { 0x0939, "Winner 1000ViRGE/DX",0, NF },
+ { 0x093a, "Winner 1000/T2DX",0, NF },
+ { 0x093b, "Winner DUO M5",0, NF },
+ { 0x093c, "Victory 1000",0, NF },
+ { 0x0940, "Winner 2000PRO 964/TVP3020",0, NF },
+ { 0x0941, "Winner 2000PRO/X 968/TVP3020",0, NF },
+ { 0x0942, "Winner 2000PRO/X 968/TVP3026",0, NF },
+ { 0x0943, "Winner 2000AVI 968/TVP3026",0, NF },
+ { 0x0948, "Winner 2000PRO-8 964/RGB528",0, NF },
+ { 0x094a, "Winner 2000PRO-8 968/RGB528",0, NF },
+ { 0x094b, "Winner 2000PRO-8 968/TVP3030",0, NF },
+ { 0x0950, "ViRGE/VX",0, NF },
+ { 0x0951, "Winner 2000AVI 3D",0, NF },
+ { 0x0952, "Winner 2000AVI 220",0, NF },
+ { 0x0960, "Winner 3000M",0, NF },
+ { 0x0962, "Winner 3000L",0, NF },
+ { 0x0964, "Winner 3000XL",0, NF },
+ { 0x096a, "Winner 3000Twin",0, NF },
+ { 0x096c, "Winner 3000LT",0, NF },
+ { 0x0980, "GLoria 4 TVP3026",0, NF },
+ { 0x0982, "GLoria 4 TVP3030",0, NF },
+ { 0x0981, "GLoria 8",0, NF },
+ { 0x0a10, "GLoria M",0, NF },
+ { 0x0a14, "GLoria S",0, NF },
+ { 0x0a31, "Winner 2000 Office",0, NF },
+ { 0x0a32, "GLoria Synergy P2C",0, NF },
+ { 0x0a33, "GLoria Synergy P2C",0, NF },
+ { 0x0a34, "GLoria Synergy P2V",0, NF },
+ { 0x0a35, "GLoria Synergy P2A",0, NF },
+ { 0x0a36, "Quad GLoria Synergy P2A",0, NF },
+ { 0x0a40, "GLoria MX",0, NF },
+ { 0x0a41, "GLoria XL",0, NF },
+ { 0x0a42, "GLoria XXL",0, NF },
+ { 0x0a43, "Winner 2000 Office P2V",0, NF },
+ { 0x0a44, "Winner 2000 Office P2A",0, NF },
+ { 0x0a80, "GLoria S MAC",0, NF },
+ { 0x0c10, "Victory Erazor 4",0, NF },
+ { 0x0c11, "Victory Erazor 8",0, NF },
+ { 0x0c12, "Winner 1000 R3D",0, NF },
+ { 0x0c13, "Winner 1000 ZX4",0, NF },
+ { 0x0c14, "Victory Erazor/LT SGRAM",0, NF },
+ { 0x0c15, "Victory Erazor/LT SDRAM",0, NF },
+ { 0x0c18, "Erazor II SGRAM",0, NF },
+ { 0x0c19, "Erazor II SDRAM video",0, NF },
+ { 0x0c1a, "Synergy Pro",0, NF },
+ { 0x0c1c, "Erazor II SDRAM",0, NF },
+ { 0x0c20, "Synergy II 32",0, NF },
+ { 0x0c21, "Synergy II 16",0, NF },
+ { 0x0c22, "Erazor III",0, NF },
+ { 0x0c23, "Erazor III video",0, NF },
+ { 0x0d10, "Victory II SGRAM",0, NF },
+ { 0x0d11, "Victory II SDRAM",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_HERCULES, {
- { 0x0001, "Thriller3D", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x0001, "Thriller3D",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_IBM, {
- { 0x00ba, "Thinkpad 600 NeoMagic NM2160", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x00ba, "Thinkpad 600 NeoMagic NM2160",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{PCI_VENDOR_INTEL, {
#ifdef VENDOR_INCLUDE_NONVIDEO
- { 0x0009, "PCI 10/100Mb/s ethernet card", NF },
+ { 0x0009, "PCI 10/100Mb/s ethernet card",0, NF },
/* Seattle AL440BX is 0x8080, is anything else ? */
- { 0x8080, "motherboard", NF },
- { 0x4d55, "Maui (MU) motherboard", NF },
+ { 0x8080, "motherboard",0, NF },
+ { 0x4d55, "Maui (MU) motherboard",0, NF },
#endif
- { 0x0000, (char *)NULL, NF } } },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_MATROX, {
- { 0x1100, "Mystique", NF },
- { 0x1000, "Millennium II", NF },
- { 0x0100, "Millennium II", NF },
- { 0x1200, "Millennium II", NF },
- { PCI_CARD_MILL_G200_SD, "Millennium G200 SD", NF },
- { PCI_CARD_PROD_G100_SD, "Produktiva G100 SD", NF },
- { PCI_CARD_MYST_G200_SD, "Mystique G200 SD", NF },
- { PCI_CARD_MILL_G200_SG, "Millennium G200 SG", NF },
- { PCI_CARD_MARV_G200_SD, "Marvel G200 SD", NF },
- { 0x1001, "Productiva G100 SG", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x1100, "Mystique",0, NF },
+ { 0x1000, "Millennium II",0, NF },
+ { 0x0100, "Millennium II",0, NF },
+ { 0x1200, "Millennium II",0, NF },
+ { PCI_CARD_MILL_G200_SD, "Millennium G200 SD",0, NF },
+ { PCI_CARD_PROD_G100_SD, "Produktiva G100 SD",0, NF },
+ { PCI_CARD_MYST_G200_SD, "Mystique G200 SD",0, NF },
+ { PCI_CARD_MILL_G200_SG, "Millennium G200 SG",0, NF },
+ { PCI_CARD_MARV_G200_SD, "Marvel G200 SD",0, NF },
+ { 0x1001, "Productiva G100 SG",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_SIS, {
- { 0x6306, "530 based motherboard", NF },
- { 0x6326, "6326 based card", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x6306, "530 based motherboard",0, NF },
+ { 0x6326, "6326 based card",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#ifdef VENDOR_INCLUDE_NONVIDEO
{ PCI_VENDOR_CREATIVE, {
- { 0x4c4c, "Sound Blaster PCI128", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x4c4c, "Sound Blaster PCI128",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
{ PCI_VENDOR_S3, {
- { 0x8904, "Trio3D", NF },
- { 0x8a10, "ViRGE/GX2", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x8904, "Trio3D",0, NF },
+ { 0x8a10, "ViRGE/GX2",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_NUMNINE, {
- { 0x8a10, "Reality 334", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x8a10, "Reality 334",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
{ PCI_VENDOR_TOSHIBA, {
- { 0x0001, "4010CDT CT65555", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x0001, "4010CDT CT65555",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#ifdef VENDOR_INCLUDE_NONVIDEO
{ PCI_VENDOR_BUSLOGIC, {
- { 0x1040, "BT958", NF },
- { 0x0000, (char *)NULL, NF } } },
+ { 0x1040, "BT958",0, NF },
+ { 0x0000, (char *)NULL,0, NF } } },
#endif
{0x0000, {
- {0x0000, NULL, NF } } },
+ {0x0000, NULL,0, NF } } },
};
#endif
#endif
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h
index 29fa87a5b..e948cb6b9 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128.h
@@ -103,7 +103,7 @@ typedef struct {
CARD32 amcgpio_en_reg;
CARD32 amcgpio_mask;
- /* Crtc registers */
+ /* CRTC registers */
CARD32 crtc_gen_cntl;
CARD32 crtc_ext_cntl;
CARD32 dac_cntl;
@@ -115,6 +115,21 @@ typedef struct {
CARD32 crtc_offset_cntl;
CARD32 crtc_pitch;
+ /* CRTC2 registers */
+ CARD32 crtc2_gen_cntl;
+
+ /* Flat panel registers */
+ CARD32 fp_crtc_h_total_disp;
+ CARD32 fp_crtc_v_total_disp;
+ CARD32 fp_gen_cntl;
+ CARD32 fp_h_sync_strt_wid;
+ CARD32 fp_horz_stretch;
+ CARD32 fp_panel_cntl;
+ CARD32 fp_v_sync_strt_wid;
+ CARD32 fp_vert_stretch;
+ CARD32 lvds_gen_cntl;
+ CARD32 tmds_crc;
+
/* Computed values for PLL */
int dot_clock_freq;
int pll_output_freq;
@@ -164,6 +179,20 @@ typedef struct {
unsigned long FbMapSize; /* Size of frame buffer, in bytes */
int Flags; /* Saved copy of mode flags */
+ Bool EnableFP; /* Enable use of FP registers */
+ Bool CRTOnly; /* Only use External CRT instead of FP */
+ Bool HasPanelRegs; /* Current chip can connect to a FP */
+
+ /* Computed values for FPs */
+ int PanelXRes;
+ int PanelYRes;
+ int PanelHNonVis;
+ int PanelHOverPlus;
+ int PanelHSyncWidth;
+ int PanelVNonVis;
+ int PanelVOverPlus;
+ int PanelVSyncWidth;
+
R128PLLRec pll;
R128RAMPtr ram;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
index f30d86aa8..ea0742a99 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
@@ -171,6 +171,8 @@ static SymTabRec R128Chipsets[] = {
{ PCI_CHIP_RAGE128RK, "ATI Rage 128 RK (PCI)" },
{ PCI_CHIP_RAGE128RL, "ATI Rage 128 RL (AGP)" },
{ PCI_CHIP_RAGE128PF, "ATI Rage 128 Pro PF (AGP)" },
+ { PCI_CHIP_RAGE128LE, "ATI Rage 128 Mobility LE (PCI)" },
+ { PCI_CHIP_RAGE128LF, "ATI Rage 128 Mobility LF (AGP)" },
{ -1, NULL }
};
@@ -180,6 +182,8 @@ static PciChipsets R128PciChipsets[] = {
{ PCI_CHIP_RAGE128RK, PCI_CHIP_RAGE128RK, RES_SHARED_VGA },
{ PCI_CHIP_RAGE128RL, PCI_CHIP_RAGE128RL, RES_SHARED_VGA },
{ PCI_CHIP_RAGE128PF, PCI_CHIP_RAGE128PF, RES_SHARED_VGA },
+ { PCI_CHIP_RAGE128LE, PCI_CHIP_RAGE128LE, RES_SHARED_VGA },
+ { PCI_CHIP_RAGE128LF, PCI_CHIP_RAGE128LF, RES_SHARED_VGA },
{ -1, -1, RES_UNDEFINED }
};
@@ -201,6 +205,8 @@ typedef enum {
OPTION_VBUF_SIZE,
OPTION_USE_CCE_2D,
#endif
+ OPTION_ENABLE_FP,
+ OPTION_CRT,
OPTION_FBDEV
} R128Opts;
@@ -222,6 +228,8 @@ static OptionInfoRec R128Options[] = {
{ OPTION_VBUF_SIZE, "VBSize", OPTV_INTEGER, {0}, FALSE },
{ OPTION_USE_CCE_2D, "UseCCEfor2D", OPTV_BOOLEAN, {0}, FALSE },
#endif
+ { OPTION_ENABLE_FP, "EnableFP", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_CRT, "CRTOnly", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -852,6 +860,9 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
int offset = 0; /* RAM Type */
MessageType from;
unsigned char *R128MMIO;
+ CARD32 fp_horz_stretch = 0, fp_vert_stretch = 0;
+ CARD32 crtc_h_total_disp = 0, crtc_v_total_disp = 0;
+ CARD32 crtc_h_sync_strt_wid = 0, crtc_v_sync_strt_wid = 0;
/* Chipset */
from = X_PROBED;
@@ -935,21 +946,46 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
"BIOS at 0x%08lx\n", info->BIOSAddr);
}
- /* RAM */
- from = X_PROBED;
+ /* Flat panel (part 1) */
+ /* FIXME: Make this an option */
+ switch (info->Chipset) {
+ case PCI_CHIP_RAGE128LE:
+ case PCI_CHIP_RAGE128LF: info->HasPanelRegs = TRUE; break;
+ case PCI_CHIP_RAGE128RE:
+ case PCI_CHIP_RAGE128RF:
+ case PCI_CHIP_RAGE128RK:
+ case PCI_CHIP_RAGE128RL:
+ case PCI_CHIP_RAGE128PF:
+ default: info->HasPanelRegs = FALSE; break;
+ }
+
+ /* Read registers used to determine options */
+ from = X_PROBED;
R128MapMMIO(pScrn);
- R128MMIO = info->MMIO;
+ R128MMIO = info->MMIO;
if (info->FBDev)
- pScrn->videoRam = fbdevHWGetVidmem(pScrn) / 1024;
+ pScrn->videoRam = fbdevHWGetVidmem(pScrn) / 1024;
else
- pScrn->videoRam = INREG(R128_CONFIG_MEMSIZE) / 1024;
- info->MemCntl = INREG(R128_MEM_CNTL);
- info->BusCntl = INREG(R128_BUS_CNTL);
- R128MMIO = NULL;
+ pScrn->videoRam = INREG(R128_CONFIG_MEMSIZE) / 1024;
+ info->MemCntl = INREG(R128_MEM_CNTL);
+ info->BusCntl = INREG(R128_BUS_CNTL);
+ if (info->HasPanelRegs) {
+ fp_horz_stretch = INREG(R128_FP_HORZ_STRETCH);
+ fp_vert_stretch = INREG(R128_FP_VERT_STRETCH);
+ crtc_h_total_disp = INREG(R128_CRTC_H_TOTAL_DISP);
+ crtc_v_total_disp = INREG(R128_CRTC_V_TOTAL_DISP);
+ crtc_h_sync_strt_wid = INREG(R128_CRTC_H_SYNC_STRT_WID);
+ crtc_v_sync_strt_wid = INREG(R128_CRTC_V_SYNC_STRT_WID);
+ }
+ R128MMIO = NULL;
R128UnmapMMIO(pScrn);
+
+ /* RAM */
switch (info->MemCntl & 0x3) {
case 0: /* SDR SGRAM 1:1 */
switch (info->Chipset) {
+ case PCI_CHIP_RAGE128LE:
+ case PCI_CHIP_RAGE128LF:
case PCI_CHIP_RAGE128RE:
case PCI_CHIP_RAGE128RF: offset = 0; break; /* 128-bit SDR SGRAM 1:1 */
case PCI_CHIP_RAGE128RK:
@@ -975,6 +1011,72 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, from,
"VideoRAM: %d kByte (%s)\n", pScrn->videoRam, info->ram->name);
+ /* Flat panel (part 2) */
+ if ((info->EnableFP = xf86ReturnOptValBool(R128Options,
+ OPTION_ENABLE_FP, FALSE))) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Enabling use of flat panel registers\n");
+ if ((info->CRTOnly = xf86ReturnOptValBool(R128Options,
+ OPTION_CRT, FALSE))) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Using external CRT instead of "
+ "flat panel for display\n");
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Using flat panel for display\n");
+ }
+ }
+
+ if (info->HasPanelRegs) {
+ int tmp;
+
+ info->PanelXRes =
+ (fp_horz_stretch & R128_HORZ_PANEL_SIZE) >> R128_HORZ_PANEL_SHIFT;
+ info->PanelXRes = (info->PanelXRes + 1) * 8;
+ info->PanelYRes =
+ (fp_vert_stretch & R128_VERT_PANEL_SIZE) >> R128_VERT_PANEL_SHIFT;
+ info->PanelYRes += 1;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel dimensions: %dx%d\n",
+ info->PanelXRes, info->PanelYRes);
+
+ info->PanelHNonVis =
+ (crtc_h_total_disp & R128_CRTC_H_TOTAL) >> R128_CRTC_H_TOTAL_SHIFT;
+ info->PanelHNonVis += 4; /* Add 4 since we are in VGA mode */
+ tmp =
+ (crtc_h_total_disp & R128_CRTC_H_DISP) >> R128_CRTC_H_DISP_SHIFT;
+ info->PanelHNonVis -= tmp;
+ info->PanelHOverPlus =
+ (crtc_h_sync_strt_wid & R128_CRTC_H_SYNC_STRT_CHAR)
+ >> R128_CRTC_H_SYNC_STRT_CHAR_SHIFT;
+ info->PanelHOverPlus -= tmp;
+ switch (info->pixel_code) { /* Adjustments are from ATI */
+ case 8: info->PanelHOverPlus += 2; break;
+ case 15:
+ case 16: info->PanelHOverPlus += 1; break;
+ case 24:
+ case 32: info->PanelHOverPlus += 0; break;
+ }
+ info->PanelHSyncWidth =
+ (crtc_h_sync_strt_wid & R128_CRTC_H_SYNC_WID)
+ >> R128_CRTC_H_SYNC_WID_SHIFT;
+ info->PanelHSyncWidth += 14; /* ??? */
+
+ info->PanelVNonVis =
+ (crtc_v_total_disp & R128_CRTC_V_TOTAL) >> R128_CRTC_V_TOTAL_SHIFT;
+ info->PanelVNonVis += 1; /* Add 1 since we are in VGA mode */
+ tmp =
+ (crtc_v_total_disp & R128_CRTC_V_DISP) >> R128_CRTC_V_DISP_SHIFT;
+ info->PanelVNonVis -= tmp;
+ info->PanelVOverPlus =
+ (crtc_v_sync_strt_wid & R128_CRTC_V_SYNC_STRT)
+ >> R128_CRTC_V_SYNC_STRT_SHIFT;
+ info->PanelVOverPlus -= tmp + 1;
+ info->PanelVSyncWidth =
+ (crtc_v_sync_strt_wid & R128_CRTC_V_SYNC_WID)
+ >> R128_CRTC_V_SYNC_WID_SHIFT;
+ info->PanelVSyncWidth -= 2; /* ??? */
+ }
+
#ifdef XF86DRI
/* AGP/PCI */
if (xf86ReturnOptValBool(R128Options, OPTION_IS_PCI, FALSE)) {
@@ -982,8 +1084,10 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI-only mode\n");
} else {
switch (info->Chipset) {
+ case PCI_CHIP_RAGE128LE:
case PCI_CHIP_RAGE128RE:
case PCI_CHIP_RAGE128RK: info->IsPCI = TRUE; break;
+ case PCI_CHIP_RAGE128LF:
case PCI_CHIP_RAGE128RF:
case PCI_CHIP_RAGE128RL:
case PCI_CHIP_RAGE128PF:
@@ -991,6 +1095,7 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
}
}
#endif
+
return TRUE;
}
@@ -1862,6 +1967,24 @@ static void R128RestoreCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
OUTREG(R128_CRTC_PITCH, restore->crtc_pitch);
}
+/* Write flat panel registers */
+static void R128RestoreFPRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
+{
+ R128MMIO_VARS();
+
+ OUTREG(R128_CRTC2_GEN_CNTL, restore->crtc2_gen_cntl);
+ OUTREG(R128_FP_CRTC_H_TOTAL_DISP, restore->fp_crtc_h_total_disp);
+ OUTREG(R128_FP_CRTC_V_TOTAL_DISP, restore->fp_crtc_v_total_disp);
+ OUTREG(R128_FP_GEN_CNTL, restore->fp_gen_cntl);
+ OUTREG(R128_FP_H_SYNC_STRT_WID, restore->fp_h_sync_strt_wid);
+ OUTREG(R128_FP_HORZ_STRETCH, restore->fp_horz_stretch);
+ OUTREG(R128_FP_PANEL_CNTL, restore->fp_panel_cntl);
+ OUTREG(R128_FP_V_SYNC_STRT_WID, restore->fp_v_sync_strt_wid);
+ OUTREG(R128_FP_VERT_STRETCH, restore->fp_vert_stretch);
+ OUTREG(R128_LVDS_GEN_CNTL, restore->lvds_gen_cntl);
+ OUTREG(R128_TMDS_CRC, restore->tmds_crc);
+}
+
static void R128PLLWaitForReadUpdateComplete(ScrnInfoPtr pScrn)
{
while (INPLL(pScrn, R128_PPLL_REF_DIV) & R128_PPLL_ATOMIC_UPDATE_R);
@@ -1945,6 +2068,8 @@ static void R128RestoreMode(ScrnInfoPtr pScrn, R128SavePtr restore)
R128TRACE(("R128RestoreMode(%p)\n", restore));
R128RestoreCommonRegisters(pScrn, restore);
R128RestoreCrtcRegisters(pScrn, restore);
+ if (R128PTR(pScrn)->HasPanelRegs && R128PTR(pScrn)->EnableFP)
+ R128RestoreFPRegisters(pScrn, restore);
R128RestorePLLRegisters(pScrn, restore);
R128RestoreDDARegisters(pScrn, restore);
R128RestorePalette(pScrn, restore);
@@ -1987,6 +2112,24 @@ static void R128SaveCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
save->crtc_pitch = INREG(R128_CRTC_PITCH);
}
+/* Read flat panel registers */
+static void R128SaveFPRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
+{
+ R128MMIO_VARS();
+
+ save->crtc2_gen_cntl = INREG(R128_CRTC2_GEN_CNTL);
+ save->fp_crtc_h_total_disp = INREG(R128_FP_CRTC_H_TOTAL_DISP);
+ save->fp_crtc_v_total_disp = INREG(R128_FP_CRTC_V_TOTAL_DISP);
+ save->fp_gen_cntl = INREG(R128_FP_GEN_CNTL);
+ save->fp_h_sync_strt_wid = INREG(R128_FP_H_SYNC_STRT_WID);
+ save->fp_horz_stretch = INREG(R128_FP_HORZ_STRETCH);
+ save->fp_panel_cntl = INREG(R128_FP_PANEL_CNTL);
+ save->fp_v_sync_strt_wid = INREG(R128_FP_V_SYNC_STRT_WID);
+ save->fp_vert_stretch = INREG(R128_FP_VERT_STRETCH);
+ save->lvds_gen_cntl = INREG(R128_LVDS_GEN_CNTL);
+ save->tmds_crc = INREG(R128_TMDS_CRC);
+}
+
/* Read PLL registers. */
static void R128SavePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
{
@@ -2031,6 +2174,8 @@ static void R128SaveMode(ScrnInfoPtr pScrn, R128SavePtr save)
R128SaveCommonRegisters(pScrn, save);
R128SaveCrtcRegisters(pScrn, save);
+ if (R128PTR(pScrn)->HasPanelRegs && R128PTR(pScrn)->EnableFP)
+ R128SaveFPRegisters(pScrn, save);
R128SavePLLRegisters(pScrn, save);
R128SaveDDARegisters(pScrn, save);
R128SavePalette(pScrn, save);
@@ -2205,6 +2350,127 @@ static Bool R128InitCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save,
return TRUE;
}
+/* Define CRTC registers for requested video mode. */
+static void R128InitFPRegisters(ScrnInfoPtr pScrn, R128SavePtr orig,
+ R128SavePtr save, DisplayModePtr mode,
+ R128InfoPtr info)
+{
+ int xres = mode->CrtcHDisplay;
+ int yres = mode->CrtcVDisplay;
+ float Hratio, Vratio;
+ int disp_end;
+
+ if (info->CRTOnly) {
+ save->crtc_ext_cntl |= R128_CRTC_CRT_ON;
+ save->crtc2_gen_cntl = 0;
+ save->fp_gen_cntl = orig->fp_gen_cntl;
+ save->fp_gen_cntl &= ~(R128_FP_FPON |
+ R128_FP_CRTC_USE_SHADOW_VEND |
+ R128_FP_CRTC_HORZ_DIV2_EN |
+ R128_FP_CRTC_HOR_CRT_DIV2_DIS |
+ R128_FP_USE_SHADOW_EN);
+ save->fp_gen_cntl |= (R128_FP_SEL_CRTC2 |
+ R128_FP_CRTC_DONT_SHADOW_VPAR);
+ save->fp_panel_cntl = orig->fp_panel_cntl & ~R128_FP_DIGON;
+ save->lvds_gen_cntl = orig->lvds_gen_cntl & ~R128_LVDS_ON;
+ return;
+ }
+
+ if (xres > info->PanelXRes) xres = info->PanelXRes;
+ if (yres > info->PanelYRes) yres = info->PanelYRes;
+
+ Hratio = (float)xres/(float)info->PanelXRes;
+ Vratio = (float)yres/(float)info->PanelYRes;
+
+ save->fp_horz_stretch =
+ (((((int)(Hratio * R128_HORZ_STRETCH_RATIO_MAX))
+ & R128_HORZ_STRETCH_RATIO_MASK) << R128_HORZ_STRETCH_RATIO_SHIFT) |
+ (orig->fp_horz_stretch & (R128_HORZ_PANEL_SIZE |
+ R128_HORZ_FP_LOOP_STRETCH |
+ R128_HORZ_STRETCH_RESERVED)));
+ if (Hratio != 1.0) save->fp_horz_stretch |= (R128_HORZ_STRETCH_BLEND |
+ R128_HORZ_STRETCH_ENABLE);
+
+ save->fp_vert_stretch =
+ (((((int)(Vratio * R128_VERT_STRETCH_RATIO_MAX))
+ & R128_VERT_STRETCH_RATIO_MASK) << R128_VERT_STRETCH_RATIO_SHIFT) |
+ (orig->fp_vert_stretch & (R128_VERT_PANEL_SIZE |
+ R128_VERT_STRETCH_RESERVED |
+ R128_VERT_STRETCH_BLEND)));
+ if (Vratio == 1.0) save->fp_vert_stretch &= ~R128_VERT_STRETCH_ENABLE;
+ else save->fp_vert_stretch |= R128_VERT_STRETCH_ENABLE;
+
+ save->fp_gen_cntl = ((orig->fp_gen_cntl & ~(R128_FP_SEL_CRTC2 |
+ R128_FP_CRTC_USE_SHADOW_VEND |
+ R128_FP_CRTC_HORZ_DIV2_EN |
+ R128_FP_CRTC_HOR_CRT_DIV2_DIS |
+ R128_FP_USE_SHADOW_EN)) |
+ R128_FP_CRTC_DONT_SHADOW_VPAR |
+ R128_FP_TDMS_EN);
+ save->fp_panel_cntl = orig->fp_panel_cntl;
+ save->fp_crtc_h_total_disp = orig->fp_crtc_h_total_disp;
+ save->fp_crtc_v_total_disp = orig->fp_crtc_v_total_disp;
+ save->fp_h_sync_strt_wid = orig->fp_h_sync_strt_wid;
+ save->fp_v_sync_strt_wid = orig->fp_v_sync_strt_wid;
+ save->lvds_gen_cntl = orig->lvds_gen_cntl;
+
+ save->tmds_crc = orig->tmds_crc;
+
+ /* Disable CRT output by disabling CRT output and setting the CRT
+ DAC to use CRTC2, which we set to 0's. In the future, we will
+ want to use the dual CRTC capabilities of the R128 to allow both
+ the flat panel and external CRT to either simultaneously display
+ the same image or display two different images. */
+ save->crtc_ext_cntl &= ~R128_CRTC_CRT_ON;
+ save->dac_cntl |= R128_DAC_CRT_SEL_CRTC2;
+ save->crtc2_gen_cntl = 0;
+
+ save->fp_panel_cntl |= (R128_FP_DIGON | R128_FP_BLON);
+ save->fp_gen_cntl |= (R128_FP_FPON);
+
+ save->crtc_gen_cntl &= ~(R128_CRTC_DBL_SCAN_EN |
+ R128_CRTC_INTERLACE_EN |
+ R128_CRTC_CSYNC_EN |
+ R128_CRTC_CUR_EN |
+ R128_CRTC_CUR_MODE_MASK |
+ R128_CRTC_ICON_EN |
+ R128_CRTC_EXT_DISP_EN |
+ R128_CRTC_EN |
+ R128_CRTC_DISP_REQ_EN_B);
+ save->crtc_gen_cntl |= R128_CRTC_EXT_DISP_EN | R128_CRTC_EN;
+
+ disp_end = xres/8 - 1;
+ save->crtc_h_total_disp = ((disp_end << R128_CRTC_H_DISP_SHIFT) |
+ (disp_end + info->PanelHNonVis));
+
+ save->crtc_h_sync_strt_wid &= ~(R128_CRTC_H_SYNC_STRT_PIX |
+ R128_CRTC_H_SYNC_STRT_CHAR |
+ R128_CRTC_H_SYNC_WID);
+ save->crtc_h_sync_strt_wid |=
+ (disp_end + info->PanelHOverPlus) << R128_CRTC_H_SYNC_STRT_CHAR_SHIFT;
+ switch (info->pixel_code) { /* Adjustments are from ATI */
+ case 8: save->crtc_h_sync_strt_wid |= 2; break;
+ case 15:
+ case 16: save->crtc_h_sync_strt_wid |= 1; break;
+ case 24: save->crtc_h_sync_strt_wid |= 6; break;
+ case 32: save->crtc_h_sync_strt_wid |= 5; break;
+ }
+ save->crtc_h_sync_strt_wid |=
+ info->PanelHSyncWidth << R128_CRTC_H_SYNC_WID_SHIFT;
+ save->crtc_h_sync_strt_wid |= R128_CRTC_H_SYNC_POL;
+
+ disp_end = yres - 1;
+ save->crtc_v_total_disp = ((disp_end << R128_CRTC_V_DISP_SHIFT) |
+ (disp_end + info->PanelVNonVis));
+
+ save->crtc_v_sync_strt_wid &= ~(R128_CRTC_V_SYNC_STRT |
+ R128_CRTC_V_SYNC_WID);
+ save->crtc_v_sync_strt_wid |= (disp_end + info->PanelVOverPlus);
+ save->crtc_v_sync_strt_wid |=
+ info->PanelVSyncWidth << R128_CRTC_V_SYNC_WID_SHIFT;
+ save->crtc_v_sync_strt_wid |= R128_CRTC_V_SYNC_POL;
+}
+
/* Define PLL registers for requested video mode. */
static void R128InitPLLRegisters(ScrnInfoPtr pScrn, R128SavePtr save,
DisplayModePtr mode, R128PLLPtr pll,
@@ -2386,6 +2652,8 @@ static Bool R128Init(ScrnInfoPtr pScrn, DisplayModePtr mode, R128SavePtr save)
R128InitCommonRegisters(save, mode, info);
if (!R128InitCrtcRegisters(pScrn, save, mode, info)) return FALSE;
+ if (info->HasPanelRegs && info->EnableFP)
+ R128InitFPRegisters(pScrn, &info->SavedReg, save, mode, info);
R128InitPLLRegisters(pScrn, save, mode, &info->pll, dot_clock);
if (!R128InitDDARegisters(pScrn, save, mode, &info->pll, info))
return FALSE;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h
index 144fd9efe..17a539e76 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_reg.h
@@ -332,6 +332,7 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
# define R128_CRTC_HSYNC_DIS (1 << 8)
# define R128_CRTC_VSYNC_DIS (1 << 9)
# define R128_CRTC_DISPLAY_DIS (1 << 10)
+# define R128_CRTC_CRT_ON (1 << 15)
#define R128_CRTC_EXT_CNTL_DPMS_BYTE 0x0055
# define R128_CRTC_HSYNC_DIS_BYTE (1 << 0)
# define R128_CRTC_VSYNC_DIS_BYTE (1 << 1)
@@ -339,24 +340,57 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_CRTC_GEN_CNTL 0x0050
# define R128_CRTC_DBL_SCAN_EN (1 << 0)
# define R128_CRTC_INTERLACE_EN (1 << 1)
+# define R128_CRTC_CSYNC_EN (1 << 4)
# define R128_CRTC_CUR_EN (1 << 16)
# define R128_CRTC_CUR_MODE_MASK (7 << 17)
+# define R128_CRTC_ICON_EN (1 << 20)
# define R128_CRTC_EXT_DISP_EN (1 << 24)
# define R128_CRTC_EN (1 << 25)
+# define R128_CRTC_DISP_REQ_EN_B (1 << 26)
#define R128_CRTC_GUI_TRIG_VLINE 0x0218
#define R128_CRTC_H_SYNC_STRT_WID 0x0204
-# define R128_CRTC_H_SYNC_POL (1 << 23)
+# define R128_CRTC_H_SYNC_STRT_PIX (0x07 << 0)
+# define R128_CRTC_H_SYNC_STRT_CHAR (0x1ff << 3)
+# define R128_CRTC_H_SYNC_STRT_CHAR_SHIFT 3
+# define R128_CRTC_H_SYNC_WID (0x3f << 16)
+# define R128_CRTC_H_SYNC_WID_SHIFT 16
+# define R128_CRTC_H_SYNC_POL (1 << 23)
#define R128_CRTC_H_TOTAL_DISP 0x0200
+# define R128_CRTC_H_TOTAL (0x01ff << 0)
+# define R128_CRTC_H_TOTAL_SHIFT 0
+# define R128_CRTC_H_DISP (0x00ff << 16)
+# define R128_CRTC_H_DISP_SHIFT 16
#define R128_CRTC_OFFSET 0x0224
#define R128_CRTC_OFFSET_CNTL 0x0228
#define R128_CRTC_PITCH 0x022c
#define R128_CRTC_STATUS 0x005c
# define R128_CRTC_VBLANK_SAVE (1 << 1)
#define R128_CRTC_V_SYNC_STRT_WID 0x020c
-# define R128_CRTC_V_SYNC_POL (1 << 23)
+# define R128_CRTC_V_SYNC_STRT (0x7ff << 0)
+# define R128_CRTC_V_SYNC_STRT_SHIFT 0
+# define R128_CRTC_V_SYNC_WID (0x1f << 16)
+# define R128_CRTC_V_SYNC_WID_SHIFT 16
+# define R128_CRTC_V_SYNC_POL (1 << 23)
#define R128_CRTC_V_TOTAL_DISP 0x0208
+# define R128_CRTC_V_TOTAL (0x07ff << 0)
+# define R128_CRTC_V_TOTAL_SHIFT 0
+# define R128_CRTC_V_DISP (0x07ff << 16)
+# define R128_CRTC_V_DISP_SHIFT 16
#define R128_CRTC_VLINE_CRNT_VLINE 0x0210
# define R128_CRTC_CRNT_VLINE_MASK (0x7ff << 16)
+#define R128_CRTC2_CRNT_FRAME 0x0314
+#define R128_CRTC2_DEBUG 0x031c
+#define R128_CRTC2_GEN_CNTL 0x03f8
+#define R128_CRTC2_GUI_TRIG_VLINE 0x0318
+#define R128_CRTC2_H_SYNC_STRT_WID 0x0304
+#define R128_CRTC2_H_TOTAL_DISP 0x0300
+#define R128_CRTC2_OFFSET 0x0324
+#define R128_CRTC2_OFFSET_CNTL 0x0328
+#define R128_CRTC2_PITCH 0x032c
+#define R128_CRTC2_STATUS 0x03fc
+#define R128_CRTC2_V_SYNC_STRT_WID 0x030c
+#define R128_CRTC2_V_TOTAL_DISP 0x0308
+#define R128_CRTC2_VLINE_CRNT_VLINE 0x0310
#define R128_CRTC8_DATA 0x03d5 /* VGA, 0x3b5 */
#define R128_CRTC8_IDX 0x03d4 /* VGA, 0x3b4 */
#define R128_CUR_CLR0 0x026c
@@ -369,6 +403,7 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_DAC_CNTL 0x0058
# define R128_DAC_RANGE_CNTL (3 << 0)
# define R128_DAC_BLANKING (1 << 2)
+# define R128_DAC_CRT_SEL_CRTC2 (1 << 4)
# define R128_DAC_8BIT_EN (1 << 8)
# define R128_DAC_VGA_ADR_EN (1 << 13)
# define R128_DAC_MASK_ALL (0xff << 24)
@@ -384,11 +419,6 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_DEFAULT_SC_BOTTOM_RIGHT 0x16e8
# define R128_DEFAULT_SC_RIGHT_MAX (0x1fff << 0)
# define R128_DEFAULT_SC_BOTTOM_MAX (0x1fff << 16)
-#define R128_FOG_3D_TABLE_START 0x1810
-#define R128_FOG_3D_TABLE_END 0x1814
-#define R128_FOG_3D_TABLE_DENSITY 0x181c
-#define R128_FOG_TABLE_INDEX 0x1a14
-#define R128_FOG_TABLE_DATA 0x1a18
#define R128_DESTINATION_3D_CLR_CMP_VAL 0x1820
#define R128_DESTINATION_3D_CLR_CMP_MSK 0x1824
#define R128_DEVICE_ID 0x0f02 /* PCI */
@@ -524,6 +554,49 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_FLUSH_5 0x1714
#define R128_FLUSH_6 0x1718
#define R128_FLUSH_7 0x171c
+#define R128_FOG_3D_TABLE_START 0x1810
+#define R128_FOG_3D_TABLE_END 0x1814
+#define R128_FOG_3D_TABLE_DENSITY 0x181c
+#define R128_FOG_TABLE_INDEX 0x1a14
+#define R128_FOG_TABLE_DATA 0x1a18
+#define R128_FP_CRTC_H_TOTAL_DISP 0x0250
+#define R128_FP_CRTC_V_TOTAL_DISP 0x0254
+#define R128_FP_GEN_CNTL 0x0284
+# define R128_FP_FPON (1 << 0)
+# define R128_FP_TDMS_EN (1 << 2)
+# define R128_FP_SEL_CRTC2 (1 << 13)
+# define R128_FP_CRTC_DONT_SHADOW_VPAR (1 << 16)
+# define R128_FP_CRTC_USE_SHADOW_VEND (1 << 18)
+# define R128_FP_CRTC_HORZ_DIV2_EN (1 << 20)
+# define R128_FP_CRTC_HOR_CRT_DIV2_DIS (1 << 21)
+# define R128_FP_USE_SHADOW_EN (1 << 24)
+#define R128_FP_H_SYNC_STRT_WID 0x02c4
+#define R128_FP_HORZ_STRETCH 0x028c
+# define R128_HORZ_STRETCH_RATIO_MASK 0xffff
+# define R128_HORZ_STRETCH_RATIO_SHIFT 0
+# define R128_HORZ_STRETCH_RATIO_MAX 4096
+# define R128_HORZ_PANEL_SIZE (0xff << 16)
+# define R128_HORZ_PANEL_SHIFT 16
+# define R128_HORZ_STRETCH_PIXREP (0 << 25)
+# define R128_HORZ_STRETCH_BLEND (1 << 25)
+# define R128_HORZ_STRETCH_ENABLE (1 << 26)
+# define R128_HORZ_FP_LOOP_STRETCH (0x7 << 27)
+# define R128_HORZ_STRETCH_RESERVED 0xc0000000
+
+#define R128_FP_PANEL_CNTL 0x0288
+# define R128_FP_DIGON (1 << 0)
+# define R128_FP_BLON (1 << 1)
+#define R128_FP_V_SYNC_STRT_WID 0x02c8
+#define R128_FP_VERT_STRETCH 0x0290
+# define R128_VERT_PANEL_SIZE (0x7ff << 0)
+# define R128_VERT_PANEL_SHIFT 0
+# define R128_VERT_STRETCH_RATIO_MASK 0x3ff
+# define R128_VERT_STRETCH_RATIO_SHIFT 11
+# define R128_VERT_STRETCH_RATIO_MAX 1024
+# define R128_VERT_STRETCH_ENABLE (1 << 24)
+# define R128_VERT_STRETCH_LINEREP (0 << 25)
+# define R128_VERT_STRETCH_BLEND (1 << 25)
+# define R128_VERT_STRETCH_RESERVED 0xf8e00000
#define R128_GEN_INT_CNTL 0x0040
#define R128_GEN_INT_STATUS 0x0044
@@ -601,6 +674,9 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_LEAD_BRES_INC 0x1604
#define R128_LEAD_BRES_LNTH 0x161c
#define R128_LEAD_BRES_LNTH_SUB 0x1624
+#define R128_LVDS_GEN_CNTL 0x02d0
+# define R128_LVDS_ON (1 << 0)
+# define R128_LVDS_SEL_CRTC2 (1 << 23)
#define R128_MAX_LATENCY 0x0f3f /* PCI */
#define R128_MCLK_CNTL 0x000f /* PLL */
@@ -718,11 +794,13 @@ static inline unsigned short regr16(volatile unsigned long base_addr, unsigned l
#define R128_TEST_DEBUG_CNTL 0x0120
#define R128_TEST_DEBUG_MUX 0x0124
#define R128_TEST_DEBUG_OUT 0x012c
+#define R128_TMDS_CRC 0x02a0
#define R128_TRAIL_BRES_DEC 0x1614
#define R128_TRAIL_BRES_ERR 0x160c
#define R128_TRAIL_BRES_INC 0x1610
#define R128_TRAIL_X 0x1618
#define R128_TRAIL_X_SUB 0x1620
+
#define R128_VCLK_ECP_CNTL 0x0008 /* PLL */
#define R128_VENDOR_ID 0x0f00 /* PCI */
#define R128_VGA_DDA_CONFIG 0x02e8