[Xorg] Fwd: drm patch
Alex Deucher
alexdeucher at gmail.com
Thu Aug 26 06:01:46 PDT 2004
I haven't checked xorg cvs, but this patch may be needed there as well.
---------- Forwarded message ----------
From: Lafriks <listes at nix.lv>
Date: Thu, 26 Aug 2004 11:54:50 +0300
Subject: drm patch
To: jonsmirl at yahoo.com
Cc: dri-devel at lists.sourceforge.net
Hi,
Wanted to report that without this patch my ATI Radeon IGP 345M
didn't have direct rendering support with yesterday mesa-cvs and
dri-cvs. After applying patch I have dri support :) Hope this patch will
be included in cvs soon... it's great ;)
Lafriks
p.s. patch by Jon Smirl:
===== linux/drm_drv.h 1.8 vs edited =====
--- 1.8/linux/drm_drv.h Tue Aug 17 11:38:31 2004
+++ edited/linux/drm_drv.h Fri Aug 20 16:37:08 2004
@@ -635,7 +635,7 @@
static int __init drm_init( void )
{
struct pci_dev *pdev = NULL;
- struct pci_driver *pdriver = NULL;
+ struct pci_device_id *pid;
int i;
DRM_DEBUG( "\n" );
@@ -647,21 +647,26 @@
DRM(mem_init)();
for (i=0; DRM(pciidlist)[i].vendor != 0; i++) {
- pdev = pci_get_subsys(DRM(pciidlist[i]).vendor,
DRM(pciidlist[i]).device, DRM(pciidlist[i]).subvendor,
DRM(pciidlist[i]).subdevice, NULL);
- if (pdev)
- {
- pdriver = pci_dev_driver(pdev);
- if (pdriver)
- {
- DRM(fb_loaded)=1;
+ pid = &DRM(pciidlist[i]);
+
+ /* pass back in pdev to account for multiple identical cards */
+ while ((pdev = pci_get_subsys(pid->vendor, pid->device,
pid->subvendor, pid->subdevice, pdev))) {
+ /* is there already a driver loaded, or (short
circuit saves work) */
+ /* does something like VesaFB have control of
the memory region? */
+ if (pci_dev_driver(pdev) ||
pci_request_regions(pdev, "DRM scan")) {
+ /* go into stealth mode */
+ DRM(fb_loaded) = 1;
drm_probe(pdev, &DRM(pciidlist[i]));
+ /* keep looping to get all devices */
+ continue;
}
- else
- pci_dev_put(pdev);
+ /* no fbdev or vesadev, put things back and
wait for normal probe */
+ pci_release_regions(pdev);
+ pci_dev_put(pdev);
}
}
- if (DRM(fb_loaded)==0)
+ if (DRM(fb_loaded) == 0)
pci_register_driver(&drm_driver);
else
DRM_INFO("Used old pci detect: framebuffer loaded\n");
More information about the xorg
mailing list