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

Commit a58674ff authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

PCI: Simplify pcie_bus_configure_settings() interface

Based on a patch by Jon Mason (see URL below).

All users of pcie_bus_configure_settings() pass arguments of the form
"bus, bus->self->pcie_mpss".  The "mpss" argument is redundant since we
can easily look it up internally.  In addition, all callers check
"bus->self" for NULL, which we can also do internally.

This patch simplifies the interface and the callers.  No functional change.

Reference: http://lkml.kernel.org/r/1317048850-30728-2-git-send-email-mason@myri.com


Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 2c25e34c
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -1672,12 +1672,8 @@ void pcibios_scan_phb(struct pci_controller *hose)
	/* Configure PCI Express settings */
	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
		struct pci_bus *child;
		list_for_each_entry(child, &bus->children, node) {
			struct pci_dev *self = child->self;
			if (!self)
				continue;
			pcie_bus_configure_settings(child, self->pcie_mpss);
		}
		list_for_each_entry(child, &bus->children, node)
			pcie_bus_configure_settings(child);
	}
}

+2 −7
Original line number Diff line number Diff line
@@ -508,13 +508,8 @@ static void fixup_read_and_payload_sizes(struct pci_controller *controller)
						rc_dev_cap.word);

	/* Configure PCI Express MPS setting. */
	list_for_each_entry(child, &root_bus->children, node) {
		struct pci_dev *self = child->self;
		if (!self)
			continue;

		pcie_bus_configure_settings(child, self->pcie_mpss);
	}
	list_for_each_entry(child, &root_bus->children, node)
		pcie_bus_configure_settings(child);

	/*
	 * Set the mac_config register in trio based on the MPS/MRS of the link.
+2 −7
Original line number Diff line number Diff line
@@ -568,13 +568,8 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
	 */
	if (bus) {
		struct pci_bus *child;
		list_for_each_entry(child, &bus->children, node) {
			struct pci_dev *self = child->self;
			if (!self)
				continue;

			pcie_bus_configure_settings(child, self->pcie_mpss);
		}
		list_for_each_entry(child, &bus->children, node)
			pcie_bus_configure_settings(child);
	}

	if (bus && node != -1) {
+2 −3
Original line number Diff line number Diff line
@@ -160,9 +160,8 @@ void pci_configure_slot(struct pci_dev *dev)
			(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI)))
		return;

	if (dev->bus && dev->bus->self)
		pcie_bus_configure_settings(dev->bus,
					    dev->bus->self->pcie_mpss);
	if (dev->bus)
		pcie_bus_configure_settings(dev->bus);

	memset(&hpp, 0, sizeof(hpp));
	ret = pci_get_hp_params(dev, &hpp);
+5 −2
Original line number Diff line number Diff line
@@ -1607,10 +1607,13 @@ static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
 * parents then children fashion.  If this changes, then this code will not
 * work as designed.
 */
void pcie_bus_configure_settings(struct pci_bus *bus, u8 mpss)
void pcie_bus_configure_settings(struct pci_bus *bus)
{
	u8 smpss;

	if (!bus->self)
		return;

	if (!pci_is_pcie(bus->self))
		return;

@@ -1625,7 +1628,7 @@ void pcie_bus_configure_settings(struct pci_bus *bus, u8 mpss)
		smpss = 0;

	if (pcie_bus_config == PCIE_BUS_SAFE) {
		smpss = mpss;
		smpss = bus->self->pcie_mpss;

		pcie_find_smpss(bus->self, &smpss);
		pci_walk_bus(bus, pcie_find_smpss, &smpss);
Loading