xf86-video-ati: Branch 'master' - 3 commits

George Sapountzis gsap7 at kemper.freedesktop.org
Sat Mar 24 21:25:22 EET 2007


 src/Makefile.am      |    4 
 src/ati.c            |  469 ++++++++++++++++++++++++++++++++++++++++++++++-
 src/ati.h            |   72 +++++++
 src/atichip.c        |  508 ---------------------------------------------------
 src/atichip.h        |   71 -------
 src/atimach64probe.c |    2 
 src/atimach64probe.h |    2 
 src/atipreinit.c     |    4 
 8 files changed, 550 insertions(+), 582 deletions(-)

New commits:
diff-tree 97d8d1ed10d069343f2b3172ba64ca421821a602 (from aa8f5b02ebc9be60df48722588261627d6a457e8)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Mar 24 20:02:12 2007 +0200

    Move atichip.c from ati to atimisc.

diff --git a/src/Makefile.am b/src/Makefile.am
index 1da3740..84642f7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -51,13 +51,13 @@ ati_drv_la_LTLIBRARIES = ati_drv.la
 ati_drv_la_LDFLAGS = -module -avoid-version
 ati_drv_ladir = @moduledir@/drivers
 ati_drv_la_SOURCES = \
-	ati.c atichip.c atimodule.c
+	ati.c atimodule.c
 
 atimisc_drv_la_LTLIBRARIES = atimisc_drv.la
 atimisc_drv_la_LDFLAGS = -module -avoid-version
 atimisc_drv_ladir = @moduledir@/drivers
 atimisc_drv_la_SOURCES = \
-	atibus.c atiprobe.c atividmem.c \
+	atibus.c atichip.c atiprobe.c atividmem.c \
 	atiadjust.c atiaudio.c aticlock.c aticonfig.c aticonsole.c \
 	atidac.c atidecoder.c atidsp.c atii2c.c \
 	atilock.c atimach64.c atimach64accel.c atimach64cursor.c \
diff --git a/src/ati.c b/src/ati.c
index 4ef53e3..423fd95 100644
--- a/src/ati.c
+++ b/src/ati.c
@@ -58,15 +58,12 @@
 #endif
 
 #include "ati.h"
-#include "atichip.h"
 #include "atimodule.h"
 #include "ativersion.h"
 #include "atimach64probe.h"
 
 #include "radeon_probe.h"
-#include "radeon_version.h"
 #include "r128_probe.h"
