|
@@ -4496,7 +4496,13 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
|
|
r = -EPROTO;
|
|
r = -EPROTO;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- if (r == 0)
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Some devices time out if they are powered on
|
|
|
|
+ * when already connected. They need a second
|
|
|
|
+ * reset. But only on the first attempt,
|
|
|
|
+ * lest we get into a time out/reset loop
|
|
|
|
+ */
|
|
|
|
+ if (r == 0 || (r == -ETIMEDOUT && j == 0))
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
udev->descriptor.bMaxPacketSize0 =
|
|
udev->descriptor.bMaxPacketSize0 =
|