diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-01-26 14:13:09 -0500 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-01-26 14:13:09 -0500 |
commit | 9ac59226ca95889ad620b0e63c0f700679fee5dd (patch) | |
tree | 54771bd08c565fba88e1257482f7cfb32de747ef /drivers/ide/setup-pci.c | |
parent | c99c92c58757985096e2d195dc1631246d99d686 (diff) |
ide: move CONFIG_IDEPCI_PCIBUS_ORDER code to ide-scan-pci.c
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/setup-pci.c')
-rw-r--r-- | drivers/ide/setup-pci.c | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index be9ae5a38cc7..676c66e72881 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
@@ -698,106 +698,3 @@ out: | |||
698 | } | 698 | } |
699 | 699 | ||
700 | EXPORT_SYMBOL_GPL(ide_setup_pci_devices); | 700 | EXPORT_SYMBOL_GPL(ide_setup_pci_devices); |
701 | |||
702 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER | ||
703 | /* | ||
704 | * Module interfaces | ||
705 | */ | ||
706 | |||
707 | static int pre_init = 1; /* Before first ordered IDE scan */ | ||
708 | static LIST_HEAD(ide_pci_drivers); | ||
709 | |||
710 | /* | ||
711 | * __ide_pci_register_driver - attach IDE driver | ||
712 | * @driver: pci driver | ||
713 | * @module: owner module of the driver | ||
714 | * | ||
715 | * Registers a driver with the IDE layer. The IDE layer arranges that | ||
716 | * boot time setup is done in the expected device order and then | ||
717 | * hands the controllers off to the core PCI code to do the rest of | ||
718 | * the work. | ||
719 | * | ||
720 | * Returns are the same as for pci_register_driver | ||
721 | */ | ||
722 | |||
723 | int __ide_pci_register_driver(struct pci_driver *driver, struct module *module, | ||
724 | const char *mod_name) | ||
725 | { | ||
726 | if (!pre_init) | ||
727 | return __pci_register_driver(driver, module, mod_name); | ||
728 | driver->driver.owner = module; | ||
729 | list_add_tail(&driver->node, &ide_pci_drivers); | ||
730 | return 0; | ||
731 | } | ||
732 | EXPORT_SYMBOL_GPL(__ide_pci_register_driver); | ||
733 | |||
734 | /** | ||
735 | * ide_scan_pcidev - find an IDE driver for a device | ||
736 | * @dev: PCI device to check | ||
737 | * | ||
738 | * Look for an IDE driver to handle the device we are considering. | ||
739 | * This is only used during boot up to get the ordering correct. After | ||
740 | * boot up the pci layer takes over the job. | ||
741 | */ | ||
742 | |||
743 | static int __init ide_scan_pcidev(struct pci_dev *dev) | ||
744 | { | ||
745 | struct list_head *l; | ||
746 | struct pci_driver *d; | ||
747 | |||
748 | list_for_each(l, &ide_pci_drivers) { | ||
749 | d = list_entry(l, struct pci_driver, node); | ||
750 | if (d->id_table) { | ||
751 | const struct pci_device_id *id = | ||
752 | pci_match_id(d->id_table, dev); | ||
753 | |||
754 | if (id != NULL && d->probe(dev, id) >= 0) { | ||
755 | dev->driver = d; | ||
756 | pci_dev_get(dev); | ||
757 | return 1; | ||
758 | } | ||
759 | } | ||
760 | } | ||
761 | return 0; | ||
762 | } | ||
763 | |||
764 | /** | ||
765 | * ide_scan_pcibus - perform the initial IDE driver scan | ||
766 | * | ||
767 | * Perform the initial bus rather than driver ordered scan of the | ||
768 | * PCI drivers. After this all IDE pci handling becomes standard | ||
769 | * module ordering not traditionally ordered. | ||
770 | */ | ||
771 | |||
772 | int __init ide_scan_pcibus(void) | ||
773 | { | ||
774 | struct pci_dev *dev = NULL; | ||
775 | struct pci_driver *d; | ||
776 | struct list_head *l, *n; | ||
777 | |||
778 | pre_init = 0; | ||
779 | if (!ide_scan_direction) | ||
780 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev))) | ||
781 | ide_scan_pcidev(dev); | ||
782 | else | ||
783 | while ((dev = pci_get_device_reverse(PCI_ANY_ID, PCI_ANY_ID, | ||
784 | dev))) | ||
785 | ide_scan_pcidev(dev); | ||
786 | |||
787 | /* | ||
788 | * Hand the drivers over to the PCI layer now we | ||
789 | * are post init. | ||
790 | */ | ||
791 | |||
792 | list_for_each_safe(l, n, &ide_pci_drivers) { | ||
793 | list_del(l); | ||
794 | d = list_entry(l, struct pci_driver, node); | ||
795 | if (__pci_register_driver(d, d->driver.owner, | ||
796 | d->driver.mod_name)) | ||
797 | printk(KERN_ERR "%s: failed to register %s driver\n", | ||
798 | __FUNCTION__, d->driver.mod_name); | ||
799 | } | ||
800 | |||
801 | return 0; | ||
802 | } | ||
803 | #endif | ||