-#include "r128_version.h"
 
 /*
  * ATIIdentify --
@@ -236,3 +233,469 @@ _X_EXPORT DriverRec ATI =
     NULL,
     0
 };
+
+/*
+ * Chip-related definitions.
+ */
+const char *ATIChipNames[] =
+{
+    "Unknown",
+    "ATI 88800GX-C",
+    "ATI 88800GX-D",
+    "ATI 88800GX-E",
+    "ATI 88800GX-F",
+    "ATI 88800GX",
+    "ATI 88800CX",
+    "ATI 264CT",
+    "ATI 264ET",
+    "ATI 264VT",
+    "ATI 3D Rage",
+    "ATI 264VT-B",
+    "ATI 3D Rage II",
+    "ATI 264VT3",
+    "ATI 3D Rage II+DVD",
+    "ATI 3D Rage LT",
+    "ATI 264VT4",
+    "ATI 3D Rage IIc",
+    "ATI 3D Rage Pro",
+    "ATI 3D Rage LT Pro",
+    "ATI 3D Rage XL or XC",
+    "ATI 3D Rage Mobility",
+    "ATI unknown Mach64",
+    "ATI Rage 128 GL",
+    "ATI Rage 128 VR",
+    "ATI Rage 128 Pro GL",
+    "ATI Rage 128 Pro VR",
+    "ATI Rage 128 Pro ULTRA",
+    "ATI Rage 128 Mobility M3",
+    "ATI Rage 128 Mobility M4",
+    "ATI unknown Rage 128"
+    "ATI Radeon 7200",
+    "ATI Radeon 7000 (VE)",
+    "ATI Radeon Mobility M6",
+    "ATI Radeon IGP320",
+    "ATI Radeon IGP330/340/350",
+    "ATI Radeon 7000 IGP",
+    "ATI Radeon 7500",
+    "ATI Radeon Mobility M7",
+    "ATI Radeon 8500/9100",
+    "ATI Radeon 9000",
+    "ATI Radeon Mobility M9",
+    "ATI Radeon 9100 IGP",
+    "ATI Radeon 9200 IGP",
+    "ATI Radeon 9200",
+    "ATI Radeon Mobility M9+",
+    "ATI Radeon 9700/9500",
+    "ATI Radeon 9600/9550",
+    "ATI Radeon 9800",
+    "ATI Radeon 9800XT",
+    "ATI Radeon X300/X550/M22",
+    "ATI Radeon X600/X550/M24",
+    "ATI Radeon X800/M18 AGP",
+    "ATI Radeon X800/M28 PCIE",
+    "ATI Radeon X800XL PCIE",
+    "ATI Radeon X850 PCIE",
+    "ATI Radeon X850 AGP",
+    "ATI Radeon X700",
+    "ATI Xpress 200"
+    "ATI unknown Radeon",
+    "ATI Rage HDTV"
+};
+
+#include "atichip.h"
+
+/*
+ * ATIChipID --
+ *
+ * This returns the ATI_CHIP_* value (generally) associated with a particular
+ * ChipID/ChipRev combination.
+ */
+ATIChipType
+ATIChipID
+(
+    const CARD16 ChipID,
+    const CARD8  ChipRev
+)
+{
+    switch (ChipID)
+    {
+        case OldChipID('G', 'X'):  case NewChipID('G', 'X'):
+            switch (ChipRev)
+            {
+                case 0x00U:
+                    return ATI_CHIP_88800GXC;
+
+                case 0x01U:
+                    return ATI_CHIP_88800GXD;
+
+                case 0x02U:
+                    return ATI_CHIP_88800GXE;
+
+                case 0x03U:
+                    return ATI_CHIP_88800GXF;
+
+                default:
+                    return ATI_CHIP_88800GX;
+            }
+
+        case OldChipID('C', 'X'):  case NewChipID('C', 'X'):
+            return ATI_CHIP_88800CX;
+
+        case OldChipID('C', 'T'):  case NewChipID('C', 'T'):
+            return ATI_CHIP_264CT;
+
+        case OldChipID('E', 'T'):  case NewChipID('E', 'T'):
+            return ATI_CHIP_264ET;
+
+        case OldChipID('V', 'T'):  case NewChipID('V', 'T'):
+            /* For simplicity, ignore ChipID discrepancy that can occur here */
+            if (!(ChipRev & GetBits(CFG_CHIP_VERSION, CFG_CHIP_REV)))
+                return ATI_CHIP_264VT;
+            return ATI_CHIP_264VTB;
+
+        case OldChipID('G', 'T'):  case NewChipID('G', 'T'):
+            if (!(ChipRev & GetBits(CFG_CHIP_VERSION, CFG_CHIP_REV)))
+                return ATI_CHIP_264GT;
+            return ATI_CHIP_264GTB;
+
+        case OldChipID('V', 'U'):  case NewChipID('V', 'U'):
+            return ATI_CHIP_264VT3;
+
+        case OldChipID('G', 'U'):  case NewChipID('G', 'U'):
+            return ATI_CHIP_264GTDVD;
+
+        case OldChipID('L', 'G'):  case NewChipID('L', 'G'):
+            return ATI_CHIP_264LT;
+
+        case OldChipID('V', 'V'):  case NewChipID('V', 'V'):
+            return ATI_CHIP_264VT4;
+
+        case OldChipID('G', 'V'):  case NewChipID('G', 'V'):
+        case OldChipID('G', 'W'):  case NewChipID('G', 'W'):
+        case OldChipID('G', 'Y'):  case NewChipID('G', 'Y'):
+        case OldChipID('G', 'Z'):  case NewChipID('G', 'Z'):
+            return ATI_CHIP_264GT2C;
+
+        case OldChipID('G', 'B'):  case NewChipID('G', 'B'):
+        case OldChipID('G', 'D'):  case NewChipID('G', 'D'):
+        case OldChipID('G', 'I'):  case NewChipID('G', 'I'):
+        case OldChipID('G', 'P'):  case NewChipID('G', 'P'):
+        case OldChipID('G', 'Q'):  case NewChipID('G', 'Q'):
+            return ATI_CHIP_264GTPRO;
+
+        case OldChipID('L', 'B'):  case NewChipID('L', 'B'):
+        case OldChipID('L', 'D'):  case NewChipID('L', 'D'):
+        case OldChipID('L', 'I'):  case NewChipID('L', 'I'):
+        case OldChipID('L', 'P'):  case NewChipID('L', 'P'):
+        case OldChipID('L', 'Q'):  case NewChipID('L', 'Q'):
+            return ATI_CHIP_264LTPRO;
+
+        case OldChipID('G', 'L'):  case NewChipID('G', 'L'):
+        case OldChipID('G', 'M'):  case NewChipID('G', 'M'):
+        case OldChipID('G', 'N'):  case NewChipID('G', 'N'):
+        case OldChipID('G', 'O'):  case NewChipID('G', 'O'):
+        case OldChipID('G', 'R'):  case NewChipID('G', 'R'):
+        case OldChipID('G', 'S'):  case NewChipID('G', 'S'):
+            return ATI_CHIP_264XL;
+
+        case OldChipID('L', 'M'):  case NewChipID('L', 'M'):
+        case OldChipID('L', 'N'):  case NewChipID('L', 'N'):
+        case OldChipID('L', 'R'):  case NewChipID('L', 'R'):
+        case OldChipID('L', 'S'):  case NewChipID('L', 'S'):
+            return ATI_CHIP_MOBILITY;
+
+        case NewChipID('R', 'E'):
+        case NewChipID('R', 'F'):
+        case NewChipID('R', 'G'):
+        case NewChipID('S', 'K'):
+        case NewChipID('S', 'L'):
+        case NewChipID('S', 'M'):
+        /* "SN" is listed as ATI_CHIP_RAGE128_4X in ATI docs */
+        case NewChipID('S', 'N'):
+            return ATI_CHIP_RAGE128GL;
+
+        case NewChipID('R', 'K'):
+        case NewChipID('R', 'L'):
+        /*
+         * ATI documentation lists SE/SF/SG under both ATI_CHIP_RAGE128VR
+         * and ATI_CHIP_RAGE128_4X, and lists SH/SK/SL under Rage 128 4X only.
+         * I'm stuffing them here for now until this can be clarified as ATI
+         * documentation doesn't mention their details. <mharris at redhat.com>
+         */
+        case NewChipID('S', 'E'):
+        case NewChipID('S', 'F'):
+        case NewChipID('S', 'G'):
+        case NewChipID('S', 'H'):
+            return ATI_CHIP_RAGE128VR;
+
+     /* case NewChipID('S', 'H'): */
+     /* case NewChipID('S', 'K'): */
+     /* case NewChipID('S', 'L'): */
+     /* case NewChipID('S', 'N'): */
+     /*     return ATI_CHIP_RAGE128_4X; */
+
+        case NewChipID('P', 'A'):
+        case NewChipID('P', 'B'):
+        case NewChipID('P', 'C'):
+        case NewChipID('P', 'D'):
+        case NewChipID('P', 'E'):
+        case NewChipID('P', 'F'):
+            return ATI_CHIP_RAGE128PROGL;
+
+        case NewChipID('P', 'G'):
+        case NewChipID('P', 'H'):
+        case NewChipID('P', 'I'):
+        case NewChipID('P', 'J'):
+        case NewChipID('P', 'K'):
+        case NewChipID('P', 'L'):
+        case NewChipID('P', 'M'):
+        case NewChipID('P', 'N'):
+        case NewChipID('P', 'O'):
+        case NewChipID('P', 'P'):
+        case NewChipID('P', 'Q'):
+        case NewChipID('P', 'R'):
+        case NewChipID('P', 'S'):
+        case NewChipID('P', 'T'):
+        case NewChipID('P', 'U'):
+        case NewChipID('P', 'V'):
+        case NewChipID('P', 'W'):
+        case NewChipID('P', 'X'):
+            return ATI_CHIP_RAGE128PROVR;
+
+        case NewChipID('T', 'F'):
+        case NewChipID('T', 'L'):
+        case NewChipID('T', 'R'):
+        case NewChipID('T', 'S'):
+        case NewChipID('T', 'T'):
+        case NewChipID('T', 'U'):
+            return ATI_CHIP_RAGE128PROULTRA;
+
+        case NewChipID('L', 'E'):
+        case NewChipID('L', 'F'):
+        /*
+         * "LK" and "LL" are not in any ATI documentation I can find
+         * - mharris
+         */
+        case NewChipID('L', 'K'):
+        case NewChipID('L', 'L'):
+            return ATI_CHIP_RAGE128MOBILITY3;
+
+        case NewChipID('M', 'F'):
+        case NewChipID('M', 'L'):
+            return ATI_CHIP_RAGE128MOBILITY4;
+
+        case NewChipID('Q', 'D'):
+        case NewChipID('Q', 'E'):
+        case NewChipID('Q', 'F'):
+        case NewChipID('Q', 'G'):
+            return ATI_CHIP_RADEON;
+
+        case NewChipID('Q', 'Y'):
+        case NewChipID('Q', 'Z'):
+        case NewChipID('Q', '^'):
+            return ATI_CHIP_RADEONVE;
+
+        case NewChipID('L', 'Y'):
+        case NewChipID('L', 'Z'):
+            return ATI_CHIP_RADEONMOBILITY6;
+
+        case NewChipID('A', '6'):
+        case NewChipID('C', '6'):
+             return ATI_CHIP_RS100;
+
+        case NewChipID('A', '7'):
+        case NewChipID('C', '7'):
+             return ATI_CHIP_RS200;
+
+        case NewChipID('D', '7'):
+        case NewChipID('B', '7'):
+             return ATI_CHIP_RS250;
+
+        case NewChipID('L', 'W'):
+        case NewChipID('L', 'X'):
+            return ATI_CHIP_RADEONMOBILITY7;
+
+        case NewChipID('Q', 'H'):
+        case NewChipID('Q', 'I'):
+        case NewChipID('Q', 'J'):
+        case NewChipID('Q', 'K'):
+        case NewChipID('Q', 'L'):
+        case NewChipID('Q', 'M'):
+        case NewChipID('Q', 'N'):
+        case NewChipID('Q', 'O'):
+        case NewChipID('Q', 'h'):
+        case NewChipID('Q', 'i'):
+        case NewChipID('Q', 'j'):
+        case NewChipID('Q', 'k'):
+        case NewChipID('Q', 'l'):
+        case NewChipID('B', 'B'):
+            return ATI_CHIP_R200;
+
+        case NewChipID('Q', 'W'):
+        case NewChipID('Q', 'X'):
+            return ATI_CHIP_RV200;
+
+        case NewChipID('I', 'f'):
+        case NewChipID('I', 'g'):
+            return ATI_CHIP_RV250;
+
+        case NewChipID('L', 'd'):
+        case NewChipID('L', 'f'):
+        case NewChipID('L', 'g'):
+            return ATI_CHIP_RADEONMOBILITY9;
+
+        case NewChipID('X', '4'):
+        case NewChipID('X', '5'):
+             return ATI_CHIP_RS300;
+
+        case NewChipID('x', '4'):
+        case NewChipID('x', '5'):
+             return ATI_CHIP_RS350;
+
+        case NewChipID('Y', '\''):
+        case NewChipID('Y', 'a'):
+        case NewChipID('Y', 'b'):
+        case NewChipID('Y', 'd'):
+        case NewChipID('Y', 'e'):
+            return ATI_CHIP_RV280;
+
+        case NewChipID('\\', 'a'):
+        case NewChipID('\\', 'c'):
+            return ATI_CHIP_RADEONMOBILITY9PLUS;
+
+        case NewChipID('A', 'D'):
+        case NewChipID('A', 'E'):
+        case NewChipID('A', 'F'):
+        case NewChipID('A', 'G'):
+        case NewChipID('N', 'D'):
+        case NewChipID('N', 'E'):
+        case NewChipID('N', 'F'):
+        case NewChipID('N', 'G'):
+            return ATI_CHIP_R300;
+
+        case NewChipID('A', 'H'):
+        case NewChipID('A', 'I'):
+        case NewChipID('A', 'J'):
+        case NewChipID('A', 'K'):
+        case NewChipID('N', 'H'):
+        case NewChipID('N', 'I'):
+        case NewChipID('N', 'K'):
+            return ATI_CHIP_R350;
+
+        case NewChipID('A', 'P'):
+        case NewChipID('A', 'Q'):
+        case NewChipID('A', 'R'):
+        case NewChipID('A', 'S'):
+        case NewChipID('A', 'T'):
+        case NewChipID('A', 'U'):
+        case NewChipID('A', 'V'):
+        case NewChipID('N', 'P'):
+        case NewChipID('N', 'Q'):
+        case NewChipID('N', 'R'):
+        case NewChipID('N', 'S'):
+        case NewChipID('N', 'T'):
+        case NewChipID('N', 'V'):
+            return ATI_CHIP_RV350;
+
+        case NewChipID('N', 'J'):
+            return ATI_CHIP_R360;
+
+        case NewChipID('[', '\''):
+        case NewChipID('[', 'b'):
+        case NewChipID('[', 'c'):
+        case NewChipID('[', 'd'):
+        case NewChipID('[', 'e'):
+        case NewChipID('T', '\''):
+        case NewChipID('T', 'b'):
+        case NewChipID('T', 'd'):
+	    return ATI_CHIP_RV370;
+
+        case NewChipID('>', 'P'):
+        case NewChipID('>', 'T'):
+        case NewChipID('1', 'P'):
+        case NewChipID('1', 'R'):
+        case NewChipID('1', 'T'):
+	    return ATI_CHIP_RV380;
+
+        case NewChipID('J', 'H'):
+        case NewChipID('J', 'I'):
+        case NewChipID('J', 'J'):
+        case NewChipID('J', 'K'):
+        case NewChipID('J', 'L'):
+        case NewChipID('J', 'M'):
+        case NewChipID('J', 'N'):
+        case NewChipID('J', 'O'):
+        case NewChipID('J', 'P'):
+        case NewChipID('J', 'T'):
+	    return ATI_CHIP_R420;
+
+        case NewChipID('U', 'H'):
+        case NewChipID('U', 'I'):
+        case NewChipID('U', 'J'):
+        case NewChipID('U', 'K'):
+        case NewChipID('U', 'P'):
+        case NewChipID('U', 'Q'):
+        case NewChipID('U', 'R'):
+        case NewChipID('U', 'T'):
+        case NewChipID(']', 'W'):
+        /* those are m28, not 100% certain they are r423 could
+	   be r480 but not r430 as their pci id names indicate... */
+        case NewChipID(']', 'H'):
+        case NewChipID(']', 'I'):
+        case NewChipID(']', 'J'):
+	    return ATI_CHIP_R423;
+
+        case NewChipID('U', 'L'):
+        case NewChipID('U', 'M'):
+        case NewChipID('U', 'N'):
+        case NewChipID('U', 'O'):
+	    return ATI_CHIP_R430;
+
+        case NewChipID(']', 'L'):
+        case NewChipID(']', 'M'):
+        case NewChipID(']', 'N'):
+        case NewChipID(']', 'O'):
+        case NewChipID(']', 'P'):
+        case NewChipID(']', 'R'):
+	    return ATI_CHIP_R480;
+
+        case NewChipID('K', 'I'):
+        case NewChipID('K', 'J'):
+        case NewChipID('K', 'K'):
+        case NewChipID('K', 'L'):
+	    return ATI_CHIP_R481;
+
+        case NewChipID('^', 'H'):
+        case NewChipID('^', 'J'):
+        case NewChipID('^', 'K'):
+        case NewChipID('^', 'L'):
+        case NewChipID('^', 'M'):
+        case NewChipID('^', 'O'):
+        case NewChipID('V', 'J'):
+        case NewChipID('V', 'K'):
+        case NewChipID('V', 'O'):
+        case NewChipID('V', 'R'):
+        case NewChipID('V', 'S'):
+	    return ATI_CHIP_RV410;
+
+        case NewChipID('Z', 'A'):
+        case NewChipID('Z', 'B'):
+        case NewChipID('Z', 'a'):
+        case NewChipID('Z', 'b'):
+        case NewChipID('Y', 'T'):
+        case NewChipID('Y', 'U'):
+        case NewChipID('Y', 't'):
+        case NewChipID('Y', 'u'):
+	    return ATI_CHIP_RS400;
+
+        case NewChipID('H', 'D'):
+            return ATI_CHIP_HDTV;
+
+        default:
+            /*
+             * Treat anything else as an unknown Radeon.  Please keep the above
+             * up-to-date however, as it serves as a central chip list.
+             */
+            return ATI_CHIP_Radeon;
+    }
+}
diff --git a/src/ati.h b/src/ati.h
index fbb8521..48ab1cd 100644
--- a/src/ati.h
+++ b/src/ati.h
@@ -33,4 +33,76 @@
 
 extern DriverRec ATI;
 
