PCI: tegra: Use bus->sysdata to store and get host private data
authorManikanta Maddireddy <mmaddireddy@nvidia.com>
Thu, 11 Jan 2018 06:08:03 +0000 (11:38 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 15 Jan 2018 16:46:04 +0000 (16:46 +0000)
Tegra host driver is using pci_find_host_bridge() to get private data;
this can be easily avoided by using bus->sysdata to store and get private
data removing the pci_find_host_bridge() dependency.

Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com>
[lorenzo.pieralisi@arm.com: rewrote commit log]
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Thierry Reding <treding@nvidia.com>
drivers/pci/host/pci-tegra.c

index 4c105fbda777a87bd1f6523768ca5e78519928ab..059aa73d5f767b61ba6d122ca8c2396f175332c1 100644 (file)
@@ -379,8 +379,7 @@ static void __iomem *tegra_pcie_map_bus(struct pci_bus *bus,
                                        unsigned int devfn,
                                        int where)
 {
-       struct pci_host_bridge *host = pci_find_host_bridge(bus);
-       struct tegra_pcie *pcie = pci_host_bridge_priv(host);
+       struct tegra_pcie *pcie = bus->sysdata;
        void __iomem *addr = NULL;
 
        if (bus->number == 0) {
@@ -573,8 +572,7 @@ static int tegra_pcie_request_resources(struct tegra_pcie *pcie)
 
 static int tegra_pcie_map_irq(const struct pci_dev *pdev, u8 slot, u8 pin)
 {
-       struct pci_host_bridge *host = pci_find_host_bridge(pdev->bus);
-       struct tegra_pcie *pcie = pci_host_bridge_priv(host);
+       struct tegra_pcie *pcie = pdev->bus->sysdata;
        int irq;
 
        tegra_cpuidle_pcie_irqs_in_use();
@@ -2258,6 +2256,7 @@ static int tegra_pcie_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        pcie = pci_host_bridge_priv(host);
+       host->sysdata = pcie;
 
        pcie->soc = of_device_get_match_data(dev);
        INIT_LIST_HEAD(&pcie->ports);