Both e1000 and e1000e drivers recognize certain devices. Greylisting
[pypcilib.git] / pypcimap.py
index 9160cc0..50bb9b1 100644 (file)
@@ -36,6 +36,9 @@
 import os
 import re
 
+# These are modules which are only returned if no other driver is available
+greylist = ["ata_generic", "eepro100", "8139cp", "e1000"]
+
 class PCIMap:
     """Encapsulates modules.pcimap"""
     def __init__(self, filename):
@@ -45,12 +48,15 @@ class PCIMap:
         """Returns a list of candidate modules for the PCI device specified in tuple"""
         ret = []
         for i in self.list:
-            if ((i[1] == tuple[0] or i[1] == 0xffffffff) and
-                (i[2] == tuple[1] or i[2] == 0xffffffff) and
-                (i[3] == tuple[2] or i[3] == 0xffffffff) and
-                (i[4] == tuple[3] or i[4] == 0xffffffff) and
+            if ((i[1] == tuple[0] or i[1] == 0xffffffffL) and
+                (i[2] == tuple[1] or i[2] == 0xffffffffL) and
+                (i[3] == tuple[2] or i[3] == 0xffffffffL) and
+                (i[4] == tuple[3] or i[4] == 0xffffffffL) and
                 (i[5] == (tuple[4] & i[6]))):
                 ret.append(i[0])
+        for i in greylist:
+            if i in ret and len(ret) > 1:
+                ret.remove(i)
         return ret
     def add(self, list):
         # FIXME: check values