ARM/PCI: Call pcie_bus_configure_settings() to set MPS
authorMurali Karicheri <m-karicheri2@ti.com>
Wed, 28 May 2014 17:14:53 +0000 (13:14 -0400)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 30 May 2014 16:50:57 +0000 (10:50 -0600)
Call pcie_bus_configure_settings() on ARM, like for other platforms.
pcie_bus_configure_settings() makes sure the MPS across the bus is uniform
and provides the ability to tune the MRSS and MPS to higher performance
values.  This is particularly important for embedded where there is no
firmware to program these PCIe settings for the OS.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Russell King <linux@arm.linux.org.uk>
CC: Arnd Bergmann <arnd@arndb.de>
CC: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
arch/arm/kernel/bios32.c

index 16d43cd4561908518894f6141cdcc2a6f0a2af4b..17a26c17f7f5731d78d257e7facd0080bba12d5f 100644 (file)
@@ -545,6 +545,18 @@ void pci_common_init_dev(struct device *parent, struct hw_pci *hw)
                 */
                pci_bus_add_devices(bus);
        }
+
+       list_for_each_entry(sys, &head, node) {
+               struct pci_bus *bus = sys->bus;
+
+               /* Configure PCI Express settings */
+               if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+                       struct pci_bus *child;
+
+                       list_for_each_entry(child, &bus->children, node)
+                               pcie_bus_configure_settings(child);
+               }
+       }
 }
 
 #ifndef CONFIG_PCI_HOST_ITE8152