summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra3_usb_phy.c
diff options
context:
space:
mode:
authorPreetham Chandru <pchandru@nvidia.com>2012-06-20 15:55:21 +0530
committerVarun Colbert <vcolbert@nvidia.com>2012-07-09 15:32:20 -0700
commit3f510643870b06d31c24cdd07dd48a7e461ae849 (patch)
treef84dd4f8215f8b3afcafc560396c4b94e616758e /arch/arm/mach-tegra/tegra3_usb_phy.c
parent2f2a4ea1d2e8b11d39e18da9081a0a5ac516c387 (diff)
arm: tegra3: usb_phy: Fix warning message for lp1 resume
When the system resumes from lp1 for usb wake event we are seeing the below warning message: usb_phy_bringup_host_controller: timeout waiting for PORT_SUSPEND The above warning message are seen only for lp1 resume and not for lp0 resume. This is happening only for lp1 resume because in usb_phy_bringup_host_controller(), the port is suspended only if we are not resuming from remote wakeup, in case of lp0 remote_wake flag is set to true but not in case of lp1. This is because in lp1, pmc is not responsible for waking the system but it's the flow controller and hence UTMIP_WALK_PTR_VAL(inst) will return 0 due to this remote wakeup flag was getting reset to false. Bug 985396 Signed-off-by: Preetham Chandru R <pchandru@nvidia.com> Change-Id: I67fcf21d77cbc627315164b6e1c4f27b0b9ae2c3 Reviewed-on: http://git-master/r/110064 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/tegra3_usb_phy.c')
-rw-r--r--arch/arm/mach-tegra/tegra3_usb_phy.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/tegra3_usb_phy.c b/arch/arm/mach-tegra/tegra3_usb_phy.c
index 5211fa3696d1..6a8dc3d252e6 100644
--- a/arch/arm/mach-tegra/tegra3_usb_phy.c
+++ b/arch/arm/mach-tegra/tegra3_usb_phy.c
@@ -1631,10 +1631,18 @@ static void utmi_phy_restore_start(struct tegra_usb_phy *phy)
DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, phy->inst);
val = readl(pmc_base + UTMIP_UHSIC_STATUS);
- /* check whether we wake up from the remote resume */
+ /* Check whether we wake up from the remote resume.
+ For lp1 case, pmc is not responsible for waking the
+ system, it's the flow controller and hence
+ UTMIP_WALK_PTR_VAL(inst) will return 0.
+ Also, for lp1 case phy->remote_wakeup will already be set
+ to true by utmi_phy_irq() when the remote wakeup happens.
+ Hence change the logic in the else part to enter only
+ if phy->remote_wakeup is not set to true by the
+ utmi_phy_irq(). */
if (UTMIP_WALK_PTR_VAL(inst) & val) {
phy->remote_wakeup = true;
- } else {
+ } else if(!phy->remote_wakeup) {
if (!((UTMIP_USBON_VAL(phy->inst) |
UTMIP_USBOP_VAL(phy->inst)) & val)) {
utmip_phy_disable_pmc_bus_ctrl(phy);