summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Yarlagadda <kyarlagadda@nvidia.com>2011-11-18 15:02:17 +0530
committerVarun Colbert <vcolbert@nvidia.com>2012-01-20 13:57:17 -0800
commitac64f7716cc7afbb57a3c7c70aa9214e2279624e (patch)
tree7351923b52219c6f7d293a639908d6b5142db149
parentc88b47aaa30a86a6da95aae468f46866d10b18e9 (diff)
ARM: tegra: usb: check for valid phy clock
Check for valid clock after setting up phy in UTMIP reset Bug 853708 Bug 886080 (reviewed on http://git-master/r/51555) (cherry picked from commit 25b340b64ca27971f6d2d555299a749f0394e77e) Change-Id: I98c79fb1e8961b9af19f3001fe6fbde2b28509a0 Reviewed-on: http://git-master/r/75502 Reviewed-by: Simone Willett <swillett@nvidia.com> Signed-off-by: Ken Chang <kenc@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/76468 Reviewed-by: Automatic_Commit_Validation_User
-rw-r--r--arch/arm/mach-tegra/usb_phy.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c
index 8c2990b00752..5eab7ccd3dc8 100644
--- a/arch/arm/mach-tegra/usb_phy.c
+++ b/arch/arm/mach-tegra/usb_phy.c
@@ -790,6 +790,7 @@ static void utmi_phy_clk_disable(struct tegra_usb_phy *phy)
{
unsigned long val;
void __iomem *base = phy->regs;
+
#ifdef CONFIG_ARCH_TEGRA_2x_SOC
if (phy->instance == 0) {
val = readl(base + USB_SUSP_CTRL);
@@ -813,6 +814,15 @@ static void utmi_phy_clk_disable(struct tegra_usb_phy *phy)
val |= HOSTPC1_DEVLC_PHCD;
writel(val, base + HOSTPC1_DEVLC);
#endif
+ if (phy->instance == 2) {
+ val = readl(base + USB_SUSP_CTRL);
+ val |= USB_PHY_CLK_VALID_INT_ENB;
+ writel(val, base + USB_SUSP_CTRL);
+ } else {
+ val = readl(base + USB_SUSP_CTRL);
+ val |= UTMIP_RESET;
+ writel(val, base + USB_SUSP_CTRL);
+ }
if (utmi_wait_register(base + USB_SUSP_CTRL, USB_PHY_CLK_VALID, 0) < 0)
pr_err("%s: timeout waiting for phy to stabilize\n", __func__);
@@ -1360,15 +1370,6 @@ static int utmi_phy_power_off(struct tegra_usb_phy *phy, bool is_dpd)
utmi_phy_clk_disable(phy);
- if (phy->hotplug) {
- val = readl(base + USB_SUSP_CTRL);
- val |= USB_PHY_CLK_VALID_INT_ENB;
- writel(val, base + USB_SUSP_CTRL);
- } else {
- val = readl(base + USB_SUSP_CTRL);
- val |= UTMIP_RESET;
- writel(val, base + USB_SUSP_CTRL);
- }
utmip_pad_power_off(phy, true);
return 0;
}