summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am11
-rw-r--r--src/ati.c96
-rw-r--r--src/atibus.h1
-rw-r--r--src/atidga.c1
-rw-r--r--src/atifillin.c1
-rw-r--r--src/atifillin.h1
-rw-r--r--src/atiident.c50
-rw-r--r--src/atimach64probe.c175
-rw-r--r--src/atimach64probe.h (renamed from src/atiident.h)10
-rw-r--r--src/atipreinit.c2
-rw-r--r--src/atiprobe.c225
-rw-r--r--src/atiprobe.h2
12 files changed, 283 insertions, 292 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index f31c0181..24f55161 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -33,8 +33,7 @@ RADEON_DRI_SRCS = radeon_dri.c
endif
if ATIMISC_CPIO
-ATI_CPIO_SOURCES = ativgaio.c
-ATIMISC_CPIO_SOURCES = ativga.c atibank.c atiwonder.c atiwonderio.c
+ATIMISC_CPIO_SOURCES = ativga.c ativgaio.c atibank.c atiwonder.c atiwonderio.c
endif
if ATIMISC_DGA
@@ -52,14 +51,14 @@ 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 atibus.c atichip.c atiident.c atioption.c \
- atiprobe.c atividmem.c atimodule.c $(ATI_CPIO_SOURCES) \
+ ati.c atichip.c atioption.c atimodule.c atimach64probe.c \
radeon_probe.c r128_probe.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 \
atiadjust.c atiaudio.c aticlock.c aticonfig.c aticonsole.c \
atidac.c atidecoder.c atidsp.c atifillin.c atii2c.c \
atilock.c atimach64.c atimach64accel.c atimach64cursor.c \
@@ -105,6 +104,7 @@ theatre200_drv_la_SOURCES = \
theatre200.c theatre200_module.c
EXTRA_DIST = \
+ atimach64render.c \
radeon_render.c \
radeon_accelfuncs.c \
\
@@ -127,14 +127,13 @@ EXTRA_DIST = \
atifillin.h \
ati.h \
atii2c.h \
- atiident.h \
atiload.h \
atilock.h \
atimach64accel.h \
atimach64.h \
atimach64i2c.h \
atimach64io.h \
- atimach64render.c \
+ atimach64probe.h \
atimode.h \
atimodule.h \
atioption.h \
diff --git a/src/ati.c b/src/ati.c
index d9c74411..4d50aecd 100644
--- a/src/ati.c
+++ b/src/ati.c
@@ -57,10 +57,102 @@
#include "config.h"
#endif
-#include "atiident.h"
+#include "ati.h"
+#include "atichip.h"
#include "atioption.h"
-#include "atiprobe.h"
#include "ativersion.h"
+#include "atimach64probe.h"
+
+#include "radeon_probe.h"
+#include "radeon_version.h"
+#include "r128_probe.h"
+#include "r128_version.h"
+
+/*
+ * ATIIdentify --
+ *
+ * Print the driver's list of chipset names.
+ */
+static void
+ATIIdentify
+(
+ int flags
+)
+{
+ xf86Msg(X_INFO, "%s: %s\n", ATI_NAME,
+ "ATI driver (version " ATI_VERSION_NAME ") for chipset: mach64");
+ R128Identify(flags);
+ RADEONIdentify(flags);
+}
+
+/*
+ * ATIProbe --
+ *
+ * This function is called once, at the start of the first server generation to
+ * do a minimal probe for supported hardware.
+ */
+static Bool
+ATIProbe
+(
+ DriverPtr pDriver,
+ int flags
+)
+{
+ pciVideoPtr pVideo, *xf86PciVideoInfo = xf86GetPciVideoInfo();
+ Bool ProbeSuccess = FALSE;
+ Bool DoMach64 = FALSE;
+ Bool DoRage128 = FALSE, DoRadeon = FALSE;
+ int i;
+ ATIChipType Chip;
+
+ if (!(flags & PROBE_DETECT))
+ {
+ if (xf86MatchDevice(ATI_NAME, NULL) > 0)
+ DoMach64 = TRUE;
+ if (xf86MatchDevice(R128_NAME, NULL) > 0)
+ DoRage128 = TRUE;
+ if (xf86MatchDevice(RADEON_NAME, NULL) > 0)
+ DoRadeon = TRUE;
+ }
+
+ if (xf86PciVideoInfo)
+ {
+ for (i = 0; (pVideo = xf86PciVideoInfo[i++]); )
+ {
+ if ((pVideo->vendor != PCI_VENDOR_ATI) ||
+ (pVideo->chipType == PCI_CHIP_MACH32))
+ continue;
+
+ /* Check for Rage128's, Radeon's and later adapters */
+ Chip = ATIChipID(pVideo->chipType, pVideo->chipRev);
+ if (Chip > ATI_CHIP_Mach64)
+ {
+ if (Chip <= ATI_CHIP_Rage128)
+ DoRage128 = TRUE;
+ else if (Chip <= ATI_CHIP_Radeon)
+ DoRadeon = TRUE;
+
+ continue;
+ }
+
+ DoMach64 = TRUE;
+ }
+ }
+
+ /* Call Mach64 driver probe */
+ if (DoMach64 && Mach64Probe(pDriver, flags))
+ ProbeSuccess = TRUE;
+
+ /* Call Rage 128 driver probe */
+ if (DoRage128 && R128Probe(pDriver, flags))
+ ProbeSuccess = TRUE;
+
+ /* Call Radeon driver probe */
+ if (DoRadeon && RADEONProbe(pDriver, flags))
+ ProbeSuccess = TRUE;
+
+ return ProbeSuccess;
+}
/* The root of all evil... */
_X_EXPORT DriverRec ATI =
diff --git a/src/atibus.h b/src/atibus.h
index c5c676ef..e5f1afd1 100644
--- a/src/atibus.h
+++ b/src/atibus.h
@@ -44,7 +44,6 @@ typedef enum
extern const char *ATIBusNames[];
-extern Bool ATIMach64ProbeIO(pciVideoPtr, ATIPtr);
extern int ATIClaimBusSlot(Bool, ATIPtr);
#endif /* ___ATIBUS_H___ */
diff --git a/src/atidga.c b/src/atidga.c
index e6783a44..fb6d1d73 100644
--- a/src/atidga.c
+++ b/src/atidga.c
@@ -32,7 +32,6 @@
#include "atichip.h"
#include "atidac.h"
#include "atidga.h"
-#include "atiident.h"
#include "atimode.h"
#include "atistruct.h"
diff --git a/src/atifillin.c b/src/atifillin.c
index 32e8483f..dcbcb3c8 100644
--- a/src/atifillin.c
+++ b/src/atifillin.c
@@ -36,7 +36,6 @@ _X_EXPORT void ATIFillInScreenInfo(ScrnInfoPtr pScreenInfo)
pScreenInfo->driverVersion = ATI_VERSION_CURRENT;
pScreenInfo->driverName = ATI_DRIVER_NAME;
pScreenInfo->name = ATI_NAME;
- pScreenInfo->Probe = ATIProbe;
pScreenInfo->PreInit = ATIPreInit;
pScreenInfo->ScreenInit = ATIScreenInit;
pScreenInfo->SwitchMode = ATISwitchMode;
diff --git a/src/atifillin.h b/src/atifillin.h
index 2e9c5d4f..7d5e54da 100644
--- a/src/atifillin.h
+++ b/src/atifillin.h
@@ -30,7 +30,6 @@
/* include headers corresponding to fields touched by ATIFillInScreenInfo() */
#include "ativersion.h"
-#include "atiprobe.h"
#include "atipreinit.h"
#include "atiscreen.h"
#include "aticonsole.h"
diff --git a/src/atiident.c b/src/atiident.c
deleted file mode 100644
index cffa8170..00000000
--- a/src/atiident.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of Marc Aurele La France not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Marc Aurele La France makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as-is" without express or implied warranty.
- *
- * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
- * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "ati.h"
-#include "atiident.h"
-#include "atiutil.h"
-#include "ativersion.h"
-
-#include "r128_probe.h"
-#include "radeon_probe.h"
-
-/*
- * ATIIdentify --
- *
- * Print the driver's list of chipset names.
- */
-void
-ATIIdentify
-(
- int flags
-)
-{
- xf86Msg(X_INFO, "%s: %s\n", ATI_NAME,
- "ATI driver (version " ATI_VERSION_NAME ") for chipset: mach64");
- R128Identify(flags);
- RADEONIdentify(flags);
-}
diff --git a/src/atimach64probe.c b/src/atimach64probe.c
new file mode 100644
index 00000000..ea01f676
--- /dev/null
+++ b/src/atimach64probe.c
@@ -0,0 +1,175 @@
+/*
+ * Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of Marc Aurele La France not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Marc Aurele La France makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as-is" without express or implied warranty.
+ *
+ * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "ati.h"
+#include "atichip.h"
+#include "atifillin.h"
+#include "atimodule.h"
+#include "atimach64io.h"
+#include "atimach64probe.h"
+#include "ativersion.h"
+
+static SymTabRec
+Mach64Chipsets[] = {
+ {ATI_CHIP_88800GXC, "ATI 88800GX-C"},
+ {ATI_CHIP_88800GXD, "ATI 88800GX-D"},
+ {ATI_CHIP_88800GXE, "ATI 88800GX-E"},
+ {ATI_CHIP_88800GXF, "ATI 88800GX-F"},
+ {ATI_CHIP_88800GX, "ATI 88800GX"},
+ {ATI_CHIP_88800CX, "ATI 88800CX"},
+ {ATI_CHIP_264CT, "ATI 264CT"},
+ {ATI_CHIP_264ET, "ATI 264ET"},
+ {ATI_CHIP_264VT, "ATI 264VT"},
+ {ATI_CHIP_264VTB, "ATI 264VT-B"},
+ {ATI_CHIP_264GT, "ATI 3D Rage"},
+ {ATI_CHIP_264GTB, "ATI 3D Rage II"},
+ {ATI_CHIP_264VT3, "ATI 264VT3"},
+ {ATI_CHIP_264GTDVD, "ATI 3D Rage II+DVD"},
+ {ATI_CHIP_264LT, "ATI 3D Rage LT"},
+ {ATI_CHIP_264VT4, "ATI 264VT4"},
+ {ATI_CHIP_264GT2C, "ATI 3D Rage IIc"},
+ {ATI_CHIP_264GTPRO, "ATI 3D Rage Pro"},
+ {ATI_CHIP_264LTPRO, "ATI 3D Rage LT Pro"},
+ {ATI_CHIP_264XL, "ATI 3D Rage XL or XC"},
+ {ATI_CHIP_MOBILITY, "ATI 3D Rage Mobility"},
+ {-1, NULL }
+};
+
+/*
+ * This table maps a PCI device ID to a chipset family identifier.
+ */
+static PciChipsets
+Mach64PciChipsets[] = {
+ {ATI_CHIP_88800GX, PCI_CHIP_MACH64GX, RES_SHARED_VGA},
+ {ATI_CHIP_88800CX, PCI_CHIP_MACH64CX, RES_SHARED_VGA},
+ {ATI_CHIP_264CT, PCI_CHIP_MACH64CT, RES_SHARED_VGA},
+ {ATI_CHIP_264ET, PCI_CHIP_MACH64ET, RES_SHARED_VGA},
+ {ATI_CHIP_264VT, PCI_CHIP_MACH64VT, RES_SHARED_VGA},
+ {ATI_CHIP_264GT, PCI_CHIP_MACH64GT, RES_SHARED_VGA},
+ {ATI_CHIP_264VT3, PCI_CHIP_MACH64VU, RES_SHARED_VGA},
+ {ATI_CHIP_264GTDVD, PCI_CHIP_MACH64GU, RES_SHARED_VGA},
+ {ATI_CHIP_264LT, PCI_CHIP_MACH64LG, RES_SHARED_VGA},
+ {ATI_CHIP_264VT4, PCI_CHIP_MACH64VV, RES_SHARED_VGA},
+ {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GV, RES_SHARED_VGA},
+ {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GW, RES_SHARED_VGA},
+ {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GY, RES_SHARED_VGA},
+ {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GZ, RES_SHARED_VGA},
+ {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GB, RES_SHARED_VGA},
+ {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GD, RES_SHARED_VGA},
+ {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GI, RES_SHARED_VGA},
+ {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GP, RES_SHARED_VGA},
+ {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GQ, RES_SHARED_VGA},
+ {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LB, RES_SHARED_VGA},
+ {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LD, RES_SHARED_VGA},
+ {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LI, RES_SHARED_VGA},
+ {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LP, RES_SHARED_VGA},
+ {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LQ, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GL, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GM, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GN, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GO, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GR, RES_SHARED_VGA},
+ {ATI_CHIP_264XL, PCI_CHIP_MACH64GS, RES_SHARED_VGA},
+ {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LM, RES_SHARED_VGA},
+ {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LN, RES_SHARED_VGA},
+ {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LR, RES_SHARED_VGA},
+ {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LS, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED}
+};
+
+/*
+ * Mach64Probe --
+ *
+ * This function is called once, at the start of the first server generation to
+ * do a minimal probe for supported hardware.
+ */
+Bool
+Mach64Probe(DriverPtr pDriver, int flags)
+{
+ GDevPtr *devSections;
+ int *usedChips;
+ int numDevSections;
+ int numUsed;
+ Bool ProbeSuccess = FALSE;
+
+ if ((numDevSections = xf86MatchDevice(ATI_DRIVER_NAME, &devSections)) <= 0)
+ return FALSE;
+
+ if (xf86GetPciVideoInfo() == NULL)
+ return FALSE;
+
+ numUsed = xf86MatchPciInstances(ATI_DRIVER_NAME, PCI_VENDOR_ATI,
+ Mach64Chipsets, Mach64PciChipsets,
+ devSections, numDevSections,
+ pDriver, &usedChips);
+ xfree(devSections);
+
+ if (numUsed <= 0)
+ return FALSE;
+
+ if (flags & PROBE_DETECT) {
+ ProbeSuccess = TRUE;
+ } else {
+ int i;
+
+ for (i = 0; i < numUsed; i++) {
+ ScrnInfoPtr pScrn;
+ EntityInfoPtr pEnt;
+ pciVideoPtr pVideo;
+
+ pScrn = xf86ConfigPciEntity(NULL, 0, usedChips[i], Mach64PciChipsets,
+ 0, 0, 0, 0, NULL);
+
+ if (!pScrn)
+ continue;
+
+ pEnt = xf86GetEntityInfo(usedChips[i]);
+ pVideo = xf86GetPciInfoForEntity(usedChips[i]);
+
+#ifdef XFree86LOADER
+
+ if (!xf86LoadSubModule(pScrn, "atimisc"))
+ {
+ xf86Msg(X_ERROR,
+ ATI_NAME ": Failed to load \"atimisc\" module.\n");
+ xf86DeleteScreen(pScrn->scrnIndex, 0);
+ continue;
+ }
+
+ xf86LoaderReqSymLists(ATISymbols, NULL);
+
+#endif
+
+ ATIFillInScreenInfo(pScrn);
+
+ pScrn->Probe = Mach64Probe;
+
+ ProbeSuccess = TRUE;
+ }
+ }
+
+ return ProbeSuccess;
+}
diff --git a/src/atiident.h b/src/atimach64probe.h
index 38699ec6..24e85d8e 100644
--- a/src/atiident.h
+++ b/src/atimach64probe.h
@@ -20,9 +20,11 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-#ifndef ___ATIIDENT_H___
-#define ___ATIIDENT_H___ 1
+#ifndef ___ATIMACH64PROBE_H___
+#define ___ATIMACH64PROBE_H___ 1
-extern void ATIIdentify(int);
+#include "xf86str.h"
-#endif /* ___ATIIDENT_H___ */
+extern Bool Mach64Probe(DriverPtr, int);
+
+#endif /* ___ATIMACH64PROBE_H___ */
diff --git a/src/atipreinit.c b/src/atipreinit.c
index e18e27ac..8ca16eb2 100644
--- a/src/atipreinit.c
+++ b/src/atipreinit.c
@@ -37,7 +37,6 @@
#include "atidac.h"
#include "atidsp.h"
#include "atii2c.h"
-#include "atiident.h"
#include "atiload.h"
#include "atilock.h"
#include "atimach64.h"
@@ -46,6 +45,7 @@
#include "atimode.h"
#include "atipreinit.h"
#include "atiprint.h"
+#include "atiprobe.h"
#include "atividmem.h"
#include "atiwonderio.h"
#include "atixv.h"
diff --git a/src/atiprobe.c b/src/atiprobe.c
index e869bf0d..4a70f81e 100644
--- a/src/atiprobe.c
+++ b/src/atiprobe.c
@@ -28,27 +28,15 @@
#include <stdio.h>
#include "ati.h"
-#include "atiadjust.h"
#include "atibus.h"
#include "atichip.h"
-#include "aticonsole.h"
-#include "atifillin.h"
-#include "atiident.h"
#include "atimach64io.h"
#include "atimodule.h"
-#include "atipreinit.h"
#include "atiprobe.h"
-#include "atiscreen.h"
-#include "ativalid.h"
#include "ativersion.h"
#include "atividmem.h"
#include "atiwonderio.h"
-#include "radeon_probe.h"
-#include "radeon_version.h"
-#include "r128_probe.h"
-#include "r128_version.h"
-
#ifndef AVOID_CPIO
/*
@@ -280,7 +268,7 @@ LastProbe:
* This function looks for a Mach64 at a particular PIO address and returns an
* ATIRec if one is found.
*/
-ATIPtr
+static ATIPtr
ATIMach64Probe
(
ATIPtr pATI,
@@ -530,214 +518,3 @@ SkipSparse:
return ProbeSuccess;
}
-
-static SymTabRec
-Mach64Chipsets[] = {
- {ATI_CHIP_88800GXC, "ATI 88800GX-C"},
- {ATI_CHIP_88800GXD, "ATI 88800GX-D"},
- {ATI_CHIP_88800GXE, "ATI 88800GX-E"},
- {ATI_CHIP_88800GXF, "ATI 88800GX-F"},
- {ATI_CHIP_88800GX, "ATI 88800GX"},
- {ATI_CHIP_88800CX, "ATI 88800CX"},
- {ATI_CHIP_264CT, "ATI 264CT"},
- {ATI_CHIP_264ET, "ATI 264ET"},
- {ATI_CHIP_264VT, "ATI 264VT"},
- {ATI_CHIP_264VTB, "ATI 264VT-B"},
- {ATI_CHIP_264GT, "ATI 3D Rage"},
- {ATI_CHIP_264GTB, "ATI 3D Rage II"},
- {ATI_CHIP_264VT3, "ATI 264VT3"},
- {ATI_CHIP_264GTDVD, "ATI 3D Rage II+DVD"},
- {ATI_CHIP_264LT, "ATI 3D Rage LT"},
- {ATI_CHIP_264VT4, "ATI 264VT4"},
- {ATI_CHIP_264GT2C, "ATI 3D Rage IIc"},
- {ATI_CHIP_264GTPRO, "ATI 3D Rage Pro"},
- {ATI_CHIP_264LTPRO, "ATI 3D Rage LT Pro"},
- {ATI_CHIP_264XL, "ATI 3D Rage XL or XC"},
- {ATI_CHIP_MOBILITY, "ATI 3D Rage Mobility"},
- {-1, NULL }
-};
-
-/*
- * This table maps a PCI device ID to a chipset family identifier.
- */
-static PciChipsets
-Mach64PciChipsets[] = {
- {ATI_CHIP_88800GX, PCI_CHIP_MACH64GX, RES_SHARED_VGA},
- {ATI_CHIP_88800CX, PCI_CHIP_MACH64CX, RES_SHARED_VGA},
- {ATI_CHIP_264CT, PCI_CHIP_MACH64CT, RES_SHARED_VGA},
- {ATI_CHIP_264ET, PCI_CHIP_MACH64ET, RES_SHARED_VGA},
- {ATI_CHIP_264VT, PCI_CHIP_MACH64VT, RES_SHARED_VGA},
- {ATI_CHIP_264GT, PCI_CHIP_MACH64GT, RES_SHARED_VGA},
- {ATI_CHIP_264VT3, PCI_CHIP_MACH64VU, RES_SHARED_VGA},
- {ATI_CHIP_264GTDVD, PCI_CHIP_MACH64GU, RES_SHARED_VGA},
- {ATI_CHIP_264LT, PCI_CHIP_MACH64LG, RES_SHARED_VGA},
- {ATI_CHIP_264VT4, PCI_CHIP_MACH64VV, RES_SHARED_VGA},
- {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GV, RES_SHARED_VGA},
- {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GW, RES_SHARED_VGA},
- {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GY, RES_SHARED_VGA},
- {ATI_CHIP_264GT2C, PCI_CHIP_MACH64GZ, RES_SHARED_VGA},
- {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GB, RES_SHARED_VGA},
- {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GD, RES_SHARED_VGA},
- {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GI, RES_SHARED_VGA},
- {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GP, RES_SHARED_VGA},
- {ATI_CHIP_264GTPRO, PCI_CHIP_MACH64GQ, RES_SHARED_VGA},
- {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LB, RES_SHARED_VGA},
- {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LD, RES_SHARED_VGA},
- {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LI, RES_SHARED_VGA},
- {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LP, RES_SHARED_VGA},
- {ATI_CHIP_264LTPRO, PCI_CHIP_MACH64LQ, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GL, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GM, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GN, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GO, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GR, RES_SHARED_VGA},
- {ATI_CHIP_264XL, PCI_CHIP_MACH64GS, RES_SHARED_VGA},
- {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LM, RES_SHARED_VGA},
- {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LN, RES_SHARED_VGA},
- {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LR, RES_SHARED_VGA},
- {ATI_CHIP_MOBILITY, PCI_CHIP_MACH64LS, RES_SHARED_VGA},
- {-1, -1, RES_UNDEFINED}
-};
-
-/*
- * Mach64Probe --
- *
- * This function is called once, at the start of the first server generation to
- * do a minimal probe for supported hardware.
- */
-static Bool
-Mach64Probe(DriverPtr pDriver, int flags)
-{
- GDevPtr *devSections;
- int *usedChips;
- int numDevSections;
- int numUsed;
- Bool ProbeSuccess = FALSE;
-
- if ((numDevSections = xf86MatchDevice(ATI_DRIVER_NAME, &devSections)) <= 0)
- return FALSE;
-
- if (xf86GetPciVideoInfo() == NULL)
- return FALSE;
-
- numUsed = xf86MatchPciInstances(ATI_DRIVER_NAME, PCI_VENDOR_ATI,
- Mach64Chipsets, Mach64PciChipsets,
- devSections, numDevSections,
- pDriver, &usedChips);
- xfree(devSections);
-
- if (numUsed <= 0)
- return FALSE;
-
- if (flags & PROBE_DETECT) {
- ProbeSuccess = TRUE;
- } else {
- int i;
-
- for (i = 0; i < numUsed; i++) {
- ScrnInfoPtr pScrn;
- EntityInfoPtr pEnt;
- pciVideoPtr pVideo;
-
- pScrn = xf86ConfigPciEntity(NULL, 0, usedChips[i], Mach64PciChipsets,
- 0, 0, 0, 0, NULL);
-
- if (!pScrn)
- continue;
-
- pEnt = xf86GetEntityInfo(usedChips[i]);
- pVideo = xf86GetPciInfoForEntity(usedChips[i]);
-
-#ifdef XFree86LOADER
-
- if (!xf86LoadSubModule(pScrn, "atimisc"))
- {
- xf86Msg(X_ERROR,
- ATI_NAME ": Failed to load \"atimisc\" module.\n");
- xf86DeleteScreen(pScrn->scrnIndex, 0);
- continue;
- }
-
- xf86LoaderReqSymLists(ATISymbols, NULL);
-
-#endif
-
- ATIFillInScreenInfo(pScrn);
-
- pScrn->Probe = Mach64Probe;
-
- ProbeSuccess = TRUE;
- }
- }
-
- return ProbeSuccess;
-}
-
-/*
- * ATIProbe --
- *
- * This function is called once, at the start of the first server generation to
- * do a minimal probe for supported hardware.
- */
-Bool
-ATIProbe
-(
- DriverPtr pDriver,
- int flags
-)
-{
- pciVideoPtr pVideo, *xf86PciVideoInfo = xf86GetPciVideoInfo();
- Bool ProbeSuccess = FALSE;
- Bool DoMach64 = FALSE;
- Bool DoRage128 = FALSE, DoRadeon = FALSE;
- int i;
- ATIChipType Chip;
-
- if (!(flags & PROBE_DETECT))
- {
- if (xf86MatchDevice(ATI_NAME, NULL) > 0)
- DoMach64 = TRUE;
- if (xf86MatchDevice(R128_NAME, NULL) > 0)
- DoRage128 = TRUE;
- if (xf86MatchDevice(RADEON_NAME, NULL) > 0)
- DoRadeon = TRUE;
- }
-
- if (xf86PciVideoInfo)
- {
- for (i = 0; (pVideo = xf86PciVideoInfo[i++]); )
- {
- if ((pVideo->vendor != PCI_VENDOR_ATI) ||
- (pVideo->chipType == PCI_CHIP_MACH32))
- continue;
-
- /* Check for Rage128's, Radeon's and later adapters */
- Chip = ATIChipID(pVideo->chipType, pVideo->chipRev);
- if (Chip > ATI_CHIP_Mach64)
- {
- if (Chip <= ATI_CHIP_Rage128)
- DoRage128 = TRUE;
- else if (Chip <= ATI_CHIP_Radeon)
- DoRadeon = TRUE;
-
- continue;
- }
-
- DoMach64 = TRUE;
- }
- }
-
- /* Call Mach64 driver probe */
- if (DoMach64 && Mach64Probe(pDriver, flags))
- ProbeSuccess = TRUE;
-
- /* Call Rage 128 driver probe */
- if (DoRage128 && R128Probe(pDriver, flags))
- ProbeSuccess = TRUE;
-
- /* Call Radeon driver probe */
- if (DoRadeon && RADEONProbe(pDriver, flags))
- ProbeSuccess = TRUE;
-
- return ProbeSuccess;
-}
diff --git a/src/atiprobe.h b/src/atiprobe.h
index 4081fb31..6195eb43 100644
--- a/src/atiprobe.h
+++ b/src/atiprobe.h
@@ -25,6 +25,6 @@
#include "xf86str.h"
-extern Bool ATIProbe(DriverPtr, int);
+extern Bool ATIMach64ProbeIO(pciVideoPtr, ATIPtr);
#endif /* ___ATIPROBE_H___ */