Skip to content

Commit

Permalink
[PATCH] USB: relax usbcore reset timings
Browse files Browse the repository at this point in the history
This appears to help some folk, please merge.
This patch relaxes reset timings.  There are some reports that it
helps make enumeration work better on some high speed devices.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
David Brownell authored and Greg Kroah-Hartman committed Sep 12, 2005
1 parent 5f98094 commit b789696
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/usb/core/hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ void usb_hub_tt_clear_buffer (struct usb_device *udev, int pipe)
static void hub_power_on(struct usb_hub *hub)
{
int port1;
unsigned pgood_delay = hub->descriptor->bPwrOn2PwrGood * 2;

/* if hub supports power switching, enable power on each port */
if ((hub->descriptor->wHubCharacteristics & HUB_CHAR_LPSM) < 2) {
Expand All @@ -444,8 +445,8 @@ static void hub_power_on(struct usb_hub *hub)
USB_PORT_FEAT_POWER);
}

/* Wait for power to be enabled */
msleep(hub->descriptor->bPwrOn2PwrGood * 2);
/* Wait at least 100 msec for power to become stable */
msleep(max(pgood_delay, (unsigned) 100));
}

static void hub_quiesce(struct usb_hub *hub)
Expand Down Expand Up @@ -1469,8 +1470,8 @@ static int hub_port_reset(struct usb_hub *hub, int port1,
/* return on disconnect or reset */
switch (status) {
case 0:
/* TRSTRCY = 10 ms */
msleep(10);
/* TRSTRCY = 10 ms; plus some extra */
msleep(10 + 40);
/* FALL THROUGH */
case -ENOTCONN:
case -ENODEV:
Expand Down

0 comments on commit b789696

Please sign in to comment.