diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/hub.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 7f82c48a0bae..27115b45edc5 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -2861,13 +2861,16 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, | |||
2861 | else | 2861 | else |
2862 | i = udev->descriptor.bMaxPacketSize0; | 2862 | i = udev->descriptor.bMaxPacketSize0; |
2863 | if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) { | 2863 | if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) { |
2864 | if (udev->speed != USB_SPEED_FULL || | 2864 | if (udev->speed == USB_SPEED_LOW || |
2865 | !(i == 8 || i == 16 || i == 32 || i == 64)) { | 2865 | !(i == 8 || i == 16 || i == 32 || i == 64)) { |
2866 | dev_err(&udev->dev, "ep0 maxpacket = %d\n", i); | 2866 | dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i); |
2867 | retval = -EMSGSIZE; | 2867 | retval = -EMSGSIZE; |
2868 | goto fail; | 2868 | goto fail; |
2869 | } | 2869 | } |
2870 | dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i); | 2870 | if (udev->speed == USB_SPEED_FULL) |
2871 | dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i); | ||
2872 | else | ||
2873 | dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i); | ||
2871 | udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i); | 2874 | udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i); |
2872 | usb_ep0_reinit(udev); | 2875 | usb_ep0_reinit(udev); |
2873 | } | 2876 | } |