]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
pcie: host: tegra: Limit number of probe deferrals
authorVipin Kumar <vipink@nvidia.com>
Tue, 19 Aug 2014 02:25:13 +0000 (07:55 +0530)
committerSandeep Trasi <strasi@nvidia.com>
Wed, 27 Aug 2014 16:18:03 +0000 (09:18 -0700)
bug 200005063

Change-Id: Iae3e96acf5facd3201f93afdbae97f81cc210cc5
Signed-off-by: Vipin Kumar <vipink@nvidia.com>
Reviewed-on: http://git-master/r/481794
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Vidya Sagar <vidyas@nvidia.com>
Reviewed-by: Jay Agarwal <jagarwal@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sandeep Trasi <strasi@nvidia.com>
drivers/pci/host/pci-tegra.c

index 6a0aaa6ef4b1e54df61fc0f58469bfacaa6360bc..ef8675eb40d7be625197efb6d306ca1f2042ad90 100644 (file)
@@ -413,6 +413,9 @@ struct tegra_pcie_bus {
        unsigned int nr;
 };
 
+/* Maximum number of times probe can be deferred */
+static int tegra_pcie_max_deferrals = 3;
+
 /* used to avoid successive hotplug disconnect or connect */
 static bool hotplug_event;
 /* pcie mselect & xclk rate */
@@ -2500,8 +2503,14 @@ static int tegra_pcie_init(struct tegra_pcie *pcie)
                tegra_pcie_hw.sys = &pcie->sys;
                pci_common_init_dev(pcie->dev, &tegra_pcie_hw);
        } else {
-               dev_err(pcie->dev, "PCIE: no ports detected\n");
                err = -EPROBE_DEFER;
+
+               /* Defer the probe only a certain number of times */
+               if (tegra_pcie_max_deferrals-- <= 0) {
+                       dev_err(pcie->dev, "PCIE: no ports detected\n");
+                       err = 0;
+               }
+
                goto fail_enum;
        }
        tegra_pcie_enable_features(pcie);