diff options
Diffstat (limited to 'drivers/ide/setup-pci.c')
| -rw-r--r-- | drivers/ide/setup-pci.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index 25fd09053220..d2cd5a3d38f8 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
| @@ -704,7 +704,7 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_devices); | |||
| 704 | /* | 704 | /* |
| 705 | * Module interfaces | 705 | * Module interfaces |
| 706 | */ | 706 | */ |
| 707 | 707 | ||
| 708 | static int pre_init = 1; /* Before first ordered IDE scan */ | 708 | static int pre_init = 1; /* Before first ordered IDE scan */ |
| 709 | static LIST_HEAD(ide_pci_drivers); | 709 | static LIST_HEAD(ide_pci_drivers); |
| 710 | 710 | ||
| @@ -714,7 +714,7 @@ static LIST_HEAD(ide_pci_drivers); | |||
| 714 | * @module: owner module of the driver | 714 | * @module: owner module of the driver |
| 715 | * | 715 | * |
| 716 | * Registers a driver with the IDE layer. The IDE layer arranges that | 716 | * Registers a driver with the IDE layer. The IDE layer arranges that |
| 717 | * boot time setup is done in the expected device order and then | 717 | * boot time setup is done in the expected device order and then |
| 718 | * hands the controllers off to the core PCI code to do the rest of | 718 | * hands the controllers off to the core PCI code to do the rest of |
| 719 | * the work. | 719 | * the work. |
| 720 | * | 720 | * |
| @@ -724,13 +724,12 @@ static LIST_HEAD(ide_pci_drivers); | |||
| 724 | int __ide_pci_register_driver(struct pci_driver *driver, struct module *module, | 724 | int __ide_pci_register_driver(struct pci_driver *driver, struct module *module, |
| 725 | const char *mod_name) | 725 | const char *mod_name) |
| 726 | { | 726 | { |
| 727 | if(!pre_init) | 727 | if (!pre_init) |
| 728 | return __pci_register_driver(driver, module, mod_name); | 728 | return __pci_register_driver(driver, module, mod_name); |
| 729 | driver->driver.owner = module; | 729 | driver->driver.owner = module; |
| 730 | list_add_tail(&driver->node, &ide_pci_drivers); | 730 | list_add_tail(&driver->node, &ide_pci_drivers); |
| 731 | return 0; | 731 | return 0; |
| 732 | } | 732 | } |
| 733 | |||
| 734 | EXPORT_SYMBOL_GPL(__ide_pci_register_driver); | 733 | EXPORT_SYMBOL_GPL(__ide_pci_register_driver); |
| 735 | 734 | ||
| 736 | /** | 735 | /** |
| @@ -741,17 +740,18 @@ EXPORT_SYMBOL_GPL(__ide_pci_register_driver); | |||
| 741 | * This is only used during boot up to get the ordering correct. After | 740 | * This is only used during boot up to get the ordering correct. After |
| 742 | * boot up the pci layer takes over the job. | 741 | * boot up the pci layer takes over the job. |
| 743 | */ | 742 | */ |
| 744 | 743 | ||
| 745 | static int __init ide_scan_pcidev(struct pci_dev *dev) | 744 | static int __init ide_scan_pcidev(struct pci_dev *dev) |
| 746 | { | 745 | { |
| 747 | struct list_head *l; | 746 | struct list_head *l; |
| 748 | struct pci_driver *d; | 747 | struct pci_driver *d; |
| 749 | 748 | ||
| 750 | list_for_each(l, &ide_pci_drivers) { | 749 | list_for_each(l, &ide_pci_drivers) { |
| 751 | d = list_entry(l, struct pci_driver, node); | 750 | d = list_entry(l, struct pci_driver, node); |
| 752 | if (d->id_table) { | 751 | if (d->id_table) { |
| 753 | const struct pci_device_id *id = pci_match_id(d->id_table, | 752 | const struct pci_device_id *id = |
| 754 | dev); | 753 | pci_match_id(d->id_table, dev); |
| 754 | |||
| 755 | if (id != NULL && d->probe(dev, id) >= 0) { | 755 | if (id != NULL && d->probe(dev, id) >= 0) { |
| 756 | dev->driver = d; | 756 | dev->driver = d; |
| 757 | pci_dev_get(dev); | 757 | pci_dev_get(dev); |
| @@ -779,13 +779,13 @@ void __init ide_scan_pcibus (int scan_direction) | |||
| 779 | 779 | ||
| 780 | pre_init = 0; | 780 | pre_init = 0; |
| 781 | if (!scan_direction) | 781 | if (!scan_direction) |
| 782 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) | 782 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev))) |
| 783 | ide_scan_pcidev(dev); | 783 | ide_scan_pcidev(dev); |
| 784 | else | 784 | else |
| 785 | while ((dev = pci_get_device_reverse(PCI_ANY_ID, PCI_ANY_ID, dev)) | 785 | while ((dev = pci_get_device_reverse(PCI_ANY_ID, PCI_ANY_ID, |
| 786 | != NULL) | 786 | dev))) |
| 787 | ide_scan_pcidev(dev); | 787 | ide_scan_pcidev(dev); |
| 788 | 788 | ||
| 789 | /* | 789 | /* |
| 790 | * Hand the drivers over to the PCI layer now we | 790 | * Hand the drivers over to the PCI layer now we |
| 791 | * are post init. | 791 | * are post init. |
| @@ -794,9 +794,10 @@ void __init ide_scan_pcibus (int scan_direction) | |||
| 794 | list_for_each_safe(l, n, &ide_pci_drivers) { | 794 | list_for_each_safe(l, n, &ide_pci_drivers) { |
| 795 | list_del(l); | 795 | list_del(l); |
| 796 | d = list_entry(l, struct pci_driver, node); | 796 | d = list_entry(l, struct pci_driver, node); |
| 797 | if (__pci_register_driver(d, d->driver.owner, d->driver.mod_name)) | 797 | if (__pci_register_driver(d, d->driver.owner, |
| 798 | printk(KERN_ERR "%s: failed to register driver for %s\n", | 798 | d->driver.mod_name)) |
| 799 | __FUNCTION__, d->driver.mod_name); | 799 | printk(KERN_ERR "%s: failed to register %s driver\n", |
| 800 | __FUNCTION__, d->driver.mod_name); | ||
| 800 | } | 801 | } |
| 801 | } | 802 | } |
| 802 | #endif | 803 | #endif |
