summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgbert Eich <eich@freedesktop.org>2009-12-10 10:33:46 +0100
committerEgbert Eich <eich@freedesktop.org>2010-01-18 18:53:28 +0100
commitc8fb3cdb44249c19f19d7538450dd75acad71062 (patch)
tree64bc5befa93ecd7c5b59f53c63e31b9f20c5e2ab
parent0b91ec067e338e8d5b0bdec9d646c63830d2d443 (diff)
Probe: Move KMS test to rhd_dri.c.
-rw-r--r--src/rhd_dri.c36
-rw-r--r--src/rhd_dri.h3
-rw-r--r--src/rhd_driver.c46
3 files changed, 39 insertions, 46 deletions
diff --git a/src/rhd_dri.c b/src/rhd_dri.c
index 422fc13..015da4e 100644
--- a/src/rhd_dri.c
+++ b/src/rhd_dri.c
@@ -1,9 +1,10 @@
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* Copyright 2000 VA Linux Systems Inc., Fremont, California.
- * Copyright 2007 Luc Verhaegen <libv@exsuse.de>
- * Copyright 2007 Matthias Hopf <mhopf@novell.com>
- * Copyright 2007 Egbert Eich <eich@novell.com>
+ * Copyright 2007 - 2009 Luc Verhaegen <libv@exsuse.de>
+ * Copyright 2007 - 2009 Matthias Hopf <mhopf@novell.com>
+ * Copyright 2007 - 2009 Egbert Eich <eich@novell.com>
+ * Copyright 2009 Hans Ulrich Niedermann <hun@n-dimensional.de>
* Copyright 2007 Advanced Micro Devices, Inc.
* All Rights Reserved.
*
@@ -62,6 +63,9 @@
# define DEPRECATED __attribute__ ((deprecated))
# define __user
#endif
+#ifdef HAVE_XF86DRMMODE_H
+# include "xf86drmMode.h"
+#endif
#include "radeon_drm.h"
#include "GL/glxint.h"
#include "GL/glxtokens.h"
@@ -2025,3 +2029,29 @@ RHDDRIGetHWParam(ScrnInfoPtr pScrn, enum RHDDRIHWParam param, union rhdValue *va
"Got %s param from DRM.\n",name);
return TRUE;
}
+
+#ifdef XSERVER_LIBPCIACCESS
+int
+RHDKMSEnabled(ScrnInfoPtr pScrn, struct pci_device *pciDev)
+{
+ char *busId;
+ int ret;
+
+#ifdef HAVE_XF86DRMMODE_H
+ if (!xf86LoaderCheckSymbol("DRICreatePCIBusID")) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "No DRICreatePCIBusID symbol\n");
+ return FALSE;
+ }
+ busId = DRICreatePCIBusID(pciDev);
+ ret = drmCheckModesettingSupported(busId);
+ xfree(busId);
+
+ xf86DrvMsg(pScrn->scrnIdex, X_INFO, "[DRM] Kernel mode setting %s\n",
+ ret ? "enabled" : "disabled");
+ return ret;
+#else
+ return FALSE;
+#endif /* HAVE_XF86DRMMODE_H */
+}
+#endif
diff --git a/src/rhd_dri.h b/src/rhd_dri.h
index 29c00ae..aaf29c9 100644
--- a/src/rhd_dri.h
+++ b/src/rhd_dri.h
@@ -40,7 +40,6 @@ extern void RHDDRILeaveVT(ScreenPtr pScreen);
extern Bool RHDDRIScreenInit(ScreenPtr pScreen);
extern void RHDDRIContextClaim(ScrnInfoPtr pScrn);
extern Bool RHDDRIGetHWParam(ScrnInfoPtr pScrn, enum RHDDRIHWParam param, union rhdValue *val);
-
-
+extern int RHDKMSEnabled(ScrnInfoPtr pScrn, struct pci_device *pciDev);
#endif
diff --git a/src/rhd_driver.c b/src/rhd_driver.c
index e18519e..aea373f 100644
--- a/src/rhd_driver.c
+++ b/src/rhd_driver.c
@@ -2,7 +2,6 @@
* Copyright 2007-2009 Luc Verhaegen <libv@exsuse.de>
* Copyright 2007-2009 Matthias Hopf <mhopf@novell.com>
* Copyright 2007-2009 Egbert Eich <eich@novell.com>
- * Copyright 2009 Dave Airlie <airlied@redhat.com>
* Copyright 2009 Hans Ulrich Niedermann <hun@n-dimensional.de>
* Copyright 2007-2009 Advanced Micro Devices, Inc.
*
@@ -404,40 +403,6 @@ RHDAvailableOptions(int chipid, int busid)
*/
#ifdef XSERVER_LIBPCIACCESS
-#ifdef HAVE_XF86DRMMODE_H
-/* The radeon_kernel_mode_enabled() function is taken verbatim from
- * radeon's radeon_probe.c file. */
-static Bool radeon_kernel_mode_enabled(ScrnInfoPtr pScrn, struct pci_device *pci_dev)
-{
- char *busIdString;
- int ret;
-
- if (!xf86LoaderCheckSymbol("DRICreatePCIBusID")) {
- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
- "[KMS] No DRICreatePCIBusID symbol, no kernel modesetting.\n");
- return FALSE;
- }
-
- busIdString = DRICreatePCIBusID(pci_dev);
- ret = drmCheckModesettingSupported(busIdString);
- xfree(busIdString);
- if (ret) {
- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
- "[KMS] drm report modesetting isn't supported.\n");
- return FALSE;
- }
-
- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 0,
- "[KMS] Kernel modesetting enabled.\n");
- return TRUE;
-}
-#else
-static Bool radeon_kernel_mode_enabled(ScrnInfoPtr pScrn, struct pci_device *pci_dev)
-{
- return FALSE;
-}
-#endif
-
static Bool
RHDPciProbe(DriverPtr drv, int entityNum,
struct pci_device *dev, intptr_t matchData)
@@ -450,20 +415,19 @@ RHDPciProbe(DriverPtr drv, int entityNum,
if (pScrn != NULL) {
if (dev) {
- Bool kms = radeon_kernel_mode_enabled(pScrn, dev);
+#ifdef USE_DRI
+ Bool kms = RHDKMSEnabled(pScrn, dev);
if (kms) {
xf86DrvMsgVerb(pScrn->scrnIndex, X_ERROR, 0,
- "FATAL: RADEONHD does not work with kernel modesetting (KMS).\n"
- "\tAppend \"nomodeset\" or \"radeon.modeset=0\" (depending\n"
- "\ton your kernel version, or just add both to be sure) to \n"
- "\tyour kernel command line in /boot/grub/grub.conf.\n");
+ "FATAL: RadeonHD presently does not work with kernel modesetting (KMS).\n"
+ "Please disable KMS in your kernel.\n");
return FALSE;
} else {
xf86DrvMsgVerb(pScrn->scrnIndex, X_ERROR, 0,
"KMS is disabled. This is good for us, because RADEONHD conflicts with KMS.\n");
}
}
-
+#endif
pScrn->driverVersion = RHD_VERSION;
pScrn->driverName = RHD_DRIVER_NAME;
pScrn->name = RHD_NAME;