From edd66078f5a0d7e60adc03ed6d6fc92d5a764352 Mon Sep 17 00:00:00 2001 From: Jay Cheng Date: Thu, 6 Jan 2011 00:16:18 -0500 Subject: [PATCH] usb: ehci: tegra: remove reschedule rh_timer Reschedule rh_timer may cause usb device resume fail, as rh_timer may be timeout and send USB_REQ_GET_STATUS SETUP control transfer by the time when the device is handling clear suspend feature, which in turn the device may drop clear suspend feature request. Actually on port resume case, the host driver don't need to reschedule rh_timer to check port status. The host driver will check port status right after suspend feature is cleared. Change-Id: I6205e97af49ed4349b6215b851f6b5f1394258d8 Signed-off-by: Jay Cheng --- drivers/usb/host/ehci-tegra.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 262bbb01228b..0e9b6458da84 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c @@ -151,11 +151,7 @@ static int tegra_ehci_hub_control( tegra_usb_phy_preresume(tegra->phy); - /* reschedule root hub polling during resume signaling */ ehci->reset_done[wIndex-1] = jiffies + msecs_to_jiffies(25); - /* check the port again */ - mod_timer(&ehci_to_hcd(ehci)->rh_timer, - ehci->reset_done[wIndex-1]); temp &= ~(PORT_RWC_BITS | PORT_WAKE_BITS); /* start resume signalling */ @@ -173,6 +169,8 @@ static int tegra_ehci_hub_control( if (handshake(ehci, status_reg, PORT_SUSPEND, 0, 2000)) pr_err("%s: timeout waiting for PORT_SUSPEND\n", __func__); + ehci->reset_done[wIndex-1] = 0; + tegra->port_resuming = 1; goto done; } -- 2.34.1