diff options
author | Ajay Gupta <ajayg@nvidia.com> | 2013-02-12 11:38:17 -0800 |
---|---|---|
committer | Mrutyunjay Sawant <msawant@nvidia.com> | 2013-02-15 08:58:00 -0800 |
commit | 401aef9fb2dd3cfb1bd6c9787498caaac7b7580e (patch) | |
tree | 613383766b3c7f1cad1d863479a805122fa95f2e /drivers/usb | |
parent | c7aba9f7ec5723ccbeca09aebbdf0118738e90b5 (diff) |
usb: xhci: tegra: clear both ss and hs wake interrupt
This fixes soft lockup for CPU#0 issue seen with ELPG cycle run with
SS hub connected with SS, HS, FS and LS devices.
We need to clear both SS and HS wake interrupt in ELPG exit path.
Bug 1233377
Change-Id: I34881269a93414991ff89c31e63c6f7f3153009a
Signed-off-by: Bharath Yadav <byadav@nvidia.com>
Signed-off-by: Ajay Gupta <ajayg@nvidia.com>
Reviewed-on: http://git-master/r/200517
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/host/xhci-tegra.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c index a4441034e1d6..e1259fe29d9b 100644 --- a/drivers/usb/host/xhci-tegra.c +++ b/drivers/usb/host/xhci-tegra.c @@ -2368,6 +2368,12 @@ static irqreturn_t tegra_xhci_padctl_irq(int irq, void *ptrdev) writel(elpg_program0 | USB2_HSIC_PORT1_WAKEUP_EVENT, tegra->padctl_base + ELPG_PROGRAM_0); } + + if (tegra->ss_wake_event || tegra->hs_wake_event) { + tegra_xhci_ss_wake_on_interrupts(tegra, false); + tegra_xhci_hs_wake_on_interrupts(tegra, false); + } + if (tegra->ss_wake_event) { if (tegra->ss_pwr_gated && !tegra->host_pwr_gated) { xhci_dbg(xhci, "[%s] schedule ss_elpg_exit_work\n", |