diff options
author | Manoj Chourasia <mchourasia@nvidia.com> | 2012-05-11 18:44:42 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-05-18 14:08:27 -0700 |
commit | da6d900290c3c192012dcee3d28c992ea6301c45 (patch) | |
tree | 2923f2397d4863031d4a3c6e57a22df8f090261f /arch/arm/mach-tegra/pcie.c | |
parent | 13941b93997050cc15648b39e49f067b1b2445f1 (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.c | 13 |
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; |