diff options
Diffstat (limited to 'drivers/usb/host/ehci-tegra.c')
-rw-r--r-- | drivers/usb/host/ehci-tegra.c | 11 |
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); |