+/*
+ * Chip-related definitions.
+ */
+typedef enum
+{
+    ATI_CHIP_NONE = 0,
+    ATI_CHIP_88800GXC,          /* Mach64 */
+    ATI_CHIP_88800GXD,          /* Mach64 */
+    ATI_CHIP_88800GXE,          /* Mach64 */
+    ATI_CHIP_88800GXF,          /* Mach64 */
+    ATI_CHIP_88800GX,           /* Mach64 */
+    ATI_CHIP_88800CX,           /* Mach64 */
+    ATI_CHIP_264CT,             /* Mach64 */
+    ATI_CHIP_264ET,             /* Mach64 */
+    ATI_CHIP_264VT,             /* Mach64 */
+    ATI_CHIP_264GT,             /* Mach64 */
+    ATI_CHIP_264VTB,            /* Mach64 */
+    ATI_CHIP_264GTB,            /* Mach64 */
+    ATI_CHIP_264VT3,            /* Mach64 */
+    ATI_CHIP_264GTDVD,          /* Mach64 */
+    ATI_CHIP_264LT,             /* Mach64 */
+    ATI_CHIP_264VT4,            /* Mach64 */
+    ATI_CHIP_264GT2C,           /* Mach64 */
+    ATI_CHIP_264GTPRO,          /* Mach64 */
+    ATI_CHIP_264LTPRO,          /* Mach64 */
+    ATI_CHIP_264XL,             /* Mach64 */
+    ATI_CHIP_MOBILITY,          /* Mach64 */
+    ATI_CHIP_Mach64,            /* Last among Mach64's */
+    ATI_CHIP_RAGE128GL,         /* Rage128 */
+    ATI_CHIP_RAGE128VR,         /* Rage128 */
+    ATI_CHIP_RAGE128PROGL,      /* Rage128 */
+    ATI_CHIP_RAGE128PROVR,      /* Rage128 */
+    ATI_CHIP_RAGE128PROULTRA,   /* Rage128 */
+    ATI_CHIP_RAGE128MOBILITY3,  /* Rage128 */
+    ATI_CHIP_RAGE128MOBILITY4,  /* Rage128 */
+    ATI_CHIP_Rage128,           /* Last among Rage128's */
+    ATI_CHIP_RADEON,            /* Radeon */
+    ATI_CHIP_RADEONVE,          /* Radeon VE */
+    ATI_CHIP_RADEONMOBILITY6,   /* Radeon M6 */
+    ATI_CHIP_RS100,             /* IGP320 */
+    ATI_CHIP_RS200,             /* IGP340 */
+    ATI_CHIP_RS250,             /* Radoen 7000 IGP */
+    ATI_CHIP_RV200,             /* RV200 */
+    ATI_CHIP_RADEONMOBILITY7,   /* Radeon M7 */
+    ATI_CHIP_R200,              /* R200 */
+    ATI_CHIP_RV250,             /* RV250 */
+    ATI_CHIP_RADEONMOBILITY9,   /* Radeon M9 */
+    ATI_CHIP_RS300,             /* Radoen 9100 IGP */
+    ATI_CHIP_RS350,             /* Radoen 9200 IGP */
+    ATI_CHIP_RV280,             /* RV250 */
+    ATI_CHIP_RADEONMOBILITY9PLUS,   /* Radeon M9+ */
+    ATI_CHIP_R300,              /* R300 */
+    ATI_CHIP_RV350,             /* RV350/M10/M11 */
+    ATI_CHIP_R350,              /* R350 */
+    ATI_CHIP_R360,              /* R360 */
+    ATI_CHIP_RV370,             /* RV370/M22 */
+    ATI_CHIP_RV380,             /* RV380/M24 */
+    ATI_CHIP_R420,              /* R420/M18 */
+    ATI_CHIP_R423,              /* R423/M28? */
+    ATI_CHIP_R430,              /* R430 */
+    ATI_CHIP_R480,              /* R480/M28? */
+    ATI_CHIP_R481,              /* R481 */
+    ATI_CHIP_RV410,             /* RV410, M26 */
+    ATI_CHIP_RS400,             /* RS400, RS410, RS480, RS482, ... */
+    ATI_CHIP_Radeon,            /* Last among Radeon's */
+    ATI_CHIP_HDTV               /* HDTV */
+} ATIChipType;
+
+extern const char *ATIChipNames[];
+
+extern ATIChipType ATIChipID(const CARD16, const CARD8);
+
 #endif /* ___ATI_H___ */
