diff options
author | Ville Syrjala <syrjala@sci.fi> | 2008-07-24 00:31:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-24 13:47:39 -0400 |
commit | 6cfafc15994ac2a2377b32b5a65cf62a90a80d49 (patch) | |
tree | 7d4208a0c476227881db8e702588aadb8c559d22 /drivers/video/aty | |
parent | 3880b0b5297ae9bf58a7662d13a46b5d5f0b2af6 (diff) |
atyfb: use a PCI device ID table
Convert atyfb to use a PCI device ID table.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/aty')
-rw-r--r-- | drivers/video/aty/atyfb_base.c | 73 |
1 files changed, 55 insertions, 18 deletions
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index d6903c70bee5..872760accb93 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -3418,14 +3418,7 @@ static int __devinit atyfb_pci_probe(struct pci_dev *pdev, const struct pci_devi | |||
3418 | struct fb_info *info; | 3418 | struct fb_info *info; |
3419 | struct resource *rp; | 3419 | struct resource *rp; |
3420 | struct atyfb_par *par; | 3420 | struct atyfb_par *par; |
3421 | int i, rc = -ENOMEM; | 3421 | int rc = -ENOMEM; |
3422 | |||
3423 | for (i = ARRAY_SIZE(aty_chips) - 1; i >= 0; i--) | ||
3424 | if (pdev->device == aty_chips[i].pci_id) | ||
3425 | break; | ||
3426 | |||
3427 | if (i < 0) | ||
3428 | return -ENODEV; | ||
3429 | 3422 | ||
3430 | /* Enable device in PCI config */ | 3423 | /* Enable device in PCI config */ |
3431 | if (pci_enable_device(pdev)) { | 3424 | if (pci_enable_device(pdev)) { |
@@ -3456,7 +3449,7 @@ static int __devinit atyfb_pci_probe(struct pci_dev *pdev, const struct pci_devi | |||
3456 | par = info->par; | 3449 | par = info->par; |
3457 | info->fix = atyfb_fix; | 3450 | info->fix = atyfb_fix; |
3458 | info->device = &pdev->dev; | 3451 | info->device = &pdev->dev; |
3459 | par->pci_id = aty_chips[i].pci_id; | 3452 | par->pci_id = pdev->device; |
3460 | par->res_start = res_start; | 3453 | par->res_start = res_start; |
3461 | par->res_size = res_size; | 3454 | par->res_size = res_size; |
3462 | par->irq = pdev->irq; | 3455 | par->irq = pdev->irq; |
@@ -3655,18 +3648,62 @@ static void __devexit atyfb_pci_remove(struct pci_dev *pdev) | |||
3655 | atyfb_remove(info); | 3648 | atyfb_remove(info); |
3656 | } | 3649 | } |
3657 | 3650 | ||
3658 | /* | ||
3659 | * This driver uses its own matching table. That will be more difficult | ||
3660 | * to fix, so for now, we just match against any ATI ID and let the | ||
3661 | * probe() function find out what's up. That also mean we don't have | ||
3662 | * a module ID table though. | ||
3663 | */ | ||
3664 | static struct pci_device_id atyfb_pci_tbl[] = { | 3651 | static struct pci_device_id atyfb_pci_tbl[] = { |
3665 | { PCI_VENDOR_ID_ATI, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 3652 | #ifdef CONFIG_FB_ATY_GX |
3666 | PCI_BASE_CLASS_DISPLAY << 16, 0xff0000, 0 }, | 3653 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GX) }, |
3667 | { 0, } | 3654 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CX) }, |
3655 | #endif /* CONFIG_FB_ATY_GX */ | ||
3656 | |||
3657 | #ifdef CONFIG_FB_ATY_CT | ||
3658 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CT) }, | ||
3659 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64ET) }, | ||
3660 | |||
3661 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LT) }, | ||
3662 | |||
3663 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VT) }, | ||
3664 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GT) }, | ||
3665 | |||
3666 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VU) }, | ||
3667 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GU) }, | ||
3668 | |||
3669 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LG) }, | ||
3670 | |||
3671 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64VV) }, | ||
3672 | |||
3673 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GV) }, | ||
3674 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GW) }, | ||
3675 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GY) }, | ||
3676 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GZ) }, | ||
3677 | |||
3678 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GB) }, | ||
3679 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GD) }, | ||
3680 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GI) }, | ||
3681 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GP) }, | ||
3682 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GQ) }, | ||
3683 | |||
3684 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LB) }, | ||
3685 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LD) }, | ||
3686 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LI) }, | ||
3687 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LP) }, | ||
3688 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LQ) }, | ||
3689 | |||
3690 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GM) }, | ||
3691 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GN) }, | ||
3692 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GO) }, | ||
3693 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GL) }, | ||
3694 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GR) }, | ||
3695 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GS) }, | ||
3696 | |||
3697 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LM) }, | ||
3698 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LN) }, | ||
3699 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LR) }, | ||
3700 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64LS) }, | ||
3701 | #endif /* CONFIG_FB_ATY_CT */ | ||
3702 | { } | ||
3668 | }; | 3703 | }; |
3669 | 3704 | ||
3705 | MODULE_DEVICE_TABLE(pci, atyfb_pci_tbl); | ||
3706 | |||
3670 | static struct pci_driver atyfb_driver = { | 3707 | static struct pci_driver atyfb_driver = { |
3671 | .name = "atyfb", | 3708 | .name = "atyfb", |
3672 | .id_table = atyfb_pci_tbl, | 3709 | .id_table = atyfb_pci_tbl, |