]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
pcie: host: tegra: fix port register access
authorVidya Sagar <vidyas@nvidia.com>
Tue, 24 Nov 2015 18:08:35 +0000 (23:38 +0530)
committermobile promotions <svcmobile_promotions@nvidia.com>
Mon, 7 Dec 2015 18:30:00 +0000 (10:30 -0800)
access root port registers only if rootport is active

Bug 1705758

Change-Id: Iac2f2b673d30824188220ddddf3a037535ab1f34
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Reviewed-on: http://git-master/r/837265
(cherry picked from commit be8e3f837be5cdf3ed8daec91ac0dedc29d0c7a7)
Reviewed-on: http://git-master/r/841724
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
drivers/pci/host/pci-tegra.c

index fc89c7bf3caa2cfb2dce22adf11cf6034e18c8b1..84529797a2fdbc238e48bc78987c8661a03b005f 100644 (file)
@@ -843,6 +843,9 @@ static void tegra_pcie_enable_aer(struct tegra_pcie_port *port, bool enable)
        unsigned int data;
 
        PR_FUNC_LINE;
+       if (!port->status)
+               return;
+
        data = rp_readl(port, NV_PCIE2_RP_VEND_CTL1);
        if (enable)
                data |= PCIE2_RP_VEND_CTL1_ERPT;
@@ -3777,6 +3780,9 @@ static int tegra_pcie_ports_seq_show(struct seq_file *s, void *v)
 
        port = list_entry(v, struct tegra_pcie_port, list);
 
+       if (!port->status)
+               return 0;
+
        value = readl(port->base + RP_VEND_XP);
 
        if (value & RP_VEND_XP_DL_UP)
@@ -3935,8 +3941,9 @@ static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie)
                goto remove;
 
        list_for_each_entry(port, &pcie->ports, list) {
-               if (tegra_pcie_port_debugfs_init(port))
-                       goto remove;
+               if (port->status)
+                       if (tegra_pcie_port_debugfs_init(port))
+                               goto remove;
        }
 
        return 0;
@@ -3957,11 +3964,12 @@ static int tegra_pcie_probe_complete(struct tegra_pcie *pcie)
        if (ret)
                return ret;
 
-       if (IS_ENABLED(CONFIG_DEBUG_FS)) {
-               int ret = tegra_pcie_debugfs_init(pcie);
-               if (ret < 0)
-                       dev_err(&pdev->dev, "failed to setup debugfs: %d\n",
-                               ret);
+       if (IS_ENABLED(CONFIG_DEBUG_FS))
+               if (pcie->num_ports) {
+                       int ret = tegra_pcie_debugfs_init(pcie);
+                       if (ret < 0)
+                               dev_err(&pdev->dev, "failed to setup debugfs: %d\n",
+                                       ret);
        }
 
        return 0;