diff --git a/src/atichip.c b/src/atichip.c
index 6ef423b..5f8a221 100644
--- a/src/atichip.c
+++ b/src/atichip.c
@@ -30,74 +30,6 @@
 #include "atimach64io.h"
 #include "ativersion.h"
 
-/*
- * Chip-related definitions.
- */
-const char *ATIChipNames[] =
-{
-    "Unknown",
-    "ATI 88800GX-C",
-    "ATI 88800GX-D",
-    "ATI 88800GX-E",
-    "ATI 88800GX-F",
-    "ATI 88800GX",
-    "ATI 88800CX",
-    "ATI 264CT",
-    "ATI 264ET",
-    "ATI 264VT",
-    "ATI 3D Rage",
-    "ATI 264VT-B",
-    "ATI 3D Rage II",
-    "ATI 264VT3",
-    "ATI 3D Rage II+DVD",
-    "ATI 3D Rage LT",
-    "ATI 264VT4",
-    "ATI 3D Rage IIc",
-    "ATI 3D Rage Pro",
-    "ATI 3D Rage LT Pro",
-    "ATI 3D Rage XL or XC",
-    "ATI 3D Rage Mobility",
-    "ATI unknown Mach64",
-    "ATI Rage 128 GL",
-    "ATI Rage 128 VR",
-    "ATI Rage 128 Pro GL",
-    "ATI Rage 128 Pro VR",
-    "ATI Rage 128 Pro ULTRA",
-    "ATI Rage 128 Mobility M3",
-    "ATI Rage 128 Mobility M4",
-    "ATI unknown Rage 128"
-    "ATI Radeon 7200",
-    "ATI Radeon 7000 (VE)",
-    "ATI Radeon Mobility M6",
-    "ATI Radeon IGP320",
-    "ATI Radeon IGP330/340/350",
-    "ATI Radeon 7000 IGP",
-    "ATI Radeon 7500",
-    "ATI Radeon Mobility M7",
-    "ATI Radeon 8500/9100",
-    "ATI Radeon 9000",
-    "ATI Radeon Mobility M9",
-    "ATI Radeon 9100 IGP",
-    "ATI Radeon 9200 IGP",
-    "ATI Radeon 9200",
-    "ATI Radeon Mobility M9+",
-    "ATI Radeon 9700/9500",
-    "ATI Radeon 9600/9550",
-    "ATI Radeon 9800",
-    "ATI Radeon 9800XT",
-    "ATI Radeon X300/X550/M22",
-    "ATI Radeon X600/X550/M24",
-    "ATI Radeon X800/M18 AGP",
-    "ATI Radeon X800/M28 PCIE",
-    "ATI Radeon X800XL PCIE",
-    "ATI Radeon X850 PCIE",
-    "ATI Radeon X850 AGP",
-    "ATI Radeon X700",
-    "ATI Xpress 200"
-    "ATI unknown Radeon",
-    "ATI Rage HDTV"
-};
-
 const char *ATIFoundryNames[] =
     { "SGS", "NEC", "KCS", "UMC", "TSMC", "5", "6", "UMC" };
 
@@ -337,399 +269,3 @@ ATIMach64ChipID
             break;
     }
 }
