aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_drv.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-11-12 08:43:22 +1100
committerPaul Mackerras <paulus@samba.org>2008-11-12 08:43:22 +1100
commit486936cd93e99c802153b3f2f629c5ce62b8c0d4 (patch)
tree51e261a96e1fb6b51d4a6afb92bfc2480e150b6c /drivers/gpu/drm/drm_drv.c
parent1c1b777a5673b57a6c0377ba60a790d05e4a0676 (diff)
parentf21f237cf55494c3a4209de323281a3b0528da10 (diff)
downloadkernel_samsung_smdk4412-486936cd93e99c802153b3f2f629c5ce62b8c0d4.zip
kernel_samsung_smdk4412-486936cd93e99c802153b3f2f629c5ce62b8c0d4.tar.gz
kernel_samsung_smdk4412-486936cd93e99c802153b3f2f629c5ce62b8c0d4.tar.bz2
Merge branch 'linux-2.6' into next
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 96f416a..3ab1e9c 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);