save pci_bus pointer created by PCIe sub-system's pci_scan_root_bus_bridge() to be used by host controller drivers for post processing. Tegra host controller driver needs it for the following reasons - to derive pci_host_bridge structure from pci_bus which is used to configure iATU's outbound regions for different windows accesses - to traverse and configure downstream hierarchy. One such case is, configuring all immediate downstream devices to D0 state before transiting link to L2 state. Saving pci_bus pointer seems the best method compared to deriving it by other means. Signed-off-by: Vidya Sagar <vidyas@xxxxxxxxxx> --- drivers/pci/controller/dwc/pcie-designware-host.c | 1 + drivers/pci/controller/dwc/pcie-designware.h | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 25087d3c9a82..15add3cf3945 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -494,6 +494,7 @@ int dw_pcie_host_init(struct pcie_port *pp) goto error; bus = bridge->bus; + pp->bus = bus; if (pp->ops->scan_bus) pp->ops->scan_bus(pp); diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 377f4c0b52da..70007276bc93 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -175,6 +175,7 @@ struct pcie_port { struct resource *busn; int irq; const struct dw_pcie_host_ops *ops; + struct pci_bus *bus; int msi_irq; struct irq_domain *irq_domain; struct irq_domain *msi_domain; -- 2.7.4