-
-/*
- * ATIChipID --
- *
- * This returns the ATI_CHIP_* value (generally) associated with a particular
- * ChipID/ChipRev combination.
- */
-ATIChipType
-ATIChipID
-(
-    const CARD16 ChipID,
-    const CARD8  ChipRev
-)
-{
-    switch (ChipID)
-    {
-        case OldChipID('G', 'X'):  case NewChipID('G', 'X'):
-            switch (ChipRev)
-            {
-                case 0x00U:
-                    return ATI_CHIP_88800GXC;
-
-                case 0x01U:
-                    return ATI_CHIP_88800GXD;
-
-                case 0x02U:
-                    return ATI_CHIP_88800GXE;
-
-                case 0x03U:
-                    return ATI_CHIP_88800GXF;
-
-                default:
-                    return ATI_CHIP_88800GX;
-            }
-
-        case OldChipID('C', 'X'):  case NewChipID('C', 'X'):
-            return ATI_CHIP_88800CX;
-
-        case OldChipID('C', 'T'):  case NewChipID('C', 'T'):
-            return ATI_CHIP_264CT;
-
-        case OldChipID('E', 'T'):  case NewChipID('E', 'T'):
-            return ATI_CHIP_264ET;
-
-        case OldChipID('V', 'T'):  case NewChipID('V', 'T'):
-            /* For simplicity, ignore ChipID discrepancy that can occur here */
-            if (!(ChipRev & GetBits(CFG_CHIP_VERSION, CFG_CHIP_REV)))
-                return ATI_CHIP_264VT;
-            return ATI_CHIP_264VTB;
-
-        case OldChipID('G', 'T'):  case NewChipID('G', 'T'):
-            if (!(ChipRev & GetBits(CFG_CHIP_VERSION, CFG_CHIP_REV)))
-                return ATI_CHIP_264GT;
-            return ATI_CHIP_264GTB;
-
-        case OldChipID('V', 'U'):  case NewChipID('V', 'U'):
-            return ATI_CHIP_264VT3;
-
-        case OldChipID('G', 'U'):  case NewChipID('G', 'U'):
-            return ATI_CHIP_264GTDVD;
-
-        case OldChipID('L', 'G'):  case NewChipID('L', 'G'):
-            return ATI_CHIP_264LT;
-
-        case OldChipID('V', 'V'):  case NewChipID('V', 'V'):
-            return ATI_CHIP_264VT4;
-
-        case OldChipID('G', 'V'):  case NewChipID('G', 'V'):
-        case OldChipID('G', 'W'):  case NewChipID('G', 'W'):
-        case OldChipID('G', 'Y'):  case NewChipID('G', 'Y'):
-        case OldChipID('G', 'Z'):  case NewChipID('G', 'Z'):
-            return ATI_CHIP_264GT2C;
-
-        case OldChipID('G', 'B'):  case NewChipID('G', 'B'):
-        case OldChipID('G', 'D'):  case NewChipID('G', 'D'):
-        case OldChipID('G', 'I'):  case NewChipID('G', 'I'):
-        case OldChipID('G', 'P'):  case NewChipID('G', 'P'):
-        case OldChipID('G', 'Q'):  case NewChipID('G', 'Q'):
-            return ATI_CHIP_264GTPRO;
-
-        case OldChipID('L', 'B'):  case NewChipID('L', 'B'):
-        case OldChipID('L', 'D'):  case NewChipID('L', 'D'):
-        case OldChipID('L', 'I'):  case NewChipID('L', 'I'):
-        case OldChipID('L', 'P'):  case NewChipID('L', 'P'):
-        case OldChipID('L', 'Q'):  case NewChipID('L', 'Q'):
-            return ATI_CHIP_264LTPRO;
-
-        case OldChipID('G', 'L'):  case NewChipID('G', 'L'):
-        case OldChipID('G', 'M'):  case NewChipID('G', 'M'):
-        case OldChipID('G', 'N'):  case NewChipID('G', 'N'):
-        case OldChipID('G', 'O'):  case NewChipID('G', 'O'):
-        case OldChipID('G', 'R'):  case NewChipID('G', 'R'):
-        case OldChipID('G', 'S'):  case NewChipID('G', 'S'):
-            return ATI_CHIP_264XL;
-
-        case OldChipID('L', 'M'):  case NewChipID('L', 'M'):
-        case OldChipID('L', 'N'):  case NewChipID('L', 'N'):
-        case OldChipID('L', 'R'):  case NewChipID('L', 'R'):
-        case OldChipID('L', 'S'):  case NewChipID('L', 'S'):
-            return ATI_CHIP_MOBILITY;
-
-        case NewChipID('R', 'E'):
-        case NewChipID('R', 'F'):
-        case NewChipID('R', 'G'):
-        case NewChipID('S', 'K'):
-        case NewChipID('S', 'L'):
-        case NewChipID('S', 'M'):
-        /* "SN" is listed as ATI_CHIP_RAGE128_4X in ATI docs */
-        case NewChipID('S', 'N'):
-            return ATI_CHIP_RAGE128GL;
-
-        case NewChipID('R', 'K'):
-        case NewChipID('R', 'L'):
-        /*
-         * ATI documentation lists SE/SF/SG under both ATI_CHIP_RAGE128VR
-         * and ATI_CHIP_RAGE128_4X, and lists SH/SK/SL under Rage 128 4X only.
-         * I'm stuffing them here for now until this can be clarified as ATI
-         * documentation doesn't mention their details. <mharris at redhat.com>
-         */
-        case NewChipID('S', 'E'):
-        case NewChipID('S', 'F'):
-        case NewChipID('S', 'G'):
-        case NewChipID('S', 'H'):
-            return ATI_CHIP_RAGE128VR;
-
-     /* case NewChipID('S', 'H'): */
-     /* case NewChipID('S', 'K'): */
-     /* case NewChipID('S', 'L'): */
-     /* case NewChipID('S', 'N'): */
-     /*     return ATI_CHIP_RAGE128_4X; */
-
-        case NewChipID('P', 'A'):
-        case NewChipID('P', 'B'):
-        case NewChipID('P', 'C'):
-        case NewChipID('P', 'D'):
-        case NewChipID('P', 'E'):
-        case NewChipID('P', 'F'):
-            return ATI_CHIP_RAGE128PROGL;
-
-        case NewChipID('P', 'G'):
-        case NewChipID('P', 'H'):
-        case NewChipID('P', 'I'):
-        case NewChipID('P', 'J'):
-        case NewChipID('P', 'K'):
-        case NewChipID('P', 'L'):
-        case NewChipID('P', 'M'):
-        case NewChipID('P', 'N'):
-        case NewChipID('P', 'O'):
-        case NewChipID('P', 'P'):
-        case NewChipID('P', 'Q'):
-        case NewChipID('P', 'R'):
-        case NewChipID('P', 'S'):
-        case NewChipID('P', 'T'):
-        case NewChipID('P', 'U'):
-        case NewChipID('P', 'V'):
-        case NewChipID('P', 'W'):
-        case NewChipID('P', 'X'):
-            return ATI_CHIP_RAGE128PROVR;
-
-        case NewChipID('T', 'F'):
-        case NewChipID('T', 'L'):
-        case NewChipID('T', 'R'):
-        case NewChipID('T', 'S'):
-        case NewChipID('T', 'T'):
-        case NewChipID('T', 'U'):
-            return ATI_CHIP_RAGE128PROULTRA;
-
-        case NewChipID('L', 'E'):
-        case NewChipID('L', 'F'):
-        /*
-         * "LK" and "LL" are not in any ATI documentation I can find
-         * - mharris
-         */
-        case NewChipID('L', 'K'):
-        case NewChipID('L', 'L'):
-            return ATI_CHIP_RAGE128MOBILITY3;
-
-        case NewChipID('M', 'F'):
-        case NewChipID('M', 'L'):
-            return ATI_CHIP_RAGE128MOBILITY4;
-
-        case NewChipID('Q', 'D'):
-        case NewChipID('Q', 'E'):
-        case NewChipID('Q', 'F'):
-        case NewChipID('Q', 'G'):
-            return ATI_CHIP_RADEON;
-
-        case NewChipID('Q', 'Y'):
-        case NewChipID('Q', 'Z'):
-        case NewChipID('Q', '^'):
-            return ATI_CHIP_RADEONVE;
-
-        case NewChipID('L', 'Y'):
-        case NewChipID('L', 'Z'):
-            return ATI_CHIP_RADEONMOBILITY6;
-
-        case NewChipID('A', '6'):
-        case NewChipID('C', '6'):
-             return ATI_CHIP_RS100;
-
-        case NewChipID('A', '7'):
-        case NewChipID('C', '7'):
-             return ATI_CHIP_RS200;
-
-        case NewChipID('D', '7'):
-        case NewChipID('B', '7'):
-             return ATI_CHIP_RS250;
-
-        case NewChipID('L', 'W'):
-        case NewChipID('L', 'X'):
-            return ATI_CHIP_RADEONMOBILITY7;
-
-        case NewChipID('Q', 'H'):
-        case NewChipID('Q', 'I'):
-        case NewChipID('Q', 'J'):
-        case NewChipID('Q', 'K'):
-        case NewChipID('Q', 'L'):
-        case NewChipID('Q', 'M'):
-        case NewChipID('Q', 'N'):
-        case NewChipID('Q', 'O'):
-        case NewChipID('Q', 'h'):
-        case NewChipID('Q', 'i'):
-        case NewChipID('Q', 'j'):
-        case NewChipID('Q', 'k'):
-        case NewChipID('Q', 'l'):
-        case NewChipID('B', 'B'):
-            return ATI_CHIP_R200;
-
-        case NewChipID('Q', 'W'):
-        case NewChipID('Q', 'X'):
-            return ATI_CHIP_RV200;
-
-        case NewChipID('I', 'f'):
-        case NewChipID('I', 'g'):
-            return ATI_CHIP_RV250;
-
-        case NewChipID('L', 'd'):
-        case NewChipID('L', 'f'):
-        case NewChipID('L', 'g'):
-            return ATI_CHIP_RADEONMOBILITY9;
-
-        case NewChipID('X', '4'):
-        case NewChipID('X', '5'):
-             return ATI_CHIP_RS300;
-
-        case NewChipID('x', '4'):
-        case NewChipID('x', '5'):
-             return ATI_CHIP_RS350;
-
-        case NewChipID('Y', '\''):
-        case NewChipID('Y', 'a'):
-        case NewChipID('Y', 'b'):
-        case NewChipID('Y', 'd'):
-        case NewChipID('Y', 'e'):
-            return ATI_CHIP_RV280;
-
-        case NewChipID('\\', 'a'):
-        case NewChipID('\\', 'c'):
-            return ATI_CHIP_RADEONMOBILITY9PLUS;
-
-        case NewChipID('A', 'D'):
-        case NewChipID('A', 'E'):
-        case NewChipID('A', 'F'):
-        case NewChipID('A', 'G'):
-        case NewChipID('N', 'D'):
-        case NewChipID('N', 'E'):
-        case NewChipID('N', 'F'):
-        case NewChipID('N', 'G'):
-            return ATI_CHIP_R300;
-
-        case NewChipID('A', 'H'):
-        case NewChipID('A', 'I'):
-        case NewChipID('A', 'J'):
-        case NewChipID('A', 'K'):
-        case NewChipID('N', 'H'):
-        case NewChipID('N', 'I'):
-        case NewChipID('N', 'K'):
-            return ATI_CHIP_R350;
-
-        case NewChipID('A', 'P'):
-        case NewChipID('A', 'Q'):
-        case NewChipID('A', 'R'):
-        case NewChipID('A', 'S'):
-        case NewChipID('A', 'T'):
-        case NewChipID('A', 'U'):
-        case NewChipID('A', 'V'):
-        case NewChipID('N', 'P'):
-        case NewChipID('N', 'Q'):
-        case NewChipID('N', 'R'):
-        case NewChipID('N', 'S'):
-        case NewChipID('N', 'T'):
-        case NewChipID('N', 'V'):
-            return ATI_CHIP_RV350;
-
-        case NewChipID('N', 'J'):
-            return ATI_CHIP_R360;
-
-        case NewChipID('[', '\''):
-        case NewChipID('[', 'b'):
-        case NewChipID('[', 'c'):
-        case NewChipID('[', 'd'):
-        case NewChipID('[', 'e'):
-        case NewChipID('T', '\''):
-        case NewChipID('T', 'b'):
-        case NewChipID('T', 'd'):
-	    return ATI_CHIP_RV370;
-
-        case NewChipID('>', 'P'):
-        case NewChipID('>', 'T'):
-        case NewChipID('1', 'P'):
-        case NewChipID('1', 'R'):
-        case NewChipID('1', 'T'):
-	    return ATI_CHIP_RV380;
-
-        case NewChipID('J', 'H'):
-        case NewChipID('J', 'I'):
-        case NewChipID('J', 'J'):
-        case NewChipID('J', 'K'):
-        case NewChipID('J', 'L'):
-        case NewChipID('J', 'M'):
-        case NewChipID('J', 'N'):
-        case NewChipID('J', 'O'):
-        case NewChipID('J', 'P'):
-        case NewChipID('J', 'T'):
-	    return ATI_CHIP_R420;
-
-        case NewChipID('U', 'H'):
-        case NewChipID('U', 'I'):
-        case NewChipID('U', 'J'):
-        case NewChipID('U', 'K'):
-        case NewChipID('U', 'P'):
-        case NewChipID('U', 'Q'):
-        case NewChipID('U', 'R'):
-        case NewChipID('U', 'T'):
-        case NewChipID(']', 'W'):
-        /* those are m28, not 100% certain they are r423 could
-	   be r480 but not r430 as their pci id names indicate... */
-        case NewChipID(']', 'H'):
-        case NewChipID(']', 'I'):
-        case NewChipID(']', 'J'):
-	    return ATI_CHIP_R423;
-
-        case NewChipID('U', 'L'):
-        case NewChipID('U', 'M'):
-        case NewChipID('U', 'N'):
-        case NewChipID('U', 'O'):
-	    return ATI_CHIP_R430;
-
-        case NewChipID(']', 'L'):
-        case NewChipID(']', 'M'):
-        case NewChipID(']', 'N'):
-        case NewChipID(']', 'O'):
-        case NewChipID(']', 'P'):
-        case NewChipID(']', 'R'):
-	    return ATI_CHIP_R480;
-
-        case NewChipID('K', 'I'):
-        case NewChipID('K', 'J'):
-        case NewChipID('K', 'K'):
-        case NewChipID('K', 'L'):
-	    return ATI_CHIP_R481;
-
-        case NewChipID('^', 'H'):
-        case NewChipID('^', 'J'):
-        case NewChipID('^', 'K'):
-        case NewChipID('^', 'L'):
-        case NewChipID('^', 'M'):
-        case NewChipID('^', 'O'):
-        case NewChipID('V', 'J'):
-        case NewChipID('V', 'K'):
-        case NewChipID('V', 'O'):
-        case NewChipID('V', 'R'):
-        case NewChipID('V', 'S'):
-	    return ATI_CHIP_RV410;
-
-        case NewChipID('Z', 'A'):
-        case NewChipID('Z', 'B'):
-        case NewChipID('Z', 'a'):
-        case NewChipID('Z', 'b'):
-        case NewChipID('Y', 'T'):
-        case NewChipID('Y', 'U'):
-        case NewChipID('Y', 't'):
-        case NewChipID('Y', 'u'):
-	    return ATI_CHIP_RS400;
-
-        case NewChipID('H', 'D'):
-            return ATI_CHIP_HDTV;
-
-        default:
-            /*
-             * Treat anything else as an unknown Radeon.  Please keep the above
-             * up-to-date however, as it serves as a central chip list.
-             */
-            return ATI_CHIP_Radeon;
-    }
-}
diff --git a/src/atichip.h b/src/atichip.h
index 733c7b1..44cd188 100644
--- a/src/atichip.h
+++ b/src/atichip.h
@@ -29,76 +29,6 @@
 #include <X11/Xmd.h>
 
 /*
- * Chip-related definitions.
- */
-typedef enum
-{
-    ATI_CHIP_NONE = 0,
-    ATI_CHIP_88800GXC,          /* Mach64 */
-    ATI_CHIP_88800GXD,          /* Mach64 */
-    ATI_CHIP_88800GXE,          /* Mach64 */
-    ATI_CHIP_88800GXF,          /* Mach64 */
-    ATI_CHIP_88800GX,           /* Mach64 */
-    ATI_CHIP_88800CX,           /* Mach64 */
-    ATI_CHIP_264CT,             /* Mach64 */
-    ATI_CHIP_264ET,             /* Mach64 */
-    ATI_CHIP_264VT,             /* Mach64 */
-    ATI_CHIP_264GT,             /* Mach64 */
-    ATI_CHIP_264VTB,            /* Mach64 */
-    ATI_CHIP_264GTB,            /* Mach64 */
-    ATI_CHIP_264VT3,            /* Mach64 */
-    ATI_CHIP_264GTDVD,          /* Mach64 */
-    ATI_CHIP_264LT,             /* Mach64 */
-    ATI_CHIP_264VT4,            /* Mach64 */
-    ATI_CHIP_264GT2C,           /* Mach64 */
-    ATI_CHIP_264GTPRO,          /* Mach64 */
-    ATI_CHIP_264LTPRO,          /* Mach64 */
-    ATI_CHIP_264XL,             /* Mach64 */
-    ATI_CHIP_MOBILITY,          /* Mach64 */
-    ATI_CHIP_Mach64,            /* Last among Mach64's */
-    ATI_CHIP_RAGE128GL,         /* Rage128 */
-    ATI_CHIP_RAGE128VR,         /* Rage128 */
-    ATI_CHIP_RAGE128PROGL,      /* Rage128 */
-    ATI_CHIP_RAGE128PROVR,      /* Rage128 */
-    ATI_CHIP_RAGE128PROULTRA,   /* Rage128 */
-    ATI_CHIP_RAGE128MOBILITY3,  /* Rage128 */
-    ATI_CHIP_RAGE128MOBILITY4,  /* Rage128 */
-    ATI_CHIP_Rage128,           /* Last among Rage128's */
-    ATI_CHIP_RADEON,            /* Radeon */
-    ATI_CHIP_RADEONVE,          /* Radeon VE */
-    ATI_CHIP_RADEONMOBILITY6,   /* Radeon M6 */
-    ATI_CHIP_RS100,             /* IGP320 */
-    ATI_CHIP_RS200,             /* IGP340 */
-    ATI_CHIP_RS250,             /* Radoen 7000 IGP */
-    ATI_CHIP_RV200,             /* RV200 */
-    ATI_CHIP_RADEONMOBILITY7,   /* Radeon M7 */
-    ATI_CHIP_R200,              /* R200 */
-    ATI_CHIP_RV250,             /* RV250 */
-    ATI_CHIP_RADEONMOBILITY9,   /* Radeon M9 */
-    ATI_CHIP_RS300,             /* Radoen 9100 IGP */
-    ATI_CHIP_RS350,             /* Radoen 9200 IGP */
-    ATI_CHIP_RV280,             /* RV250 */
-    ATI_CHIP_RADEONMOBILITY9PLUS,   /* Radeon M9+ */
-    ATI_CHIP_R300,              /* R300 */
-    ATI_CHIP_RV350,             /* RV350/M10/M11 */
-    ATI_CHIP_R350,              /* R350 */
-    ATI_CHIP_R360,              /* R360 */
-    ATI_CHIP_RV370,             /* RV370/M22 */
-    ATI_CHIP_RV380,             /* RV380/M24 */
-    ATI_CHIP_R420,              /* R420/M18 */
-    ATI_CHIP_R423,              /* R423/M28? */
-    ATI_CHIP_R430,              /* R430 */
-    ATI_CHIP_R480,              /* R480/M28? */
-    ATI_CHIP_R481,              /* R481 */
-    ATI_CHIP_RV410,             /* RV410, M26 */
-    ATI_CHIP_RS400,             /* RS400, RS410, RS480, RS482, ... */
-    ATI_CHIP_Radeon,            /* Last among Radeon's */
-    ATI_CHIP_HDTV               /* HDTV */
-} ATIChipType;
-
-extern const char *ATIChipNames[];
-
-/*
  * Foundry codes for 264xT's.
  */
 typedef enum
