Updated to 2.6.32.27
/drivers/usb/core/hub.c
blob:12254e1f4659454bf6a0f3709cfa4da2ad91a833 -> blob:ed3aa7a91afe3f6ac30a14404af7dea9a2ba595c
--- drivers/usb/core/hub.c
+++ drivers/usb/core/hub.c
@@ -22,7 +22,6 @@
#include <linux/kthread.h>
#include <linux/mutex.h>
#include <linux/freezer.h>
-#include <linux/usb/quirks.h>
#include <asm/uaccess.h>
#include <asm/byteorder.h>
@@ -1769,6 +1768,7 @@ int usb_new_device(struct usb_device *ud
if (udev->parent)
usb_autoresume_device(udev->parent);
+ usb_detect_quirks(udev);
err = usb_enumerate_device(udev); /* Read descriptors */
if (err < 0)
goto fail;
@@ -2821,16 +2821,13 @@ hub_port_init (struct usb_hub *hub, stru
else
i = udev->descriptor.bMaxPacketSize0;
if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) {
- if (udev->speed == USB_SPEED_LOW ||
+ if (udev->speed != USB_SPEED_FULL ||
!(i == 8 || i == 16 || i == 32 || i == 64)) {
- dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
+ dev_err(&udev->dev, "ep0 maxpacket = %d\n", i);
retval = -EMSGSIZE;
goto fail;
}
- if (udev->speed == USB_SPEED_FULL)
- dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
- else
- dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
+ dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
usb_ep0_reinit(udev);
}
@@ -3066,10 +3063,6 @@ static void hub_port_connect_change(stru
if (status < 0)
goto loop;
- usb_detect_quirks(udev);
- if (udev->quirks & USB_QUIRK_DELAY_INIT)
- msleep(1000);
-
/* consecutive bus-powered hubs aren't reliable; they can
* violate the voltage drop budget. if the new child has
* a "powered" LED, users should notice we didn't enable it