|
@@ -3418,14 +3418,7 @@ static int __devinit atyfb_pci_probe(struct pci_dev *pdev, const struct pci_devi
|
|
|
struct fb_info *info;
|
|
|
struct resource *rp;
|
|
|
struct atyfb_par *par;
|
|
|
- int i, rc = -ENOMEM;
|
|
|
-
|
|
|
- for (i = ARRAY_SIZE(aty_chips) - 1; i >= 0; i--)
|
|
|
- if (pdev->device == aty_chips[i].pci_id)
|
|
|
- break;
|
|
|
-
|
|
|
- if (i < 0)
|
|
|
- return -ENODEV;
|
|
|
+ int rc = -ENOMEM;
|
|
|
|
|
|
/* Enable device in PCI config */
|
|
|
if (pci_enable_device(pdev)) {
|
|
@@ -3456,7 +3449,7 @@ static int __devinit atyfb_pci_probe(struct pci_dev *pdev, const struct pci_devi
|
|
|
par = info->par;
|
|
|
info->fix = atyfb_fix;
|
|
|
info->device = &pdev->dev;
|
|
|
- par->pci_id = aty_chips[i].pci_id;
|
|
|
+ par->pci_id = pdev->device;
|
|
|
par->res_start = res_start;
|
|
|
par->res_size = res_size;
|
|
|
par->irq = pdev->irq;
|
|
@@ -3655,18 +3648,62 @@ static void __devexit atyfb_pci_remove(struct pci_dev *pdev)
|
|
|
atyfb_remove(info);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * This driver uses its own matching table. That will be more difficult
|
|
|
- * to fix, so for now, we just match against any ATI ID and let the
|
|
|
- * probe() function find out what's up. That also mean we don't have
|
|
|
- * a module ID table though.
|
|
|
- */
|
|
|
static struct pci_device_id atyfb_pci_tbl[] = {
|
|
|
- { PCI_VENDOR_ID_ATI, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
|
|
- PCI_BASE_CLASS_DISPLAY << 16, 0xff0000, 0 },
|
|
|
- { 0, }
|
|
|
+#ifdef CONFIG_FB_ATY_GX
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GX) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CX) },
|
|
|
+#endif /* CONFIG_FB_ATY_GX */
|
|
|
+
|
|
|
+#ifdef CONFIG_FB_ATY_CT
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CT) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64ET) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LT) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VT) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GT) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VU) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GU) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LG) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VV) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GV) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GW) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GY) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GZ) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GB) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GD) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GI) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GP) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GQ) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LB) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LD) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LI) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LP) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LQ) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GM) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GN) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GO) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GL) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GR) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GS) },
|
|
|
+
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LM) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LN) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LR) },
|
|
|
+ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LS) },
|
|
|
+#endif /* CONFIG_FB_ATY_CT */
|
|
|
+ { }
|
|
|
};
|
|
|
|
|
|
+MODULE_DEVICE_TABLE(pci, atyfb_pci_tbl);
|
|
|
+
|
|
|
static struct pci_driver atyfb_driver = {
|
|
|
.name = "atyfb",
|
|
|
.id_table = atyfb_pci_tbl,
|