@@ -116,7 +46,6 @@ typedef enum
 extern const char *ATIFoundryNames[];
 
 extern void        ATIMach64ChipID(ATIPtr, const CARD16);
-extern ATIChipType ATIChipID(const CARD16, const CARD8);
 
 #define OldChipID(_1, _0) \
     (SetBits(_0 - 'A', CHIP_CODE_0) | SetBits(_1 - 'A', CHIP_CODE_1))
diff-tree aa8f5b02ebc9be60df48722588261627d6a457e8 (from 39e896a1e688ea2d2d21f88c1c5d34c5810aac1c)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Mar 24 19:53:02 2007 +0200

    [mach64] Use Mach64Chipsets[] instead of ATIChipNames[].
    
    atimisc is PCI-only now, we can get the chip name with xf86TokenToString().

diff --git a/src/atimach64probe.c b/src/atimach64probe.c
index 043cad9..c5330cc 100644
--- a/src/atimach64probe.c
+++ b/src/atimach64probe.c
@@ -38,7 +38,7 @@
 #include "atiadjust.h"
 #include "ativalid.h"
 
-static SymTabRec
+SymTabRec
 Mach64Chipsets[] = {
     {ATI_CHIP_88800GXC, "ATI 88800GX-C"},
     {ATI_CHIP_88800GXD, "ATI 88800GX-D"},
diff --git a/src/atimach64probe.h b/src/atimach64probe.h
index fa9e713..65ced98 100644
--- a/src/atimach64probe.h
+++ b/src/atimach64probe.h
@@ -25,6 +25,8 @@
 
 #include "xf86str.h"
 
+extern SymTabRec             Mach64Chipsets[];
+
 extern const OptionInfoRec * Mach64AvailableOptions(int, int);
 extern void                  Mach64Identify(int);
 extern Bool                  Mach64Probe(DriverPtr, int);
diff --git a/src/atipreinit.c b/src/atipreinit.c
index 7f0c4b2..d960e88 100644
--- a/src/atipreinit.c
+++ b/src/atipreinit.c
@@ -41,6 +41,7 @@
 #include "atimach64.h"
 #include "atimach64accel.h"
 #include "atimach64io.h"
+#include "atimach64probe.h"
 #include "atimode.h"
 #include "atioption.h"
 #include "atipreinit.h"
@@ -982,7 +983,8 @@ ATIPreInit
 
     /* Report what was found */
     xf86DrvMsg(pScreenInfo->scrnIndex, X_PROBED,
-        "%s graphics controller detected.\n", ATIChipNames[pATI->Chip]);
+        "%s graphics controller detected.\n",
+        xf86TokenToString(Mach64Chipsets, pATI->Chip));
 
     {
         Message = Buffer + snprintf(Buffer, SizeOf(Buffer), "Chip type %04X",
diff-tree 39e896a1e688ea2d2d21f88c1c5d34c5810aac1c (from f046a910ca117279fbabc6281b2e23439ec9ea4e)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Mar 24 19:47:18 2007 +0200

    [mach64] Set pATI->ChipRevision correctly, instead of overriding.
    
    There is no need to override pATI->ChipRevision for GX/CX, as it is only
    reported with a printf.

diff --git a/src/atichip.c b/src/atichip.c
index ddc7e0a..6ef423b 100644
--- a/src/atichip.c
+++ b/src/atichip.c
@@ -115,18 +115,18 @@ ATIMach64ChipID
 )
 {
     pATI->config_chip_id = inr(CONFIG_CHIP_ID);
-    pATI->ChipType       = GetBits(pATI->config_chip_id, 0xFFFFU);
+    pATI->ChipType       = GetBits(pATI->config_chip_id, CFG_CHIP_TYPE);
     pATI->ChipClass      = GetBits(pATI->config_chip_id, CFG_CHIP_CLASS);
-    pATI->ChipRevision   = GetBits(pATI->config_chip_id, CFG_CHIP_REV);
+    pATI->ChipRev        = GetBits(pATI->config_chip_id, CFG_CHIP_REV);
     pATI->ChipVersion    = GetBits(pATI->config_chip_id, CFG_CHIP_VERSION);
     pATI->ChipFoundry    = GetBits(pATI->config_chip_id, CFG_CHIP_FOUNDRY);
-    pATI->ChipRev        = pATI->ChipRevision;
+    pATI->ChipRevision   = GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
     switch (pATI->ChipType)
     {
         case OldChipID('G', 'X'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'X'):
-            switch (pATI->ChipRevision)
+            switch (pATI->ChipRev)
             {
                 case 0x00U:
                     pATI->Chip = ATI_CHIP_88800GXC;
@@ -159,8 +159,6 @@ ATIMach64ChipID
         case OldChipID('C', 'T'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('C', 'T'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264CT;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -168,8 +166,6 @@ ATIMach64ChipID
         case OldChipID('E', 'T'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('E', 'T'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264ET;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -177,8 +173,6 @@ ATIMach64ChipID
         case OldChipID('V', 'T'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('V', 'T'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264VT;
             pATI->BusType = ATI_BUS_PCI;
             /* Some early GT's are detected as VT's */
@@ -199,8 +193,6 @@ ATIMach64ChipID
         case OldChipID('G', 'T'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'T'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->BusType = ATI_BUS_PCI;
             if (!pATI->ChipVersion)
                 pATI->Chip = ATI_CHIP_264GT;
@@ -211,8 +203,6 @@ ATIMach64ChipID
         case OldChipID('V', 'U'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('V', 'U'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264VT3;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -220,8 +210,6 @@ ATIMach64ChipID
         case OldChipID('G', 'U'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'U'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264GTDVD;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -229,8 +217,6 @@ ATIMach64ChipID
         case OldChipID('L', 'G'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('L', 'G'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264LT;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -238,8 +224,6 @@ ATIMach64ChipID
         case OldChipID('V', 'V'):
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('V', 'V'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264VT4;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -249,8 +233,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'V'):
         case NewChipID('G', 'Y'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264GT2C;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -260,8 +242,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'W'):
         case NewChipID('G', 'Z'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264GT2C;
             pATI->BusType = ATI_BUS_AGP;
             break;
@@ -273,8 +253,6 @@ ATIMach64ChipID
         case NewChipID('G', 'I'):
         case NewChipID('G', 'P'):
         case NewChipID('G', 'Q'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264GTPRO;
             pATI->BusType = ATI_BUS_PCI;
             break;
@@ -284,8 +262,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'B'):
         case NewChipID('G', 'D'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264GTPRO;
             pATI->BusType = ATI_BUS_AGP;
             break;
@@ -297,8 +273,6 @@ ATIMach64ChipID
         case NewChipID('L', 'I'):
         case NewChipID('L', 'P'):
         case NewChipID('L', 'Q'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264LTPRO;
             pATI->BusType = ATI_BUS_PCI;
             pATI->LCDVBlendFIFOSize = 800;
@@ -309,8 +283,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('L', 'B'):
         case NewChipID('L', 'D'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264LTPRO;
             pATI->BusType = ATI_BUS_AGP;
             pATI->LCDVBlendFIFOSize = 800;
@@ -325,8 +297,6 @@ ATIMach64ChipID
         case NewChipID('G', 'O'):
         case NewChipID('G', 'R'):
         case NewChipID('G', 'S'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264XL;
             pATI->BusType = ATI_BUS_PCI;
             pATI->LCDVBlendFIFOSize = 1024;
@@ -337,8 +307,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('G', 'M'):
         case NewChipID('G', 'N'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_264XL;
             pATI->BusType = ATI_BUS_AGP;
             pATI->LCDVBlendFIFOSize = 1024;
@@ -349,8 +317,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('L', 'R'):
         case NewChipID('L', 'S'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_MOBILITY;
             pATI->BusType = ATI_BUS_PCI;
             pATI->LCDVBlendFIFOSize = 1024;
@@ -361,8 +327,6 @@ ATIMach64ChipID
             pATI->ChipType = OldToNewChipID(pATI->ChipType);
         case NewChipID('L', 'M'):
         case NewChipID('L', 'N'):
-            pATI->ChipRevision =
-                GetBits(pATI->config_chip_id, CFG_CHIP_REVISION);
             pATI->Chip = ATI_CHIP_MOBILITY;
             pATI->BusType = ATI_BUS_AGP;
             pATI->LCDVBlendFIFOSize = 1024;



More information about the xorg-commit mailing list