summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/usb_phy.c
diff options
context:
space:
mode:
authorSuresh Mangipudi <smangipudi@nvidia.com>2011-09-30 16:17:40 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:47 -0800
commit600c04bb7985e622ab99553d78cf08612c5f64b5 (patch)
tree4267bcaa80bd03605d13894ff15523ce00f954f0 /arch/arm/mach-tegra/usb_phy.c
parent4a743e7df989ac079a1441b95812fbe89149c1d0 (diff)
tegra: usb: phy: usb trigger change for wakeup event
Change the trigger for the wake events. The WAKE_ON_CONNECT bit should not be cleared until the PCD_STS bit is set. Bug 881388 Reviewed-on: http://git-master/r/62335 (cherry picked from commit 0b2d13a0e7dfe5218082b799599fa815ad9c9334) Change-Id: I0d02f939ea5ba205765771242787f328c92092d5 Reviewed-on: http://git-master/r/63010 Reviewed-by: Suresh Mangipudi <smangipudi@nvidia.com> Tested-by: Suresh Mangipudi <smangipudi@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> Rebase-Id: R3673afb4fc4357f4b72cd9af8c561902f223fbc5
Diffstat (limited to 'arch/arm/mach-tegra/usb_phy.c')
-rw-r--r--arch/arm/mach-tegra/usb_phy.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/usb_phy.c b/arch/arm/mach-tegra/usb_phy.c
index db59f8d6a8a7..76116c46df2e 100644
--- a/arch/arm/mach-tegra/usb_phy.c
+++ b/arch/arm/mach-tegra/usb_phy.c
@@ -398,6 +398,7 @@
#define WAKE_VAL_FSJ 0x2
#define WAKE_VAL_FSK 0x1
#define WAKE_VAL_SE0 0x0
+#define WAKE_VAL_ANY 0xf
#define PMC_SLEEP_CFG 0x1fc
#define UTMIP_TCTRL_USE_PMC(inst) (1 << ((8*(inst))+3))
@@ -1288,10 +1289,7 @@ static void utmip_setup_pmc_wake_detect(struct tegra_usb_phy *phy)
/* Turn over pad configuration to PMC for line wake events*/
val = readl(pmc_base + PMC_SLEEP_CFG);
val &= ~UTMIP_WAKE_VAL(inst, ~0);
- if (port_speed == TEGRA_USB_PHY_PORT_SPEED_LOW)
- val |= UTMIP_WAKE_VAL(inst, WAKE_VAL_FSJ);
- else
- val |= UTMIP_WAKE_VAL(inst, WAKE_VAL_FSK);
+ val |= UTMIP_WAKE_VAL(inst, WAKE_VAL_ANY);
val |= UTMIP_RCTRL_USE_PMC(inst) | UTMIP_TCTRL_USE_PMC(inst);
val |= UTMIP_MASTER_ENABLE(inst) | UTMIP_FSLS_USE_PMC(inst);
writel(val, pmc_base + PMC_SLEEP_CFG);
@@ -1583,8 +1581,11 @@ static void utmi_phy_restore_end(struct tegra_usb_phy *phy)
do {
val = readl(base + USB_PORTSC1);
udelay(1);
- if (wait_time_us == 0)
+ if (wait_time_us == 0) {
+ utmip_phy_disable_pmc_bus_ctrl(phy);
+ tegra_usb_phy_postresume(phy, false);
return;
+ }
wait_time_us--;
} while (!(val & USB_PORTSC1_RESUME));
/* disable PMC master control */