aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/setup-pci.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-26 14:13:09 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-26 14:13:09 -0500
commit9ac59226ca95889ad620b0e63c0f700679fee5dd (patch)
tree54771bd08c565fba88e1257482f7cfb32de747ef /drivers/ide/setup-pci.c
parentc99c92c58757985096e2d195dc1631246d99d686 (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.c103
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
700EXPORT_SYMBOL_GPL(ide_setup_pci_devices); 700EXPORT_SYMBOL_GPL(ide_setup_pci_devices);
701
702#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
703/*
704 * Module interfaces
705 */
706
707static int pre_init = 1; /* Before first ordered IDE scan */
708static 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
723int __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}
732EXPORT_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
743static 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
772int __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