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

George Sapountzis gsap7 at kemper.freedesktop.org
Fri Mar 23 23:28:58 EET 2007


 src/Makefile.am      |   15 ++---
 src/ati.c            |  135 ++++++++++++++++++++++++++++++++++-----------------
 src/atiadjust.c      |    2 
 src/aticonfig.c      |    2 
 src/aticonsole.c     |    8 +--
 src/atifillin.c      |   47 -----------------
 src/atifillin.h      |   41 ---------------
 src/atimach64probe.c |   78 +++++++++++++++++------------
 src/atimach64probe.h |    1 
 src/atimodule.c      |   40 +++------------
 src/atipreinit.c     |    2 
 src/atiprobe.c       |    1 
 src/atiscreen.c      |    2 
 src/ativalid.c       |    2 
 src/r128_driver.c    |   33 +++---------
 src/r128_probe.c     |   33 +++++-------
 src/r128_probe.h     |    2 
 src/radeon_driver.c  |   38 +++-----------
 src/radeon_probe.c   |   32 ++++++------
 src/radeon_probe.h   |    2 
 20 files changed, 213 insertions(+), 303 deletions(-)

New commits:
diff-tree f046a910ca117279fbabc6281b2e23439ec9ea4e (from 9cd175d9cd4ed710fccb303664c77519ecaf1e21)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Mar 23 22:19:17 2007 +0200

    Drop probing by driver name from "Device" section.
    
    atimisc is PCI-only now, so we only need to scan the PCI space.

