summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/drm_drv.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-11 20:22:24 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-11 20:22:24 +0300
commiteda1be631a1efa3985b408a231ba20e1ecf0a92b (patch)
treebc44c294343f2b8b142a041baba19b7e314756b1 /drivers/gpu/drm/drm_drv.c
parent5da38d32824eb27c325d296bf3a39b5946578789 (diff)
parent0baf823a10bd4131f70e9712d1f02de3c247f1df (diff)
downloadlinux-eda1be631a1efa3985b408a231ba20e1ecf0a92b.tar.xz
Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/i915: Move legacy breadcrumb out of the reserved status page area drm/i915: Filter pci devices based on PCI_CLASS_DISPLAY_VGA drm/radeon: map registers at load time drm: Remove infrastructure for supporting i915's vblank swapping. i915: Remove racy delayed vblank swap ioctl. i915: Don't whine when pci_enable_msi() fails. i915: Don't attempt to short-circuit object_wait_rendering by checking domains. i915: Clean up sarea pointers on leavevt i915: Save/restore MCHBAR_RENDER_STANDBY on GM965/GM45
Diffstat (limited to 'drivers/gpu/drm/drm_drv.c')
-rw-r--r--drivers/gpu/drm/drm_drv.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 96f416afc3f6..3ab1e9cc4692 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -266,11 +266,19 @@ int drm_init(struct drm_driver *driver)
for (i = 0; driver->pci_driver.id_table[i].vendor != 0; i++) {
pid = (struct pci_device_id *)&driver->pci_driver.id_table[i];
+ /* Loop around setting up a DRM device for each PCI device
+ * matching our ID and device class. If we had the internal
+ * function that pci_get_subsys and pci_get_class used, we'd
+ * be able to just pass pid in instead of doing a two-stage
+ * thing.
+ */
pdev = NULL;
- /* pass back in pdev to account for multiple identical cards */
while ((pdev =
pci_get_subsys(pid->vendor, pid->device, pid->subvendor,
pid->subdevice, pdev)) != NULL) {
+ if ((pdev->class & pid->class_mask) != pid->class)
+ continue;
+
/* stealth mode requires a manual probe */
pci_dev_get(pdev);
drm_get_dev(pdev, pid, driver);