Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 073ae10c authored by Yinghai Lu's avatar Yinghai Lu Committed by Bjorn Helgaas
Browse files

PCI: cpci_hotplug: use generic pci_hp_add_bridge()



Use the new generic pci_hp_add_bridge() interface.

[bhelgaas: changelog]
Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent c6da81a4
Loading
Loading
Loading
Loading
+6 −31
Original line number Diff line number Diff line
@@ -285,44 +285,19 @@ int __ref cpci_configure_slot(struct slot *slot)
	for (fn = 0; fn < 8; fn++) {
		struct pci_dev *dev;

		dev = pci_get_slot(parent, PCI_DEVFN(PCI_SLOT(slot->devfn), fn));
		dev = pci_get_slot(parent,
				   PCI_DEVFN(PCI_SLOT(slot->devfn), fn));
		if (!dev)
			continue;
		if ((dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) ||
		    (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)) {
			/* Find an unused bus number for the new bridge */
			struct pci_bus *child;
			unsigned char busnr, start = parent->busn_res.start;
			unsigned char end = parent->busn_res.end;
			int max;

			for (busnr = start; busnr <= end; busnr++) {
				if (!pci_find_bus(pci_domain_nr(parent),
						  busnr))
					break;
			}
			if (busnr >= end) {
				err("No free bus for hot-added bridge\n");
				pci_dev_put(dev);
				continue;
			}
			child = pci_add_new_bus(parent, dev, busnr);
			if (!child) {
				err("Cannot add new bus for %s\n",
				    pci_name(dev));
				pci_dev_put(dev);
				continue;
			}
			max = pci_do_scan_bus(child);
			pci_bus_update_busn_res_end(child, max);
			pci_bus_size_bridges(child);
		}
		    (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS))
			pci_hp_add_bridge(dev);
		pci_dev_put(dev);
	}

	pci_bus_assign_resources(parent);
	pci_assign_unassigned_bridge_resources(parent->self);

	pci_bus_add_devices(parent);
	pci_enable_bridges(parent);

	dbg("%s - exit", __func__);
	return 0;