FreeBSD: We only want drm to ever attach to the primary pci device.
authorRobert Noland <rnoland@2hip.net>
Thu, 5 Mar 2009 06:44:56 +0000 (00:44 -0600)
committerRobert Noland <rnoland@2hip.net>
Thu, 5 Mar 2009 06:44:56 +0000 (00:44 -0600)
Intel 855 chips present the same pci id for both heads.  This prevents
us from attaching to the dummy second head.  All other chips that I
am aware of either only present a single pci id, or different ids
for each head so that we only match on the correct head.

bsd-core/drmP.h
bsd-core/drm_drv.c

index 79998e8..a8227c2 100644 (file)
@@ -83,6 +83,7 @@ struct drm_file;
 #include <sys/agpio.h>
 #include <sys/mutex.h>
 #include <dev/pci/pcivar.h>
+#include <dev/pci/pcireg.h>
 #include <sys/selinfo.h>
 #include <sys/bus.h>
 
index d4d50e6..85e86d3 100644 (file)
@@ -173,6 +173,10 @@ int drm_probe(device_t dev, drm_pci_id_list_t *idlist)
        device = pci_get_device(dev);
 #endif
 
+       if (pci_get_class(dev) != PCIC_DISPLAY
+           || pci_get_subclass(dev) != PCIS_DISPLAY_VGA)
+               return ENXIO;
+
        id_entry = drm_find_description(vendor, device, idlist);
        if (id_entry != NULL) {
                device_set_desc(dev, id_entry->name);