aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/probe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/probe.c')
-rw-r--r--drivers/pci/probe.c50
1 files changed, 33 insertions, 17 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index b9c9b03919d4..35caec13023a 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -753,27 +753,19 @@ pci_scan_device(struct pci_bus *bus, int devfn)
753 kfree(dev); 753 kfree(dev);
754 return NULL; 754 return NULL;
755 } 755 }
756 device_initialize(&dev->dev);
757 dev->dev.release = pci_release_dev;
758 pci_dev_get(dev);
759
760 dev->dev.dma_mask = &dev->dma_mask;
761 dev->dev.coherent_dma_mask = 0xffffffffull;
762 756
763 return dev; 757 return dev;
764} 758}
765 759
766struct pci_dev * __devinit 760void __devinit pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
767pci_scan_single_device(struct pci_bus *bus, int devfn)
768{ 761{
769 struct pci_dev *dev; 762 device_initialize(&dev->dev);
763 dev->dev.release = pci_release_dev;
764 pci_dev_get(dev);
770 765
771 dev = pci_scan_device(bus, devfn); 766 dev->dev.dma_mask = &dev->dma_mask;
772 pci_scan_msi_device(dev); 767 dev->dev.coherent_dma_mask = 0xffffffffull;
773 768
774 if (!dev)
775 return NULL;
776
777 /* Fix up broken headers */ 769 /* Fix up broken headers */
778 pci_fixup_device(pci_fixup_header, dev); 770 pci_fixup_device(pci_fixup_header, dev);
779 771
@@ -785,6 +777,19 @@ pci_scan_single_device(struct pci_bus *bus, int devfn)
785 spin_lock(&pci_bus_lock); 777 spin_lock(&pci_bus_lock);
786 list_add_tail(&dev->bus_list, &bus->devices); 778 list_add_tail(&dev->bus_list, &bus->devices);
787 spin_unlock(&pci_bus_lock); 779 spin_unlock(&pci_bus_lock);
780}
781
782struct pci_dev * __devinit
783pci_scan_single_device(struct pci_bus *bus, int devfn)
784{
785 struct pci_dev *dev;
786
787 dev = pci_scan_device(bus, devfn);
788 if (!dev)
789 return NULL;
790
791 pci_device_add(dev, bus);
792 pci_scan_msi_device(dev);
788 793
789 return dev; 794 return dev;
790} 795}
@@ -881,7 +886,8 @@ unsigned int __devinit pci_do_scan_bus(struct pci_bus *bus)
881 return max; 886 return max;
882} 887}
883 888
884struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent, int bus, struct pci_ops *ops, void *sysdata) 889struct pci_bus * __devinit pci_create_bus(struct device *parent,
890 int bus, struct pci_ops *ops, void *sysdata)
885{ 891{
886 int error; 892 int error;
887 struct pci_bus *b; 893 struct pci_bus *b;
@@ -938,8 +944,6 @@ struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent, int bus,
938 b->resource[0] = &ioport_resource; 944 b->resource[0] = &ioport_resource;
939 b->resource[1] = &iomem_resource; 945 b->resource[1] = &iomem_resource;
940 946
941 b->subordinate = pci_scan_child_bus(b);
942
943 return b; 947 return b;
944 948
945sys_create_link_err: 949sys_create_link_err:
@@ -957,6 +961,18 @@ err_out:
957 kfree(b); 961 kfree(b);
958 return NULL; 962 return NULL;
959} 963}
964EXPORT_SYMBOL_GPL(pci_create_bus);
965
966struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
967 int bus, struct pci_ops *ops, void *sysdata)
968{
969 struct pci_bus *b;
970
971 b = pci_create_bus(parent, bus, ops, sysdata);
972 if (b)
973 b->subordinate = pci_scan_child_bus(b);
974 return b;
975}
960EXPORT_SYMBOL(pci_scan_bus_parented); 976EXPORT_SYMBOL(pci_scan_bus_parented);
961 977
962#ifdef CONFIG_HOTPLUG 978#ifdef CONFIG_HOTPLUG