--- 12254e1f4659454bf6a0f3709cfa4da2ad91a833 +++ ed3aa7a91afe3f6ac30a14404af7dea9a2ba595c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -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