summaryrefslogtreecommitdiff
path: root/src/atimisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/atimisc.c')
-rw-r--r--src/atimisc.c44
1 files changed, 37 insertions, 7 deletions
diff --git a/src/atimisc.c b/src/atimisc.c
index 61801eb7..cfbf40fc 100644
--- a/src/atimisc.c
+++ b/src/atimisc.c
@@ -1,6 +1,6 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atimisc.c,v 1.7 2003/07/24 22:08:28 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atimisc.c,v 1.8tsi Exp $ */
/*
- * Copyright 2000 through 2003 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+ * Copyright 2000 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
@@ -38,7 +38,7 @@ static XF86ModuleVersionInfo ATIVersionRec =
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
- XF86_VERSION_CURRENT,
+ XORG_VERSION_CURRENT,
ATI_VERSION_MAJOR, ATI_VERSION_MINOR, ATI_VERSION_PATCH,
ABI_CLASS_VIDEODRV,
ABI_VIDEODRV_VERSION,
@@ -65,8 +65,38 @@ ATISetup
if (!Inited)
{
/* Ensure main driver module is loaded, but not as a submodule */
- if (!xf86ServerIsOnlyDetecting() && !LoaderSymbol(ATI_NAME))
- xf86LoadOneModule(ATI_DRIVER_NAME, Options);
+ if (!xf86ServerIsOnlyDetecting())
+ {
+ if (!LoaderSymbol(ATI_NAME))
+ xf86LoadOneModule(ATI_DRIVER_NAME, Options);
+
+ /* ati & atimisc module versions must match */
+ do
+ {
+ XF86ModuleData *pModuleData = LoaderSymbol("atiModuleData");
+
+ if (pModuleData)
+ {
+ XF86ModuleVersionInfo *pModuleInfo = pModuleData->vers;
+
+ if ((pModuleInfo->majorversion == ATI_VERSION_MAJOR) &&
+ (pModuleInfo->minorversion == ATI_VERSION_MINOR) &&
+ (pModuleInfo->patchlevel == ATI_VERSION_PATCH))
+ break;
+ }
+
+ xf86Msg(X_ERROR,
+ "\"ati\" and \"atimisc\" module versions must"
+ " match.\n");
+
+ if (ErrorMajor)
+ *ErrorMajor = (int)LDR_MISMATCH;
+ if (ErrorMinor)
+ *ErrorMinor = (int)LDR_MISMATCH;
+
+ return NULL;
+ } while (0);
+ }
/*
* Tell loader about symbols from other modules that this module might
@@ -84,12 +114,12 @@ ATISetup
#endif /* AVOID_CPIO */
-#ifdef XF86DRI
+#ifdef XF86DRI_DEVEL
ATIdrmSymbols,
ATIdriSymbols,
-#endif /* XF86DRI */
+#endif /* XF86DRI_DEVEL */
ATIfbSymbols,
ATIshadowfbSymbols,