FireMV 2400 Xorg 7.1 init solved (kind of)

Erwin Rol mailinglists at erwinrol.com
Wed Jun 28 17:22:09 PDT 2006


Hey all,

I located the problem with my FireMV 2400 quad head card. The diff below
causes the second M9 to be initialized correctly. It is a very dirty
hack that only works when the second M9 on the card is at PCI address
2:5.0. The problem was that the handlebios functions never failed in
Xorg 7.1 like they did on Xorg 7.0, so the function
(pciTestMultiDeviceCard) to check if the current chip belongs to another
chip on the same card was never called. Of course this hack is only a
way to show what the problem is, the real question is how can this be
solved in a correct way ? Are there already some xorg.conf option that
make it possible to force the MultiDeviceCard check ?

- Erwin

diff -ru xorg-server-1.1.0.orig/hw/xfree86/os-support/bus/Pci.c xorg-server-1.1.0.er/hw/xfree86/os-support/bus/Pci.c
--- xorg-server-1.1.0.orig/hw/xfree86/os-support/bus/Pci.c      2006-05-19 01:51:34.000000000 +0200
+++ xorg-server-1.1.0.er/hw/xfree86/os-support/bus/Pci.c        2006-06-29 00:25:52.000000000 +0200
@@ -1305,16 +1305,21 @@
   PCITAG *pTag;
   int i;

-  /* fall back to the old code if the OS code fails */
-  if (pciOSHandleBIOS) {
-       n = pciOSHandleBIOS(Tag, basereg, buf, len);
-       if (n)
-               return n;
-  }
+  /* MEGA DIRTY FOR ME ONLY TEST HACK */
+
+  if ( !((PCI_BUS_FROM_TAG(Tag) == 2) && (PCI_DEV_FROM_TAG(Tag) == 5) && (PCI_FUNC_FROM_TAG(Tag) == 0))) {
+    /* fall back to the old code if the OS code fails */
+    if (pciOSHandleBIOS) {
+       n = pciOSHandleBIOS(Tag, basereg, buf, len);
+       if (n)
+                       return n;
+    }

-  n = handlePciBIOS( Tag, basereg, buf, len );
-  if (n)
-      return n;
+    n = handlePciBIOS( Tag, basereg, buf, len );
+    if (n)
+       return n;
+
+  }

   num = pciTestMultiDeviceCard(PCI_BUS_FROM_TAG(Tag),
                               PCI_DEV_FROM_TAG(Tag),





More information about the xorg mailing list