summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/pcie.c
diff options
context:
space:
mode:
authorManoj Chourasia <mchourasia@nvidia.com>2012-05-11 18:44:42 +0530
committerSimone Willett <swillett@nvidia.com>2012-05-18 14:08:27 -0700
commitda6d900290c3c192012dcee3d28c992ea6301c45 (patch)
tree2923f2397d4863031d4a3c6e57a22df8f090261f /arch/arm/mach-tegra/pcie.c
parent13941b93997050cc15648b39e49f067b1b2445f1 (diff)
ARM: tegra: pcie: Fix for second pcie port detection.
PCIE card on second port doesn't get detected if the first port is empty. If the link for first port is reset and the second port is queried for card, it doesn't get detected. Fix for the issue is do not reset the link if the port is not detected in third attempt. bug 970206 Change-Id: I4e4d32c22697b817381834ac746417437016d7f3 Signed-off-by: Manoj Chourasia <mchourasia@nvidia.com> Reviewed-on: http://git-master/r/101986 (cherry picked from commit c085f6b1b3a77b7aae3b04e22c7a9bfed8517c1e) Reviewed-on: http://git-master/r/103077 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/pcie.c')
-rw-r--r--arch/arm/mach-tegra/pcie.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/pcie.c b/arch/arm/mach-tegra/pcie.c
index 88bf10b5c732..1c4ee1b1f5ce 100644
--- a/arch/arm/mach-tegra/pcie.c
+++ b/arch/arm/mach-tegra/pcie.c
@@ -1099,13 +1099,14 @@ static bool tegra_pcie_check_link(struct tegra_pcie_port *pp, int idx,
}
retry:
- /* Pulse the PEX reset */
- reg = afi_readl(reset_reg) & ~AFI_PEX_CTRL_RST;
- afi_writel(reg, reset_reg);
- reg = afi_readl(reset_reg) | AFI_PEX_CTRL_RST;
- afi_writel(reg, reset_reg);
+ if (--retries) {
+ /* Pulse the PEX reset */
+ reg = afi_readl(reset_reg) & ~AFI_PEX_CTRL_RST;
+ afi_writel(reg, reset_reg);
+ reg = afi_readl(reset_reg) | AFI_PEX_CTRL_RST;
+ afi_writel(reg, reset_reg);
+ }
- retries--;
} while (retries);
return false;