diff options
author | Suresh Mangipudi <smangipudi@nvidia.com> | 2011-04-12 19:40:35 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-05-05 14:31:07 -0700 |
commit | fdefc174936fec8ef0c6e471f6bcb7d8518544e2 (patch) | |
tree | 20bded08f86f7f2f5f4de127381b6f5ab8d8759f /drivers/usb | |
parent | 3c3782887fa53fdfddb3c53437a034c7aca02621 (diff) |
usb: host: tegra: PORTSC.SUSP needs a delay
Delay of 4ms is needed after the SUSPEND bit in the PORTSC register is
programmed. The hardware would be set only after 4ms of delay.
Bug 812427
Reviewed-on: http://git-master/r/27510
Reviewed-on: http://git-master/r/29974
(cherry picked from commit e6354059de6a1231bf340753657bbb4ef16c17a0)
Change-Id: I30a0281a20c7a73b7f4b3641770cdbc45e0f0caf
Reviewed-on: http://git-master/r/30144
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/host/ehci-tegra.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 1285265a0ad7..63d0fe3ceedd 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -127,6 +127,8 @@ static int tegra_ehci_hub_control( temp &= ~PORT_WKCONN_E; temp |= PORT_WKDISC_E | PORT_WKOC_E; ehci_writel(ehci, temp | PORT_SUSPEND, status_reg); + /* Need a 4ms delay before the controller goes to suspend */ + mdelay(4); /* * If a transaction is in progress, there may be a delay in @@ -412,6 +414,8 @@ static int tegra_usb_resume(struct usb_hcd *hcd) if ((val & PORT_POWER) && (val & PORT_PE)) { val |= PORT_SUSPEND; writel(val, &hw->port_status[0]); + /* Need a 4ms delay before the controller goes to suspend */ + mdelay(4); /* Wait until port suspend completes */ if (handshake(ehci, &hw->port_status[0], PORT_SUSPEND, |