summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorSeshendra Gadagottu <sgadagottu@nvidia.com>2011-08-25 17:59:20 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:48:36 -0800
commit937fe80954484d276bd55db8745718985ac8f2c3 (patch)
tree39eb6eb9bbaf5017c4cd3bdba2ded7f631fc075c /arch/arm/mach-tegra
parentc2fa64f3f805ed2173f2e8f8772840336e4f90a4 (diff)
usb: ehci: tegra: Fix resume issue for T30 HSIC
After resume, HOSPC register needs to be configured correctly for HSIC to be function. Also no need to set UHSIC_RPU_STROBE line during hsic bus idle sequence. BUG 868313 Original-Change-Id: I79debb424021f375e9a93df731848cfbc95068bc Reviewed-on: http://git-master/r/49195 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R4a5e18227c213c722246aa6703d7667c7e4ae659
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/usb_phy.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c
index c40de4d4d5d7..9b7907f3fe38 100644
--- a/arch/arm/mach-tegra/usb_phy.c
+++ b/arch/arm/mach-tegra/usb_phy.c
@@ -2366,6 +2366,15 @@ int tegra_usb_phy_bus_idle(struct tegra_usb_phy *phy)
void __iomem *base = phy->regs;
if (phy->usb_phy_type == TEGRA_USB_PHY_TYPE_HSIC) {
+#ifndef CONFIG_ARCH_TEGRA_2x_SOC
+ /* Change the USB controller PHY type to HSIC */
+ val = readl(base + HOSTPC1_DEVLC);
+ val &= ~HOSTPC1_DEVLC_PTS(HOSTPC1_DEVLC_PTS_MASK);
+ val |= HOSTPC1_DEVLC_PTS(HOSTPC1_DEVLC_PTS_HSIC);
+ val &= ~HOSTPC1_DEVLC_PSPD(HOSTPC1_DEVLC_PSPD_MASK);
+ val |= HOSTPC1_DEVLC_PSPD(HOSTPC1_DEVLC_PSPD_HIGH_SPEED);
+ writel(val, base + HOSTPC1_DEVLC);
+#endif
val = readl(base + UHSIC_MISC_CFG0);
val |= UHSIC_DETECT_SHORT_CONNECT;
writel(val, base + UHSIC_MISC_CFG0);
@@ -2377,7 +2386,9 @@ int tegra_usb_phy_bus_idle(struct tegra_usb_phy *phy)
val = readl(base + UHSIC_PADS_CFG1);
val &= ~UHSIC_RPD_STROBE;
+#ifdef CONFIG_ARCH_TEGRA_2x_SOC
val |= UHSIC_RPU_STROBE;
+#endif
writel(val, base + UHSIC_PADS_CFG1);
}
return 0;