diff options
author | Egbert Eich <eich@freedesktop.org> | 2009-12-10 10:33:46 +0100 |
---|---|---|
committer | Egbert Eich <eich@freedesktop.org> | 2010-01-18 18:53:28 +0100 |
commit | c8fb3cdb44249c19f19d7538450dd75acad71062 (patch) | |
tree | 64bc5befa93ecd7c5b59f53c63e31b9f20c5e2ab | |
parent | 0b91ec067e338e8d5b0bdec9d646c63830d2d443 (diff) |
Probe: Move KMS test to rhd_dri.c.
-rw-r--r-- | src/rhd_dri.c | 36 | ||||
-rw-r--r-- | src/rhd_dri.h | 3 | ||||
-rw-r--r-- | src/rhd_driver.c | 46 |
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; |