diff --git a/src/ati.c b/src/ati.c
index fa7d9e8..4ef53e3 100644
--- a/src/ati.c
+++ b/src/ati.c
@@ -101,46 +101,33 @@ ATIProbe
     int       flags
 )
 {
-    pciVideoPtr pVideo, *xf86PciVideoInfo = xf86GetPciVideoInfo();
+    pciVideoPtr pVideo;
+    pciVideoPtr *xf86PciVideoInfo;
     Bool        DoMach64 = FALSE;
     Bool        DoRage128 = FALSE, DoRadeon = FALSE;
-    int         i;
     ATIChipType Chip;
 
-    if (!(flags & PROBE_DETECT))
+    xf86PciVideoInfo = xf86GetPciVideoInfo();
+
+    if (xf86PciVideoInfo == NULL)
+        return FALSE;
+
+    while ((pVideo = *xf86PciVideoInfo++) != NULL)
     {
-        if (xf86MatchDevice(ATI_NAME, NULL) > 0)
+        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)
             DoMach64 = TRUE;
-        if (xf86MatchDevice(R128_NAME, NULL) > 0)
+        else if (Chip <= ATI_CHIP_Rage128)
             DoRage128 = TRUE;
-        if (xf86MatchDevice(RADEON_NAME, NULL) > 0)
+        else if (Chip <= ATI_CHIP_Radeon)
             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 Radeon driver probe */
     if (DoRadeon)
     {
diff-tree 9cd175d9cd4ed710fccb303664c77519ecaf1e21 (from d7a8cd0e476034796fc38e25a28cd28d05ea4a13)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Mar 23 22:12:48 2007 +0200

    Fold FillIn() back to Probe().

diff --git a/src/Makefile.am b/src/Makefile.am
index 197c486..1da3740 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -59,7 +59,7 @@ 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 \
+	atidac.c atidecoder.c atidsp.c atii2c.c \
 	atilock.c atimach64.c atimach64accel.c atimach64cursor.c \
 	atimach64i2c.c atimach64io.c atimach64xv.c atimode.c atipreinit.c \
 	atiprint.c atirgb514.c atiscreen.c atituner.c atiutil.c ativalid.c \
@@ -123,7 +123,6 @@ EXTRA_DIST = \
 	atidri.h \
 	atidripriv.h \
 	atidsp.h \
-	atifillin.h \
 	ati.h \
 	atii2c.h \
 	atiload.h \
diff --git a/src/atifillin.c b/src/atifillin.c
deleted file mode 100644
index 41d4964..0000000
--- a/src/atifillin.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2004 Adam Jackson.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * atifillin.c: fill in a ScrnInfoPtr with the relevant information for
- * atimisc.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "atifillin.h"
-
-void ATIFillInScreenInfo(ScrnInfoPtr pScreenInfo)
-{
-    pScreenInfo->driverVersion = ATI_VERSION_CURRENT;
-    pScreenInfo->driverName    = ATI_DRIVER_NAME;
-    pScreenInfo->name          = ATI_NAME;
-    pScreenInfo->PreInit       = ATIPreInit;
-    pScreenInfo->ScreenInit    = ATIScreenInit;
-    pScreenInfo->SwitchMode    = ATISwitchMode;
-    pScreenInfo->AdjustFrame   = ATIAdjustFrame;
-    pScreenInfo->EnterVT       = ATIEnterVT;
-    pScreenInfo->LeaveVT       = ATILeaveVT;
-    pScreenInfo->FreeScreen    = ATIFreeScreen;
-    pScreenInfo->ValidMode     = ATIValidMode;
-}
diff --git a/src/atifillin.h b/src/atifillin.h
deleted file mode 100644
index 7d5e54d..0000000
--- a/src/atifillin.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2004 Adam Jackson.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * atifillin.h: header for atifillin.c.
- */
-
-#ifndef ATI_FILLIN_H
-#define ATI_FILLIN_H
-
-/* include headers corresponding to fields touched by ATIFillInScreenInfo() */
-
-#include "ativersion.h"
-#include "atipreinit.h"
-#include "atiscreen.h"
-#include "aticonsole.h"
-#include "atiadjust.h"
-#include "ativalid.h"
-
-extern void ATIFillInScreenInfo(ScrnInfoPtr);
-
-#endif
diff --git a/src/atimach64probe.c b/src/atimach64probe.c
index cff8bfb..043cad9 100644
--- a/src/atimach64probe.c
+++ b/src/atimach64probe.c
@@ -26,13 +26,18 @@
 
 #include "ati.h"
 #include "atichip.h"
-#include "atifillin.h"
-#include "atimodule.h"
 #include "atimach64io.h"
 #include "atimach64probe.h"
 #include "atioption.h"
 #include "ativersion.h"
 
+/* include headers corresponding to ScrnInfoPtr fields */
+#include "atipreinit.h"
+#include "atiscreen.h"
+#include "aticonsole.h"
+#include "atiadjust.h"
+#include "ativalid.h"
+
 static SymTabRec
 Mach64Chipsets[] = {
     {ATI_CHIP_88800GXC, "ATI 88800GX-C"},
@@ -135,16 +140,16 @@ Mach64Identify
 _X_EXPORT Bool
 Mach64Probe(DriverPtr pDriver, int flags)
 {
-    GDevPtr  *devSections;
-    int  *usedChips;
-    int  numDevSections;
-    int  numUsed;
-    Bool  ProbeSuccess = FALSE;
+    GDevPtr *devSections;
+    int     *usedChips;
+    int     numDevSections;
+    int     numUsed;
+    Bool    ProbeSuccess = FALSE;
 
-    if ((numDevSections = xf86MatchDevice(ATI_DRIVER_NAME, &devSections)) <= 0)
+    if (xf86GetPciVideoInfo() == NULL)
         return FALSE;
 
-    if (xf86GetPciVideoInfo() == NULL)
+    if ((numDevSections = xf86MatchDevice(ATI_DRIVER_NAME, &devSections)) <= 0)
         return FALSE;
 
     numUsed = xf86MatchPciInstances(ATI_DRIVER_NAME, PCI_VENDOR_ATI,
@@ -163,8 +168,6 @@ Mach64Probe(DriverPtr pDriver, int flags
 
         for (i = 0; i < numUsed; i++) {
             ScrnInfoPtr pScrn;
-            EntityInfoPtr pEnt;
-            pciVideoPtr pVideo;
 
             pScrn = xf86ConfigPciEntity(NULL, 0, usedChips[i], Mach64PciChipsets,
                                         0, 0, 0, 0, NULL);
@@ -172,16 +175,24 @@ Mach64Probe(DriverPtr pDriver, int flags
             if (!pScrn)
                 continue;
 
-            pEnt = xf86GetEntityInfo(usedChips[i]);
-            pVideo = xf86GetPciInfoForEntity(usedChips[i]);
-
-            ATIFillInScreenInfo(pScrn);
-
-            pScrn->Probe = Mach64Probe;
+            pScrn->driverVersion = ATI_VERSION_CURRENT;
+            pScrn->driverName    = ATI_DRIVER_NAME;
+            pScrn->name          = ATI_NAME;
+            pScrn->Probe         = Mach64Probe;
+            pScrn->PreInit       = ATIPreInit;
+            pScrn->ScreenInit    = ATIScreenInit;
+            pScrn->SwitchMode    = ATISwitchMode;
+            pScrn->AdjustFrame   = ATIAdjustFrame;
+            pScrn->EnterVT       = ATIEnterVT;
+            pScrn->LeaveVT       = ATILeaveVT;
+            pScrn->FreeScreen    = ATIFreeScreen;
+            pScrn->ValidMode     = ATIValidMode;
 
             ProbeSuccess = TRUE;
         }
     }
 
+    xfree(usedChips);
+
     return ProbeSuccess;
 }
diff --git a/src/atiprobe.c b/src/atiprobe.c
index 4a70f81..5f22032 100644
--- a/src/atiprobe.c
+++ b/src/atiprobe.c
@@ -31,7 +31,6 @@
 #include "atibus.h"
 #include "atichip.h"
 #include "atimach64io.h"
-#include "atimodule.h"
 #include "atiprobe.h"
 #include "ativersion.h"
 #include "atividmem.h"
diff --git a/src/r128_driver.c b/src/r128_driver.c
index 01276e0..b03bd42 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -4605,18 +4605,3 @@ static int r128_set_backlight_enable(Scr
 
 	return 0;
 }
-
-void R128FillInScreenInfo(ScrnInfoPtr pScrn)
-{
-	pScrn->driverVersion = R128_VERSION_CURRENT;
-	pScrn->driverName    = R128_DRIVER_NAME;
-	pScrn->name          = R128_NAME;
-	pScrn->PreInit       = R128PreInit;
-	pScrn->ScreenInit    = R128ScreenInit;
-	pScrn->SwitchMode    = R128SwitchMode;
-	pScrn->AdjustFrame   = R128AdjustFrame;
-	pScrn->EnterVT       = R128EnterVT;
-	pScrn->LeaveVT       = R128LeaveVT;
-	pScrn->FreeScreen    = R128FreeScreen;
-	pScrn->ValidMode     = R128ValidMode;
-}
diff --git a/src/r128_probe.c b/src/r128_probe.c
index 836f1d0..81ff663 100644
--- a/src/r128_probe.c
+++ b/src/r128_probe.c
@@ -41,7 +41,6 @@
  * Modified by Marc Aurele La France <tsi at xfree86.org> for ATI driver merge.
  */
 
-#include "atimodule.h"
 #include "ativersion.h"
 
 #include "r128_probe.h"
@@ -194,8 +193,18 @@ R128Probe(DriverPtr drv, int flags)
         if((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
              R128PciChipsets, 0, 0, 0, 0, 0)))
 	{
+	    pScrn->driverVersion = R128_VERSION_CURRENT;
+	    pScrn->driverName    = R128_DRIVER_NAME;
+	    pScrn->name          = R128_NAME;
 	    pScrn->Probe         = R128Probe;
-	    R128FillInScreenInfo(pScrn);
+	    pScrn->PreInit       = R128PreInit;
+	    pScrn->ScreenInit    = R128ScreenInit;
+	    pScrn->SwitchMode    = R128SwitchMode;
+	    pScrn->AdjustFrame   = R128AdjustFrame;
+	    pScrn->EnterVT       = R128EnterVT;
+	    pScrn->LeaveVT       = R128LeaveVT;
+	    pScrn->FreeScreen    = R128FreeScreen;
+	    pScrn->ValidMode     = R128ValidMode;
 
 	    foundScreen          = TRUE;
 
diff --git a/src/r128_probe.h b/src/r128_probe.h
index 9150296..180e52a 100644
--- a/src/r128_probe.h
+++ b/src/r128_probe.h
@@ -73,6 +73,4 @@ extern ModeStatus            R128ValidMo
 
 extern const OptionInfoRec * R128OptionsWeak(void);
 
-extern void                  R128FillInScreenInfo(ScrnInfoPtr);
-
 #endif /* _R128_PROBE_H_ */
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 0a79483..28580a5 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -7619,21 +7619,3 @@ static void RADEONSetDynamicClock(ScrnIn
 	    break;
     }
 }
-
-void RADEONFillInScreenInfo(ScrnInfoPtr pScrn)
-{
-    pScrn->driverVersion = RADEON_VERSION_CURRENT;
-    pScrn->driverName    = RADEON_DRIVER_NAME;
-    pScrn->name          = RADEON_NAME;
-    pScrn->PreInit       = RADEONPreInit;
-    pScrn->ScreenInit    = RADEONScreenInit;
-    pScrn->SwitchMode    = RADEONSwitchMode;
-#ifdef X_XF86MiscPassMessage
-    pScrn->HandleMessage = RADEONHandleMessage;
-#endif
-    pScrn->AdjustFrame   = RADEONAdjustFrame;
-    pScrn->EnterVT       = RADEONEnterVT;
-    pScrn->LeaveVT       = RADEONLeaveVT;
-    pScrn->FreeScreen    = RADEONFreeScreen;
-    pScrn->ValidMode     = RADEONValidMode;
-}
diff --git a/src/radeon_probe.c b/src/radeon_probe.c
index 4ff11ea..d7ff643 100644
--- a/src/radeon_probe.c
+++ b/src/radeon_probe.c
@@ -40,7 +40,6 @@
  * Modified by Marc Aurele La France <tsi at xfree86.org> for ATI driver merge.
  */
 
-#include "atimodule.h"
 #include "ativersion.h"
 
 #include "radeon_probe.h"
@@ -285,8 +284,22 @@ RADEONProbe(DriverPtr drv, int flags)
 	    if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
 					     RADEONPciChipsets, 0, 0, 0,
 					     0, 0))) {
+		pScrn->driverVersion = RADEON_VERSION_CURRENT;
+		pScrn->driverName    = RADEON_DRIVER_NAME;
+		pScrn->name          = RADEON_NAME;
 		pScrn->Probe         = RADEONProbe;
-		RADEONFillInScreenInfo(pScrn);
+		pScrn->PreInit       = RADEONPreInit;
+		pScrn->ScreenInit    = RADEONScreenInit;
+		pScrn->SwitchMode    = RADEONSwitchMode;
+#ifdef X_XF86MiscPassMessage
+		pScrn->HandleMessage = RADEONHandleMessage;
+#endif
+		pScrn->AdjustFrame   = RADEONAdjustFrame;
+		pScrn->EnterVT       = RADEONEnterVT;
+		pScrn->LeaveVT       = RADEONLeaveVT;
+		pScrn->FreeScreen    = RADEONFreeScreen;
+		pScrn->ValidMode     = RADEONValidMode;
+
 		foundScreen          = TRUE;
 	    }
 
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index b651e7d..f446516 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -172,6 +172,4 @@ extern ModeStatus           RADEONValidM
 
 extern const OptionInfoRec *RADEONOptionsWeak(void);
 
-extern void                 RADEONFillInScreenInfo(ScrnInfoPtr);
-
 #endif /* _RADEON_PROBE_H_ */
diff-tree d7a8cd0e476034796fc38e25a28cd28d05ea4a13 (from 58626d8b78f26f0d9c480033d3c3a12e541342b1)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Mar 23 22:10:03 2007 +0200

    Drop now unneeded _X_EXPORT's.

diff --git a/src/atiadjust.c b/src/atiadjust.c
index f01fee6..267186f 100644
--- a/src/atiadjust.c
+++ b/src/atiadjust.c
@@ -82,7 +82,7 @@ ATIAdjustPreInit
  * displayed location in video memory.  This is used to implement the virtual
  * window.
  */
-_X_EXPORT void
+void
 ATIAdjustFrame
 (
     int scrnIndex,
diff --git a/src/aticonfig.c b/src/aticonfig.c
index a4ceddf..1e119e0 100644
--- a/src/aticonfig.c
+++ b/src/aticonfig.c
@@ -234,7 +234,7 @@ static const OptionInfoRec ATIPublicOpti
 
 static const unsigned long ATIPublicOptionSize = SizeOf(ATIPublicOptions);
 
-_X_EXPORT const OptionInfoRec *
+const OptionInfoRec *
 ATIOptionsWeak(void) { return ATIPublicOptions; }
 
 /*
diff --git a/src/aticonsole.c b/src/aticonsole.c
index 6d0c662..bd5ec9c 100644
--- a/src/aticonsole.c
+++ b/src/aticonsole.c
@@ -628,7 +628,7 @@ ATILeaveGraphics
  *
  * This function switches to another graphics video state.
  */
-_X_EXPORT Bool
+Bool
 ATISwitchMode
 (
     int            iScreen,
@@ -681,7 +681,7 @@ ATISwitchMode
  *
  * This function sets the server's virtual console to a graphics video state.
  */
-_X_EXPORT Bool
+Bool
 ATIEnterVT
 (
     int iScreen,
@@ -751,7 +751,7 @@ ATIEnterVT
  * This function restores the server's virtual console to its state on server
  * entry.
  */
-_X_EXPORT void
+void
 ATILeaveVT
 (
     int iScreen,
@@ -780,7 +780,7 @@ ATILeaveVT
  *
  * This function frees all driver data related to a screen.
  */
-_X_EXPORT void
+void
 ATIFreeScreen
 (
     int iScreen,
diff --git a/src/atifillin.c b/src/atifillin.c
index dcbcb3c..41d4964 100644
--- a/src/atifillin.c
+++ b/src/atifillin.c
@@ -31,7 +31,7 @@
 
 #include "atifillin.h"
 
-_X_EXPORT void ATIFillInScreenInfo(ScrnInfoPtr pScreenInfo)
+void ATIFillInScreenInfo(ScrnInfoPtr pScreenInfo)
 {
     pScreenInfo->driverVersion = ATI_VERSION_CURRENT;
     pScreenInfo->driverName    = ATI_DRIVER_NAME;
diff --git a/src/atipreinit.c b/src/atipreinit.c
index 8f80824..7f0c4b2 100644
--- a/src/atipreinit.c
+++ b/src/atipreinit.c
@@ -146,7 +146,7 @@ ATIPrintNoiseIfRequested
  * This function is only called once per screen at the start of the first
  * server generation.
  */
-_X_EXPORT Bool
+Bool
 ATIPreInit
 (
     ScrnInfoPtr pScreenInfo,
diff --git a/src/atiscreen.c b/src/atiscreen.c
index 58b0bda..bc57934 100644
--- a/src/atiscreen.c
+++ b/src/atiscreen.c
@@ -349,7 +349,7 @@ ATIMach64SetupMemXAA
  *
  * This function is called by DIX to initialise the screen.
  */
-_X_EXPORT Bool
+Bool
 ATIScreenInit
 (
     int       iScreen,
diff --git a/src/ativalid.c b/src/ativalid.c
index 8a92e82..51cf5ae 100644
--- a/src/ativalid.c
+++ b/src/ativalid.c
@@ -35,7 +35,7 @@
  *
  * This checks for hardware-related limits on mode timings.
  */
-_X_EXPORT ModeStatus
+ModeStatus
 ATIValidMode
 (
     int iScreen,
diff --git a/src/r128_driver.c b/src/r128_driver.c
index 81c9015..01276e0 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -182,7 +182,7 @@ static const OptionInfoRec R128Options[]
   { -1,                  NULL,               OPTV_NONE,    {0}, FALSE }
 };
 
-_X_EXPORT const OptionInfoRec *R128OptionsWeak(void) { return R128Options; }
+const OptionInfoRec *R128OptionsWeak(void) { return R128Options; }
 
 R128RAMRec R128RAM[] = {        /* Memory Specifications
 				   From RAGE 128 Software Development
@@ -2044,7 +2044,7 @@ R128ProbeDDC(ScrnInfoPtr pScrn, int indx
 }
 
 /* R128PreInit is called once at server startup. */
-_X_EXPORT Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
+Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
 {
     R128InfoPtr      info;
     xf86Int10InfoPtr pInt10 = NULL;
@@ -2334,7 +2334,7 @@ R128BlockHandler(int i, pointer blockDat
 }
 
 /* Called at the start of each server generation. */
-_X_EXPORT Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
+Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
                               int argc, char **argv)
 {
     ScrnInfoPtr pScrn  = xf86Screens[pScreen->myNum];
@@ -4238,7 +4238,7 @@ static Bool R128SaveScreen(ScreenPtr pSc
  * The workaround is to switch the mode, then switch to another VT, then
  * switch back. --AGD
  */
-_X_EXPORT Bool R128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+Bool R128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
 {
     ScrnInfoPtr   pScrn       = xf86Screens[scrnIndex];
     R128InfoPtr info        = R128PTR(pScrn);
@@ -4251,7 +4251,7 @@ _X_EXPORT Bool R128SwitchMode(int scrnIn
 }
 
 /* Used to disallow modes that are not supported by the hardware. */
-_X_EXPORT ModeStatus R128ValidMode(int scrnIndex, DisplayModePtr mode,
+ModeStatus R128ValidMode(int scrnIndex, DisplayModePtr mode,
                                    Bool verbose, int flags)
 {
     ScrnInfoPtr   pScrn = xf86Screens[scrnIndex];
@@ -4327,7 +4327,7 @@ _X_EXPORT ModeStatus R128ValidMode(int s
 
 /* Adjust viewport into virtual desktop such that (0,0) in viewport space
    is (x,y) in virtual space. */
-_X_EXPORT void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
+void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
 {
     ScrnInfoPtr   pScrn     = xf86Screens[scrnIndex];
     R128InfoPtr   info      = R128PTR(pScrn);
@@ -4363,7 +4363,7 @@ _X_EXPORT void R128AdjustFrame(int scrnI
 
 /* Called when VT switching back to the X server.  Reinitialize the video
    mode. */
-_X_EXPORT Bool R128EnterVT(int scrnIndex, int flags)
+Bool R128EnterVT(int scrnIndex, int flags)
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     R128InfoPtr info  = R128PTR(pScrn);
@@ -4396,7 +4396,7 @@ _X_EXPORT Bool R128EnterVT(int scrnIndex
 
 /* Called when VT switching away from the X server.  Restore the original
    text mode. */
-_X_EXPORT void R128LeaveVT(int scrnIndex, int flags)
+void R128LeaveVT(int scrnIndex, int flags)
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     R128InfoPtr info  = R128PTR(pScrn);
@@ -4466,7 +4466,7 @@ static Bool R128CloseScreen(int scrnInde
     return (*pScreen->CloseScreen)(scrnIndex, pScreen);
 }
 
-_X_EXPORT void R128FreeScreen(int scrnIndex, int flags)
+void R128FreeScreen(int scrnIndex, int flags)
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     R128InfoPtr   info      = R128PTR(pScrn);
@@ -4606,7 +4606,7 @@ static int r128_set_backlight_enable(Scr
 	return 0;
 }
 
-_X_EXPORT void R128FillInScreenInfo(ScrnInfoPtr pScrn)
+void R128FillInScreenInfo(ScrnInfoPtr pScrn)
 {
 	pScrn->driverVersion = R128_VERSION_CURRENT;
 	pScrn->driverName    = R128_DRIVER_NAME;
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 9ed0d6c..0a79483 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -203,7 +203,7 @@ static const OptionInfoRec RADEONOptions
     { -1,                    NULL,               OPTV_NONE,    {0}, FALSE }
 };
 
-_X_EXPORT const OptionInfoRec *RADEONOptionsWeak(void) { return RADEONOptions; }
+const OptionInfoRec *RADEONOptionsWeak(void) { return RADEONOptions; }
 
 #ifdef WITH_VGAHW
 static const char *vgahwSymbols[] = {
@@ -2971,7 +2971,7 @@ RADEONProbeDDC(ScrnInfoPtr pScrn, int in
     }
 }
 
-_X_EXPORT Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags)
+Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags)
 {
     RADEONInfoPtr     info;
     xf86Int10InfoPtr  pInt10 = NULL;
@@ -3759,7 +3759,7 @@ Bool RADEONSetupMemXAA(int scrnIndex, Sc
 #endif /* USE_XAA */
 
 /* Called at the start of each server generation. */
-_X_EXPORT Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
+Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
                                 int argc, char **argv)
 {
     ScrnInfoPtr    pScrn = xf86Screens[pScreen->myNum];
@@ -6516,7 +6516,7 @@ RADEONResetDPI(ScrnInfoPtr pScrn, Bool f
     }
 }
 
-_X_EXPORT Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
 {
     ScrnInfoPtr    pScrn       = xf86Screens[scrnIndex];
     RADEONInfoPtr  info        = RADEONPTR(pScrn);
@@ -6610,7 +6610,7 @@ _X_EXPORT Bool RADEONSwitchMode(int scrn
 }
 
 #ifdef X_XF86MiscPassMessage
-_X_EXPORT Bool RADEONHandleMessage(int scrnIndex, const char* msgtype,
+Bool RADEONHandleMessage(int scrnIndex, const char* msgtype,
                                    const char* msgval, char** retmsg)
 {
     ErrorF("RADEONHandleMessage(%d, \"%s\", \"%s\", retmsg)\n", scrnIndex,
@@ -6621,7 +6621,7 @@ _X_EXPORT Bool RADEONHandleMessage(int s
 #endif
 
 /* Used to disallow modes that are not supported by the hardware */
-_X_EXPORT ModeStatus RADEONValidMode(int scrnIndex, DisplayModePtr mode,
+ModeStatus RADEONValidMode(int scrnIndex, DisplayModePtr mode,
                                      Bool verbose, int flag)
 {
     /* There are problems with double scan mode at high clocks
@@ -6754,7 +6754,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pSc
 
 }
 
-_X_EXPORT void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags)
+void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags)
 {
     ScrnInfoPtr    pScrn      = xf86Screens[scrnIndex];
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
@@ -6782,7 +6782,7 @@ _X_EXPORT void RADEONAdjustFrame(int scr
 /* Called when VT switching back to the X server.  Reinitialize the
  * video mode.
  */
-_X_EXPORT Bool RADEONEnterVT(int scrnIndex, int flags)
+Bool RADEONEnterVT(int scrnIndex, int flags)
 {
     ScrnInfoPtr    pScrn = xf86Screens[scrnIndex];
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
@@ -6853,7 +6853,7 @@ _X_EXPORT Bool RADEONEnterVT(int scrnInd
 /* Called when VT switching away from the X server.  Restore the
  * original text mode.
  */
-_X_EXPORT void RADEONLeaveVT(int scrnIndex, int flags)
+void RADEONLeaveVT(int scrnIndex, int flags)
 {
     ScrnInfoPtr    pScrn = xf86Screens[scrnIndex];
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
@@ -6981,7 +6981,7 @@ static Bool RADEONCloseScreen(int scrnIn
     return (*pScreen->CloseScreen)(scrnIndex, pScreen);
 }
 
-_X_EXPORT void RADEONFreeScreen(int scrnIndex, int flags)
+void RADEONFreeScreen(int scrnIndex, int flags)
 {
     ScrnInfoPtr  pScrn = xf86Screens[scrnIndex];
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
@@ -7620,7 +7620,7 @@ static void RADEONSetDynamicClock(ScrnIn
     }
 }
 
-_X_EXPORT void RADEONFillInScreenInfo(ScrnInfoPtr pScrn)
+void RADEONFillInScreenInfo(ScrnInfoPtr pScrn)
 {
     pScrn->driverVersion = RADEON_VERSION_CURRENT;
     pScrn->driverName    = RADEON_DRIVER_NAME;
diff-tree 58626d8b78f26f0d9c480033d3c3a12e541342b1 (from 166c760a86165330175023e07c4b2bd6891633c5)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Fri Mar 23 21:30:19 2007 +0200

    Move {atimach64,r128,radeon}_probe.c from ati to subdrivers.
    
    Subdrivers are now loaded from the wrapper Probe function rather than at screen
    creation time.
    
    The wrapper Identify callback only prints chip families now, chip lists are
    printed when a subdriver is loaded. This also avoids duplication of subdriver
    Identify callbacks.
    
    Unknown radeons should still get a list of known radeon and then probe fails...
    
    Probe for atimisc last to avoid needless loading in most cases (r128, radeon).

diff --git a/src/Makefile.am b/src/Makefile.am
index 5c1bee6..197c486 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -51,8 +51,7 @@ 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 atimach64probe.c \
-	radeon_probe.c r128_probe.c
+	ati.c atichip.c atimodule.c
 
 atimisc_drv_la_LTLIBRARIES = atimisc_drv.la
 atimisc_drv_la_LDFLAGS = -module -avoid-version
@@ -64,15 +63,15 @@ atimisc_drv_la_SOURCES = \
 	atilock.c atimach64.c atimach64accel.c atimach64cursor.c \
 	atimach64i2c.c atimach64io.c atimach64xv.c atimode.c atipreinit.c \
 	atiprint.c atirgb514.c atiscreen.c atituner.c atiutil.c ativalid.c \
-	atiload.c atimisc.c $(ATIMISC_DRI_SRCS) $(ATIMISC_DGA_SOURCES) \
-	$(ATIMISC_CPIO_SOURCES) $(ATIMISC_EXA_SOURCES)
+	atiload.c atimisc.c atimach64probe.c $(ATIMISC_CPIO_SOURCES) \
+	$(ATIMISC_DGA_SOURCES) $(ATIMISC_DRI_SRCS) $(ATIMISC_EXA_SOURCES)
 
 r128_drv_la_LTLIBRARIES = r128_drv.la
 r128_drv_la_LDFLAGS = -module -avoid-version
 r128_drv_ladir = @moduledir@/drivers
 r128_drv_la_SOURCES = \
 	r128_accel.c r128_cursor.c r128_dga.c r128_driver.c \
-	r128_video.c r128_misc.c $(R128_DRI_SRCS)
+	r128_video.c r128_misc.c r128_probe.c $(R128_DRI_SRCS)
 
 radeon_drv_la_LTLIBRARIES = radeon_drv.la
 radeon_drv_la_LDFLAGS = -module -avoid-version
@@ -80,7 +79,8 @@ radeon_drv_ladir = @moduledir@/drivers
 radeon_drv_la_SOURCES = \
 	radeon_accel.c radeon_mergedfb.c radeon_cursor.c radeon_dga.c \
 	radeon_driver.c radeon_video.c radeon_bios.c radeon_mm_i2c.c \
-	radeon_vip.c radeon_misc.c radeon_display.c radeon_modes.c $(RADEON_DRI_SRCS) $(RADEON_EXA_SOURCES)
+	radeon_vip.c radeon_misc.c radeon_probe.c radeon_display.c \
+	radeon_modes.c $(RADEON_DRI_SRCS) $(RADEON_EXA_SOURCES)
 
 theatre_detect_drv_la_LTLIBRARIES = theatre_detect_drv.la
 theatre_detect_drv_la_LDFLAGS = -module -avoid-version
diff --git a/src/ati.c b/src/ati.c
index e7a5aee..fa7d9e8 100644
--- a/src/ati.c
+++ b/src/ati.c
@@ -59,6 +59,7 @@
 
 #include "ati.h"
 #include "atichip.h"
+#include "atimodule.h"
 #include "ativersion.h"
 #include "atimach64probe.h"
 
@@ -78,10 +79,13 @@ ATIIdentify
     int flags
 )
 {
+    /*
+     * Only print chip families here, chip lists are printed when a subdriver
+     * is loaded.
+     */
     xf86Msg(X_INFO, "%s: %s\n", ATI_NAME,
-            "ATI driver (version " ATI_VERSION_NAME ") for chipset: mach64");
-    R128Identify(flags);
-    RADEONIdentify(flags);
+            "ATI driver wrapper (version " ATI_VERSION_NAME ") for chipsets: "
+            "mach64, rage128, radeon");
 }
 
 /*
@@ -98,7 +102,6 @@ ATIProbe
 )
 {
     pciVideoPtr pVideo, *xf86PciVideoInfo = xf86GetPciVideoInfo();
-    Bool        ProbeSuccess = FALSE;
     Bool        DoMach64 = FALSE;
     Bool        DoRage128 = FALSE, DoRadeon = FALSE;
     int         i;
@@ -138,19 +141,73 @@ ATIProbe
         }
     }
 
-    /* Call Mach64 driver probe */
-    if (DoMach64 && Mach64Probe(pDriver, flags))
-        ProbeSuccess = TRUE;
+    /* Call Radeon driver probe */
+    if (DoRadeon)
+    {
+        pointer radeon = xf86LoadDrvSubModule(pDriver, "radeon");
+
+        if (!radeon)
+        {
+            xf86Msg(X_ERROR,
+                ATI_NAME ":  Failed to load \"radeon\" module.\n");
+            return FALSE;
+        }
+
+        xf86LoaderReqSymLists(RADEONSymbols, NULL);
+
+        RADEONIdentify(flags);
+
+        if (RADEONProbe(pDriver, flags))
+            return TRUE;
+
+        xf86UnloadSubModule(radeon);
+    }
 
     /* Call Rage 128 driver probe */
-    if (DoRage128 && R128Probe(pDriver, flags))
-        ProbeSuccess = TRUE;
+    if (DoRage128)
+    {
+        pointer r128 = xf86LoadDrvSubModule(pDriver, "r128");
 
-    /* Call Radeon driver probe */
-    if (DoRadeon && RADEONProbe(pDriver, flags))
-        ProbeSuccess = TRUE;
+        if (!r128)
+        {
+            xf86Msg(X_ERROR,
+                ATI_NAME ":  Failed to load \"r128\" module.\n");
+            return FALSE;
+        }
+
+        xf86LoaderReqSymLists(R128Symbols, NULL);
 
-    return ProbeSuccess;
+        R128Identify(flags);
+
+        if (R128Probe(pDriver, flags))
+            return TRUE;
+
+        xf86UnloadSubModule(r128);
+    }
+
+    /* Call Mach64 driver probe */
+    if (DoMach64)
+    {
+        pointer atimisc = xf86LoadDrvSubModule(pDriver, "atimisc");
+
+        if (!atimisc)
+        {
+            xf86Msg(X_ERROR,
+                ATI_NAME ":  Failed to load \"atimisc\" module.\n");
+            return FALSE;
+        }
+
+        xf86LoaderReqSymLists(ATISymbols, NULL);
+
+        Mach64Identify(flags);
+
+        if (Mach64Probe(pDriver, flags))
+            return TRUE;
+
+        xf86UnloadSubModule(atimisc);
+    }
+
+    return FALSE;
 }
 
 /*
@@ -158,22 +215,27 @@ ATIProbe
  *
  * Return recognised options that are intended for public consumption.
  */
-const OptionInfoRec *
+static const OptionInfoRec *
 ATIAvailableOptions
 (
     int ChipId,
     int BusId
 )
 {
-    const OptionInfoRec *pOptions;
+    CARD16      ChipType = ChipId & 0xffff;
+    ATIChipType Chip;
 
-    if ((pOptions = R128AvailableOptions(ChipId, BusId)))
-        return pOptions;
+    /* Probe should have loaded the appropriate subdriver by this point */
 
-    if ((pOptions = RADEONAvailableOptions(ChipId, BusId)))
-        return pOptions;
+    Chip = ATIChipID(ChipType, 0x0); /* chip revision is don't care */
+    if (Chip <= ATI_CHIP_Mach64)
+        return Mach64AvailableOptions(ChipId, BusId);
+    else if (Chip <= ATI_CHIP_Rage128)
+        return R128AvailableOptions(ChipId, BusId);
+    else if (Chip <= ATI_CHIP_Radeon)
+        return RADEONAvailableOptions(ChipId, BusId);
 
-    return Mach64AvailableOptions(ChipId, BusId);
+    return NULL;
 }
 
 /* The root of all evil... */
diff --git a/src/atimach64probe.c b/src/atimach64probe.c
index 47340a5..cff8bfb 100644
--- a/src/atimach64probe.c
+++ b/src/atimach64probe.c
@@ -101,7 +101,7 @@ Mach64PciChipsets[] = {
     {-1, -1, RES_UNDEFINED}
 };
 
-const OptionInfoRec *
+_X_EXPORT const OptionInfoRec *
 Mach64AvailableOptions(int chipid, int busid)
 {
     /*
@@ -112,12 +112,27 @@ Mach64AvailableOptions(int chipid, int b
 }
 
 /*
+ * Mach64Identify --
+ *
+ * Print the driver's list of chipset names.
+ */
+_X_EXPORT void
+Mach64Identify
+(
+    int flags
+)
+{
+    xf86Msg(X_INFO, "%s: %s\n", ATI_NAME,
+            "Driver for ATI Mach64 chipsets");
+}
+
+/*
  * Mach64Probe --
  *
  * This function is called once, at the start of the first server generation to
  * do a minimal probe for supported hardware.
  */
-Bool
+_X_EXPORT Bool
 Mach64Probe(DriverPtr pDriver, int flags)
 {
     GDevPtr  *devSections;
@@ -160,20 +175,6 @@ Mach64Probe(DriverPtr pDriver, int flags
             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;
diff --git a/src/atimach64probe.h b/src/atimach64probe.h
index 4e474ca..fa9e713 100644
--- a/src/atimach64probe.h
+++ b/src/atimach64probe.h
@@ -26,6 +26,7 @@
 #include "xf86str.h"
 
 extern const OptionInfoRec * Mach64AvailableOptions(int, int);
+extern void                  Mach64Identify(int);
 extern Bool                  Mach64Probe(DriverPtr, int);
 
 #endif /* ___ATIMACH64PROBE_H___ */
diff --git a/src/atimodule.c b/src/atimodule.c
index 05456e7..6aa9a2e 100644
--- a/src/atimodule.c
+++ b/src/atimodule.c
@@ -34,47 +34,25 @@
 
 const char *ATISymbols[] =
 {
-    "ATIPreInit",
-    "ATIScreenInit",
-    "ATISwitchMode",
-    "ATIAdjustFrame",
-    "ATIEnterVT",
-    "ATILeaveVT",
-    "ATIFreeScreen",
-    "ATIValidMode",
-    "ATIOptionsWeak",
-    "ATIFillInScreenInfo",
+    "Mach64Identify",
+    "Mach64Probe",
+    "Mach64AvailableOptions",
     NULL
 };
 
 const char *R128Symbols[] =
 {
-    "R128PreInit",
-    "R128ScreenInit",
-    "R128SwitchMode",
-    "R128AdjustFrame",
-    "R128EnterVT",
-    "R128LeaveVT",
-    "R128FreeScreen",
-    "R128ValidMode",
-    "R128OptionsWeak",
-    "R128FillInScreenInfo",
+    "R128Identify",
+    "R128Probe",
+    "R128AvailableOptions",
     NULL
 };
 
 const char *RADEONSymbols[] =
 {
-    "RADEONPreInit",
-    "RADEONScreenInit",
-    "RADEONSwitchMode",
-    "RADEONAdjustFrame",
-    "RADEONEnterVT",
-    "RADEONLeaveVT",
-    "RADEONFreeScreen",
-    "RADEONValidMode",
-    "RADEONOptionsWeak",
-    "RADEONHandleMessage",
-    "RADEONFillInScreenInfo",
+    "RADEONIdentify",
+    "RADEONProbe",
+    "RADEONAvailableOptions",
     NULL
 };
 
diff --git a/src/r128_probe.c b/src/r128_probe.c
index 96e7897..836f1d0 100644
--- a/src/r128_probe.c
+++ b/src/r128_probe.c
@@ -107,7 +107,7 @@ PciChipsets R128PciChipsets[] = {
 int gR128EntityIndex = -1;
 
 /* Return the options for supported chipset 'n'; NULL otherwise */
-const OptionInfoRec *
+_X_EXPORT const OptionInfoRec *
 R128AvailableOptions(int chipid, int busid)
 {
     int i;
@@ -126,7 +126,7 @@ R128AvailableOptions(int chipid, int bus
 }
 
 /* Return the string name for supported chipset 'n'; NULL otherwise. */
-void
+_X_EXPORT void
 R128Identify(int flags)
 {
     xf86PrintChipsets(R128_NAME,
@@ -135,7 +135,7 @@ R128Identify(int flags)
 }
 
 /* Return TRUE if chipset is present; FALSE otherwise. */
-Bool
+_X_EXPORT Bool
 R128Probe(DriverPtr drv, int flags)
 {
     int           numUsed;
@@ -194,20 +194,6 @@ R128Probe(DriverPtr drv, int flags)
         if((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
              R128PciChipsets, 0, 0, 0, 0, 0)))
 	{
-
-#ifdef XFree86LOADER
-
-	    if (!xf86LoadSubModule(pScrn, "r128")) {
-		xf86Msg(X_ERROR,
-		    R128_NAME ":  Failed to load \"r128\" module.\n");
-		xf86DeleteScreen(pScrn->scrnIndex, 0);
-		continue;
-	    }
-
-	    xf86LoaderReqSymLists(R128Symbols, NULL);
-
-#endif
-
 	    pScrn->Probe         = R128Probe;
 	    R128FillInScreenInfo(pScrn);
 
diff --git a/src/radeon_probe.c b/src/radeon_probe.c
index 98b35aa..4ff11ea 100644
--- a/src/radeon_probe.c
+++ b/src/radeon_probe.c
@@ -200,7 +200,7 @@ PciChipsets RADEONPciChipsets[] = {
 int gRADEONEntityIndex = -1;
 
 /* Return the options for supported chipset 'n'; NULL otherwise */
-const OptionInfoRec *
+_X_EXPORT const OptionInfoRec *
 RADEONAvailableOptions(int chipid, int busid)
 {
     int  i;
@@ -219,7 +219,7 @@ RADEONAvailableOptions(int chipid, int b
 }
 
 /* Return the string name for supported chipset 'n'; NULL otherwise. */
-void
+_X_EXPORT void
 RADEONIdentify(int flags)
 {
     xf86PrintChipsets(RADEON_NAME,
@@ -228,7 +228,7 @@ RADEONIdentify(int flags)
 }
 
 /* Return TRUE if chipset is present; FALSE otherwise. */
-Bool
+_X_EXPORT Bool
 RADEONProbe(DriverPtr drv, int flags)
 {
     int      numUsed;
@@ -285,17 +285,6 @@ RADEONProbe(DriverPtr drv, int flags)
 	    if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
 					     RADEONPciChipsets, 0, 0, 0,
 					     0, 0))) {
-#ifdef XFree86LOADER
-		if (!xf86LoadSubModule(pScrn, "radeon")) {
-		    xf86Msg(X_ERROR, RADEON_NAME
-			    ":  Failed to load \"radeon\" module.\n");
-		    xf86DeleteScreen(pScrn->scrnIndex, 0);
-		    continue;
-		}
-
-		xf86LoaderReqSymLists(RADEONSymbols, NULL);
-#endif
-
 		pScrn->Probe         = RADEONProbe;
 		RADEONFillInScreenInfo(pScrn);
 		foundScreen          = TRUE;



More information about the xorg-commit mailing list