summaryrefslogtreecommitdiff
path: root/drivers/usb/host/ehci-tegra.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-tegra.c')
-rw-r--r--drivers/usb/host/ehci-tegra.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index a0759fea53ce..433a2fd82550 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -256,6 +256,10 @@ static int tegra_ehci_hub_control(
clear_bit((wIndex & 0xff) - 1, &ehci->suspended_ports);
ehci->reset_done[wIndex-1] = 0;
tegra_usb_phy_postresume(tegra->phy, false);
+#ifndef CONFIG_ARCH_TEGRA_2x_SOC
+ ehci->command |= CMD_RUN;
+ ehci_writel(ehci, ehci->command, &ehci->regs->command);
+#endif
}
} else if (typeReq == SetPortFeature && wValue == USB_PORT_FEAT_SUSPEND) {
temp = ehci_readl(ehci, status_reg);
@@ -312,7 +316,7 @@ static int tegra_ehci_hub_control(
/* Disable disconnect detection during port resume */
tegra_usb_phy_preresume(tegra->phy, false);
-
+#ifdef CONFIG_ARCH_TEGRA_2x_SOC
ehci_dbg(ehci, "%s:USBSTS = 0x%x", __func__,
ehci_readl(ehci, &ehci->regs->status));
usbsts_reg = ehci_readl(ehci, &ehci->regs->status);
@@ -333,6 +337,7 @@ static int tegra_ehci_hub_control(
pr_err("%s: timeout set STS_SRI\n", __func__);
udelay(20);
+#endif
temp &= ~(PORT_RWC_BITS | PORT_WAKE_BITS);
/* start resume signaling */
ehci_writel(ehci, temp | PORT_RESUME, status_reg);
@@ -472,6 +477,10 @@ static int tegra_usb_suspend(struct usb_hcd *hcd, bool is_dpd)
else
tegra->port_speed = (readl(&hw->port_status[0]) >> 26) & 0x3;
ehci_halt(tegra->ehci);
+#ifndef CONFIG_ARCH_TEGRA_2x_SOC
+ tegra->ehci->command = ehci_readl(tegra->ehci,
+ &tegra->ehci->regs->command);
+#endif
spin_unlock_irqrestore(&tegra->ehci->lock, flags);