summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ehci-tegra.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index 21c58dfb9035..262bbb01228b 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -35,7 +35,6 @@
struct tegra_ehci_context {
bool valid;
u32 command;
- u32 intr_enable;
u32 frame_list;
u32 async_next;
u32 txfilltunning;
@@ -215,9 +214,6 @@ static void tegra_ehci_restart(struct usb_hcd *hcd)
/* flush posted writes */
ehci_readl(ehci, &ehci->regs->command);
up_write(&ehci_cf_port_reset_rwsem);
-
- /* Turn On Interrupts */
- ehci_writel(ehci, INTR_MASK, &ehci->regs->intr_enable);
}
static int tegra_usb_suspend(struct usb_hcd *hcd)
@@ -237,7 +233,6 @@ static int tegra_usb_suspend(struct usb_hcd *hcd)
context->valid = false;
} else {
context->command = readl(&hw->command);
- context->intr_enable = readl(&hw->intr_enable);
context->frame_list = readl(&hw->frame_list);
context->async_next = readl(&hw->async_next);
context->txfilltunning = readl(&hw->reserved[2]);
@@ -264,8 +259,12 @@ static int tegra_usb_resume(struct usb_hcd *hcd)
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
tegra_ehci_power_up(ehci_to_hcd(tegra->ehci));
- if (!context->valid)
+ if (!context->valid) {
+ /* Wait for the phy to detect new devices
+ * before we restart the controller */
+ msleep(10);
goto restart;
+ }
/* Restore register context */
writel(TEGRA_USB_USBMODE_HOST, &hw->reserved[19]);
@@ -333,10 +332,6 @@ static int tegra_usb_resume(struct usb_hcd *hcd)
}
}
- /* Restore interrupt register */
- writel(context->intr_enable, &hw->intr_enable);
- udelay(10);
-
return 0;
restart: